From 0d2b542b4c7a8c93db15b086c65bba878756af7e Mon Sep 17 00:00:00 2001 From: Alexey Arno Date: Fri, 12 Aug 2016 17:29:02 +0300 Subject: [PATCH] dbms: Got rid of code that should have been removed a long time ago. [#METR-19266] --- .../DB/DataTypes/DataTypeAggregateFunction.h | 17 ++-- dbms/include/DB/DataTypes/DataTypeArray.h | 37 ++++---- dbms/include/DB/DataTypes/DataTypeDate.h | 24 +++-- dbms/include/DB/DataTypes/DataTypeDateTime.h | 12 ++- dbms/include/DB/DataTypes/DataTypeEnum.h | 11 +-- .../DB/DataTypes/DataTypeFixedString.h | 9 +- dbms/include/DB/DataTypes/DataTypeString.h | 9 +- dbms/include/DB/DataTypes/DataTypeTuple.h | 31 +++--- dbms/include/DB/DataTypes/IDataTypeDummy.h | 94 +++++-------------- dbms/include/DB/DataTypes/IDataTypeNumber.h | 82 +++++++--------- .../DataTypes/DataTypeAggregateFunction.cpp | 11 +++ dbms/src/DataTypes/DataTypeArray.cpp | 33 +++---- dbms/src/DataTypes/DataTypeEnum.cpp | 1 - dbms/src/DataTypes/DataTypeFixedString.cpp | 4 - dbms/src/DataTypes/DataTypeString.cpp | 4 - dbms/src/DataTypes/DataTypeTuple.cpp | 1 - 16 files changed, 151 insertions(+), 229 deletions(-) diff --git a/dbms/include/DB/DataTypes/DataTypeAggregateFunction.h b/dbms/include/DB/DataTypes/DataTypeAggregateFunction.h index 47232f85711..e811a919cce 100644 --- a/dbms/include/DB/DataTypes/DataTypeAggregateFunction.h +++ b/dbms/include/DB/DataTypes/DataTypeAggregateFunction.h @@ -48,20 +48,17 @@ public: void deserializeBinary(IColumn & column, ReadBuffer & istr) const override; void serializeBinary(const IColumn & column, WriteBuffer & ostr, size_t offset = 0, size_t limit = 0) const override; void deserializeBinary(IColumn & column, ReadBuffer & istr, size_t limit, double avg_value_size_hint) const override; - - void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const; - void deserializeTextEscaped(IColumn & column, ReadBuffer & istr)const; - void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const; - void deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const; - + void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override; + void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const override; void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextJSON(IColumn & column, ReadBuffer & istr) const override; + void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const override; - void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - ColumnPtr createColumn() const override; ColumnPtr createConstColumn(size_t size, const Field & field) const override; @@ -69,8 +66,6 @@ public: { throw Exception("There is no default value for AggregateFunction data type", ErrorCodes::THERE_IS_NO_DEFAULT_VALUE); } - -private: }; diff --git a/dbms/include/DB/DataTypes/DataTypeArray.h b/dbms/include/DB/DataTypes/DataTypeArray.h index b97a4446c37..d6553213c3c 100644 --- a/dbms/include/DB/DataTypes/DataTypeArray.h +++ b/dbms/include/DB/DataTypes/DataTypeArray.h @@ -32,14 +32,28 @@ public: return std::make_shared(enriched_nested); } - void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - void deserializeText(IColumn & column, ReadBuffer & istr) const; - void serializeBinary(const Field & field, WriteBuffer & ostr) const override; void deserializeBinary(Field & field, ReadBuffer & istr) const override; void serializeBinary(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeBinary(IColumn & column, ReadBuffer & istr) const override; + void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void deserializeText(IColumn & column, ReadBuffer & istr) const; + + void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override; + + void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const override; + + void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void deserializeTextJSON(IColumn & column, ReadBuffer & istr) const override; + + void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + + void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const override; + /** Потоковая сериализация массивов устроена по-особенному: * - записываются/читаются элементы, уложенные подряд, без размеров массивов; * - размеры записываются/читаются в отдельный столбец, @@ -55,19 +69,6 @@ public: */ void deserializeBinary(IColumn & column, ReadBuffer & istr, size_t limit, double avg_value_size_hint) const override; - void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const; - void deserializeTextEscaped(IColumn & column, ReadBuffer & istr)const; - void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const; - void deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const; - - void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - - - void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - void deserializeTextJSON(IColumn & column, ReadBuffer & istr) const override; - void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const override; - /** Записать размеры. */ void serializeOffsets(const IColumn & column, WriteBuffer & ostr, size_t offset = 0, size_t limit = 0) const; @@ -85,10 +86,6 @@ public: const DataTypePtr & getNestedType() const { return nested; } const DataTypeTraits::EnrichedDataTypePtr & getEnrichedNestedType() const { return enriched_nested; } const DataTypePtr & getOffsetsType() const { return offsets; } - -private: - void serializeTextInternal(const IColumn & column, size_t row_num, WriteBuffer & ostr) const; - void deserializeTextQuotedInternal(IColumn & column, ReadBuffer & istr) const; }; } diff --git a/dbms/include/DB/DataTypes/DataTypeDate.h b/dbms/include/DB/DataTypes/DataTypeDate.h index e7c7e2ac30a..f9d21e0442f 100644 --- a/dbms/include/DB/DataTypes/DataTypeDate.h +++ b/dbms/include/DB/DataTypes/DataTypeDate.h @@ -20,28 +20,32 @@ public: std::string getName() const override { return "Date"; } DataTypePtr clone() const override { return std::make_shared(); } -private: void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { writeDateText(DayNum_t(static_cast(column).getData()[row_num]), ostr); } - void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override - { - writeDateText(DayNum_t(static_cast(column).getData()[row_num]), ostr); - } - - void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override + static void deserializeText(IColumn & column, ReadBuffer & istr) { DayNum_t x; readDateText(x, istr); static_cast(column).getData().push_back(x); } + void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override + { + serializeText(column, row_num, ostr); + } + + void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override + { + deserializeText(column, istr); + } + void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { writeChar('\'', ostr); - writeDateText(DayNum_t(static_cast(column).getData()[row_num]), ostr); + serializeText(column, row_num, ostr); writeChar('\'', ostr); } @@ -57,7 +61,7 @@ private: void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { writeChar('"', ostr); - writeDateText(DayNum_t(static_cast(column).getData()[row_num]), ostr); + serializeText(column, row_num, ostr); writeChar('"', ostr); } @@ -73,7 +77,7 @@ private: void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { writeChar('"', ostr); - writeDateText(DayNum_t(static_cast(column).getData()[row_num]), ostr); + serializeText(column, row_num, ostr); writeChar('"', ostr); } diff --git a/dbms/include/DB/DataTypes/DataTypeDateTime.h b/dbms/include/DB/DataTypes/DataTypeDateTime.h index b86cbe10f76..a944b67aa1a 100644 --- a/dbms/include/DB/DataTypes/DataTypeDateTime.h +++ b/dbms/include/DB/DataTypes/DataTypeDateTime.h @@ -20,12 +20,18 @@ public: std::string getName() const override { return "DateTime"; } DataTypePtr clone() const override { return std::make_shared(); } -private: void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { writeDateTimeText(static_cast(column).getData()[row_num], ostr); } + static void deserializeText(IColumn & column, ReadBuffer & istr) + { + time_t x; + readDateTimeText(x, istr); + static_cast(column).getData().push_back(x); + } + void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { serializeText(column, row_num, ostr); @@ -33,9 +39,7 @@ private: void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override { - time_t x; - readDateTimeText(x, istr); - static_cast(column).getData().push_back(x); + deserializeText(column, istr); } void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override diff --git a/dbms/include/DB/DataTypes/DataTypeEnum.h b/dbms/include/DB/DataTypes/DataTypeEnum.h index a7a38510ae4..2b9071c1533 100644 --- a/dbms/include/DB/DataTypes/DataTypeEnum.h +++ b/dbms/include/DB/DataTypes/DataTypeEnum.h @@ -76,22 +76,19 @@ public: void deserializeBinary(Field & field, ReadBuffer & istr) const override; void serializeBinary(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeBinary(IColumn & column, ReadBuffer & istr) const override; - - void serializeBinary(const IColumn & column, WriteBuffer & ostr, const size_t offset = 0, size_t limit = 0) const override; - void deserializeBinary(IColumn & column, ReadBuffer & istr, const size_t limit, const double avg_value_size_hint) const override; - + void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override; void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const override; - void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextJSON(IColumn & column, ReadBuffer & istr) const override; + void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const override; - void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void serializeBinary(const IColumn & column, WriteBuffer & ostr, const size_t offset = 0, size_t limit = 0) const override; + void deserializeBinary(IColumn & column, ReadBuffer & istr, const size_t limit, const double avg_value_size_hint) const override; size_t getSizeOfField() const override { return sizeof(FieldType); } diff --git a/dbms/include/DB/DataTypes/DataTypeFixedString.h b/dbms/include/DB/DataTypes/DataTypeFixedString.h index 4b1388ef10c..76c2c7918fb 100644 --- a/dbms/include/DB/DataTypes/DataTypeFixedString.h +++ b/dbms/include/DB/DataTypes/DataTypeFixedString.h @@ -44,19 +44,22 @@ public: void serializeBinary(const IColumn & column, WriteBuffer & ostr, size_t offset = 0, size_t limit = 0) const override; void deserializeBinary(IColumn & column, ReadBuffer & istr, size_t limit, double avg_value_size_hint) const override; + void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override; + void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const override; void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextJSON(IColumn & column, ReadBuffer & istr) const override; + + void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const override; - void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - ColumnPtr createColumn() const override; ColumnPtr createConstColumn(size_t size, const Field & field) const override; diff --git a/dbms/include/DB/DataTypes/DataTypeString.h b/dbms/include/DB/DataTypes/DataTypeString.h index 34bbb47bf12..8271fad42b3 100644 --- a/dbms/include/DB/DataTypes/DataTypeString.h +++ b/dbms/include/DB/DataTypes/DataTypeString.h @@ -31,19 +31,22 @@ public: void serializeBinary(const IColumn & column, WriteBuffer & ostr, size_t offset = 0, size_t limit = 0) const override; void deserializeBinary(IColumn & column, ReadBuffer & istr, size_t limit, double avg_value_size_hint) const override; + void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override; + void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const override; void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextJSON(IColumn & column, ReadBuffer & istr) const override; + + void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const override; - void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - ColumnPtr createColumn() const override; ColumnPtr createConstColumn(size_t size, const Field & field) const override; diff --git a/dbms/include/DB/DataTypes/DataTypeTuple.h b/dbms/include/DB/DataTypes/DataTypeTuple.h index 269675dde27..59cd8f1f1c2 100644 --- a/dbms/include/DB/DataTypes/DataTypeTuple.h +++ b/dbms/include/DB/DataTypes/DataTypeTuple.h @@ -25,6 +25,19 @@ public: void deserializeBinary(Field & field, ReadBuffer & istr) const override; void serializeBinary(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; void deserializeBinary(IColumn & column, ReadBuffer & istr) const override; + void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void deserializeText(IColumn & column, ReadBuffer & istr) const; + void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override; + void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const override; + void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void deserializeTextJSON(IColumn & column, ReadBuffer & istr) const override; + void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + + /// Кортежи в формате CSV будем сериализовать, как отдельные столбцы (то есть, теряя их вложенность в кортеж). + void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; + void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const override; void serializeBinary(const IColumn & column, WriteBuffer & ostr, size_t offset = 0, size_t limit = 0) const override; @@ -34,29 +47,11 @@ public: */ void deserializeBinary(IColumn & column, ReadBuffer & istr, size_t limit, double avg_value_size_hint) const override; - void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override; - void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - void deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const override; - - void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - void deserializeTextJSON(IColumn & column, ReadBuffer & istr) const override; - - /// Кортежи в формате CSV будем сериализовать, как отдельные столбцы (то есть, теряя их вложенность в кортеж). - void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const override; - - void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; - ColumnPtr createColumn() const override; ColumnPtr createConstColumn(size_t size, const Field & field) const override; Field getDefault() const override; const DataTypes & getElements() const { return elems; } - -private: - void deserializeText(IColumn & column, ReadBuffer & istr) const; }; } diff --git a/dbms/include/DB/DataTypes/IDataTypeDummy.h b/dbms/include/DB/DataTypes/IDataTypeDummy.h index 2f7c0b1db54..33daf8af761 100644 --- a/dbms/include/DB/DataTypes/IDataTypeDummy.h +++ b/dbms/include/DB/DataTypes/IDataTypeDummy.h @@ -13,82 +13,36 @@ namespace DB */ class IDataTypeDummy : public IDataType { +private: + void throwNoSerialization() const + { + throw Exception("Serialization is not implemented for data type " + getName(), ErrorCodes::NOT_IMPLEMENTED); + } + public: - void serializeBinary(const Field & field, WriteBuffer & ostr) const override - { - throwNoSerialization(); - } - - void deserializeBinary(Field & field, ReadBuffer & istr) const override - { - throwNoSerialization(); - } - - void serializeBinary(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override - { - throwNoSerialization(); - } - - void deserializeBinary(IColumn & column, ReadBuffer & istr) const override - { - throwNoSerialization(); - } + void serializeBinary(const Field & field, WriteBuffer & ostr) const override { throwNoSerialization(); } + void deserializeBinary(Field & field, ReadBuffer & istr) const override { throwNoSerialization(); } + void serializeBinary(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { throwNoSerialization(); } + void deserializeBinary(IColumn & column, ReadBuffer & istr) const override { throwNoSerialization(); } void serializeBinary(const IColumn & column, WriteBuffer & ostr, - size_t offset = 0, size_t limit = 0) const override - { - throwNoSerialization(); - } + size_t offset = 0, size_t limit = 0) const override { throwNoSerialization(); } - void deserializeBinary(IColumn & column, ReadBuffer & istr, size_t limit, double avg_value_size_hint) const override - { - throwNoSerialization(); - } + void deserializeBinary(IColumn & column, ReadBuffer & istr, size_t limit, double avg_value_size_hint) const override { throwNoSerialization(); } - void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override - { - throwNoSerialization(); - } + void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { throwNoSerialization(); } - void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override - { - throwNoSerialization(); - } + void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { throwNoSerialization(); } + void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override { throwNoSerialization(); } - void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override - { - throwNoSerialization(); - } + void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { throwNoSerialization(); } + void deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const override { throwNoSerialization(); } - void deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const override - { - throwNoSerialization(); - } + void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { throwNoSerialization(); } + void deserializeTextJSON(IColumn & column, ReadBuffer & istr) const override { throwNoSerialization(); } - void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override - { - throwNoSerialization(); - } - - void deserializeTextJSON(IColumn & column, ReadBuffer & istr) const override - { - throwNoSerialization(); - } - - void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override - { - throwNoSerialization(); - } - - void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const override - { - throwNoSerialization(); - } - - void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override - { - throwNoSerialization(); - } + void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { throwNoSerialization(); } + void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const override { throwNoSerialization(); } ColumnPtr createColumn() const override { @@ -104,12 +58,6 @@ public: { throw Exception("Method getDefault() is not implemented for data type " + getName(), ErrorCodes::NOT_IMPLEMENTED); } - -private: - void throwNoSerialization() const - { - throw Exception("Serialization is not implemented for data type " + getName(), ErrorCodes::NOT_IMPLEMENTED); - } }; } diff --git a/dbms/include/DB/DataTypes/IDataTypeNumber.h b/dbms/include/DB/DataTypes/IDataTypeNumber.h index b5b712223e6..c65fdf7acae 100644 --- a/dbms/include/DB/DataTypes/IDataTypeNumber.h +++ b/dbms/include/DB/DataTypes/IDataTypeNumber.h @@ -3,7 +3,6 @@ #include /// std::isfinite #include -#include #include #include @@ -30,40 +29,31 @@ public: bool isNumeric() const override { return true; } bool behavesAsNumber() const override { return true; } - size_t getSizeOfField() const override { return sizeof(FieldType); } - - Field getDefault() const override - { - return typename NearestFieldType::Type(); - } - -private: - template inline void deserializeText(IColumn & column, ReadBuffer & istr) const; - -protected: void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { writeText(static_cast(column).getData()[row_num], ostr); } + static inline void deserializeText(IColumn & column, ReadBuffer & istr); + void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { - writeText(static_cast(column).getData()[row_num], ostr); + serializeText(column, row_num, ostr); } void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override { - deserializeText(column, istr); + deserializeText(column, istr); } void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { - writeText(static_cast(column).getData()[row_num], ostr); + serializeText(column, row_num, ostr); } void deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const override { - deserializeText(column, istr); + deserializeText(column, istr); } inline void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; @@ -80,10 +70,10 @@ protected: FieldType x; /// null - if (!has_quote && !istr.eof() && *istr.position() == NullSymbol::JSON::prefix) + if (!has_quote && !istr.eof() && *istr.position() == 'n') { ++istr.position(); - assertString(NullSymbol::JSON::suffix, istr); + assertString("ull", istr); x = valueForJSONNull(); } @@ -100,7 +90,7 @@ protected: void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override { - writeText(static_cast(column).getData()[row_num], ostr); + serializeText(column, row_num, ostr); } void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const override @@ -109,6 +99,13 @@ protected: readCSV(x, istr); static_cast(column).getData().push_back(x); } + + size_t getSizeOfField() const override { return sizeof(FieldType); } + + Field getDefault() const override + { + return typename NearestFieldType::Type(); + } }; template <> @@ -119,8 +116,7 @@ public: bool isNumeric() const override { return true; } bool behavesAsNumber() const override { return true; } - size_t getSizeOfField() const override { return 0; } - Field getDefault() const override { return {}; } + void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override {} void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override {} void deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const override {} void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override {} @@ -129,74 +125,64 @@ public: void deserializeTextJSON(IColumn & column, ReadBuffer & istr) const override {} void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override {} void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const override {} - void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override {} + size_t getSizeOfField() const override { return 0; } + Field getDefault() const override { return {}; } }; -template -inline void IDataTypeNumber::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const +template inline void IDataTypeNumber::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { - writeText(static_cast(column).getData()[row_num], ostr); + serializeText(column, row_num, ostr); } -template <> -inline void IDataTypeNumber::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const +template <> inline void IDataTypeNumber::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { writeChar('"', ostr); - writeText(static_cast(column).getData()[row_num], ostr); + serializeText(column, row_num, ostr); writeChar('"', ostr); } -template <> -inline void IDataTypeNumber::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const +template <> inline void IDataTypeNumber::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { writeChar('"', ostr); - writeText(static_cast(column).getData()[row_num], ostr); + serializeText(column, row_num, ostr); writeChar('"', ostr); } -template <> -inline void IDataTypeNumber::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const +template <> inline void IDataTypeNumber::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { auto x = static_cast(column).getData()[row_num]; if (likely(std::isfinite(x))) writeText(x, ostr); else - writeCString(NullSymbol::JSON::name, ostr); + writeCString("null", ostr); } -template <> -inline void IDataTypeNumber::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const +template <> inline void IDataTypeNumber::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { auto x = static_cast(column).getData()[row_num]; if (likely(std::isfinite(x))) writeText(x, ostr); else - writeCString(NullSymbol::JSON::name, ostr); + writeCString("null", ostr); } -template -template -inline void IDataTypeNumber::deserializeText(IColumn & column, ReadBuffer & istr) const +template inline void IDataTypeNumber::deserializeText(IColumn & column, ReadBuffer & istr) { FieldType x; readIntTextUnsafe(x, istr); static_cast(column).getData().push_back(x); } -template <> -template -inline void IDataTypeNumber::deserializeText(IColumn & column, ReadBuffer & istr) const +template <> inline void IDataTypeNumber::deserializeText(IColumn & column, ReadBuffer & istr) { - FieldType x; + Float64 x; readText(x, istr); static_cast(column).getData().push_back(x); } -template <> -template -inline void IDataTypeNumber::deserializeText(IColumn & column, ReadBuffer & istr) const +template <> inline void IDataTypeNumber::deserializeText(IColumn & column, ReadBuffer & istr) { - FieldType x; + Float64 x; readText(x, istr); static_cast(column).getData().push_back(x); } diff --git a/dbms/src/DataTypes/DataTypeAggregateFunction.cpp b/dbms/src/DataTypes/DataTypeAggregateFunction.cpp index d5b11628b91..1d09e77389a 100644 --- a/dbms/src/DataTypes/DataTypeAggregateFunction.cpp +++ b/dbms/src/DataTypes/DataTypeAggregateFunction.cpp @@ -164,11 +164,13 @@ void DataTypeAggregateFunction::serializeText(const IColumn & column, size_t row writeString(serializeToString(function, column, row_num), ostr); } + void DataTypeAggregateFunction::serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { writeEscapedString(serializeToString(function, column, row_num), ostr); } + void DataTypeAggregateFunction::deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const { String s; @@ -176,11 +178,13 @@ void DataTypeAggregateFunction::deserializeTextEscaped(IColumn & column, ReadBuf deserializeFromString(function, column, s); } + void DataTypeAggregateFunction::serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { writeQuotedString(serializeToString(function, column, row_num), ostr); } + void DataTypeAggregateFunction::deserializeTextQuoted(IColumn & column, ReadBuffer & istr) const { String s; @@ -188,11 +192,13 @@ void DataTypeAggregateFunction::deserializeTextQuoted(IColumn & column, ReadBuff deserializeFromString(function, column, s); } + void DataTypeAggregateFunction::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { writeJSONString(serializeToString(function, column, row_num), ostr); } + void DataTypeAggregateFunction::deserializeTextJSON(IColumn & column, ReadBuffer & istr) const { String s; @@ -200,16 +206,19 @@ void DataTypeAggregateFunction::deserializeTextJSON(IColumn & column, ReadBuffer deserializeFromString(function, column, s); } + void DataTypeAggregateFunction::serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { writeXMLString(serializeToString(function, column, row_num), ostr); } + void DataTypeAggregateFunction::serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { writeCSV(serializeToString(function, column, row_num), ostr); } + void DataTypeAggregateFunction::deserializeTextCSV(IColumn & column, ReadBuffer & istr, const char delimiter) const { String s; @@ -217,6 +226,7 @@ void DataTypeAggregateFunction::deserializeTextCSV(IColumn & column, ReadBuffer deserializeFromString(function, column, s); } + ColumnPtr DataTypeAggregateFunction::createColumn() const { return std::make_shared(function); @@ -227,5 +237,6 @@ ColumnPtr DataTypeAggregateFunction::createConstColumn(size_t size, const Field throw Exception("Const column with aggregate function is not supported", ErrorCodes::NOT_IMPLEMENTED); } + } diff --git a/dbms/src/DataTypes/DataTypeArray.cpp b/dbms/src/DataTypes/DataTypeArray.cpp index 0870533331f..738719ab7b1 100644 --- a/dbms/src/DataTypes/DataTypeArray.cpp +++ b/dbms/src/DataTypes/DataTypeArray.cpp @@ -187,7 +187,8 @@ void DataTypeArray::deserializeOffsets(IColumn & column, ReadBuffer & istr, size offsets.resize(i); } -void DataTypeArray::serializeTextInternal(const IColumn & column, size_t row_num, WriteBuffer & ostr) const + +void DataTypeArray::serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { const ColumnArray & column_array = static_cast(column); const ColumnArray::Offsets_t & offsets = column_array.getOffsets(); @@ -207,16 +208,9 @@ void DataTypeArray::serializeTextInternal(const IColumn & column, size_t row_num writeChar(']', ostr); } -void DataTypeArray::serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr) const -{ - serializeTextInternal(column, row_num, ostr); -} - -namespace -{ template -void deserializeTextInternal(IColumn & column, ReadBuffer & istr, Reader && read_nested) +static void deserializeTextImpl(IColumn & column, ReadBuffer & istr, Reader && read_nested) { ColumnArray & column_array = static_cast(column); ColumnArray::Offsets_t & offsets = column_array.getOffsets(); @@ -255,29 +249,24 @@ void deserializeTextInternal(IColumn & column, ReadBuffer & istr, Reader && read } catch (...) { - nested_column.popBack(size); + if (size) + nested_column.popBack(size); throw; } offsets.push_back((offsets.empty() ? 0 : offsets.back()) + size); } -} - -void DataTypeArray::deserializeTextQuotedInternal(IColumn & column, ReadBuffer & istr) const -{ - deserializeTextInternal(column, istr, [&](IColumn & nested_column) { nested->deserializeTextQuoted(nested_column, istr); }); -} void DataTypeArray::deserializeText(IColumn & column, ReadBuffer & istr) const { - deserializeTextQuotedInternal(column, istr); + deserializeTextImpl(column, istr, [&](IColumn & nested_column) { nested->deserializeTextQuoted(nested_column, istr); }); } void DataTypeArray::serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { - serializeTextInternal(column, row_num, ostr); + serializeText(column, row_num, ostr); } @@ -289,7 +278,7 @@ void DataTypeArray::deserializeTextEscaped(IColumn & column, ReadBuffer & istr) void DataTypeArray::serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { - serializeTextInternal(column, row_num, ostr); + serializeText(column, row_num, ostr); } @@ -322,7 +311,7 @@ void DataTypeArray::serializeTextJSON(const IColumn & column, size_t row_num, Wr void DataTypeArray::deserializeTextJSON(IColumn & column, ReadBuffer & istr) const { - deserializeTextInternal(column, istr, [&](IColumn & nested_column) { nested->deserializeTextJSON(nested_column, istr); }); + deserializeTextImpl(column, istr, [&](IColumn & nested_column) { nested->deserializeTextJSON(nested_column, istr); }); } @@ -353,7 +342,7 @@ void DataTypeArray::serializeTextCSV(const IColumn & column, size_t row_num, Wri String s; { WriteBufferFromString wb(s); - serializeTextInternal(column, row_num, wb); + serializeText(column, row_num, wb); } writeCSV(s, ostr); } @@ -364,7 +353,7 @@ void DataTypeArray::deserializeTextCSV(IColumn & column, ReadBuffer & istr, cons String s; readCSV(s, istr, delimiter); ReadBufferFromString rb(s); - deserializeTextQuotedInternal(column, rb); + deserializeText(column, rb); } diff --git a/dbms/src/DataTypes/DataTypeEnum.cpp b/dbms/src/DataTypes/DataTypeEnum.cpp index 57da928119d..208e9a470fc 100644 --- a/dbms/src/DataTypes/DataTypeEnum.cpp +++ b/dbms/src/DataTypes/DataTypeEnum.cpp @@ -1,6 +1,5 @@ #include #include -#include namespace DB diff --git a/dbms/src/DataTypes/DataTypeFixedString.cpp b/dbms/src/DataTypes/DataTypeFixedString.cpp index b394cb108a1..1ec5e0379d9 100644 --- a/dbms/src/DataTypes/DataTypeFixedString.cpp +++ b/dbms/src/DataTypes/DataTypeFixedString.cpp @@ -6,7 +6,6 @@ #include #include -#include #include #include @@ -112,8 +111,6 @@ void DataTypeFixedString::serializeTextEscaped(const IColumn & column, size_t ro writeAnyEscapedString<'\''>(pos, pos + n, ostr); } -namespace -{ template static inline void read(const DataTypeFixedString & self, IColumn & column, Reader && reader) @@ -141,7 +138,6 @@ static inline void read(const DataTypeFixedString & self, IColumn & column, Read } } -} void DataTypeFixedString::deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const { diff --git a/dbms/src/DataTypes/DataTypeString.cpp b/dbms/src/DataTypes/DataTypeString.cpp index 8b3d5b75d6a..4f0bad798ea 100644 --- a/dbms/src/DataTypes/DataTypeString.cpp +++ b/dbms/src/DataTypes/DataTypeString.cpp @@ -5,7 +5,6 @@ #include #include -#include #include #include @@ -223,8 +222,6 @@ void DataTypeString::serializeTextEscaped(const IColumn & column, size_t row_num writeEscapedString(static_cast(column).getDataAt(row_num), ostr); } -namespace -{ template static inline void read(IColumn & column, ReadBuffer & istr, Reader && reader) @@ -250,7 +247,6 @@ static inline void read(IColumn & column, ReadBuffer & istr, Reader && reader) } } -} void DataTypeString::deserializeTextEscaped(IColumn & column, ReadBuffer & istr) const { diff --git a/dbms/src/DataTypes/DataTypeTuple.cpp b/dbms/src/DataTypes/DataTypeTuple.cpp index 0d4c88dea93..5f2a4ae64c0 100644 --- a/dbms/src/DataTypes/DataTypeTuple.cpp +++ b/dbms/src/DataTypes/DataTypeTuple.cpp @@ -3,7 +3,6 @@ #include #include #include -#include #include #include