#include #include #include #include #include #include namespace DB { template void SerializationEnum::serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const { writeString(this->getNameForValue(assert_cast(column).getData()[row_num]), ostr); } template void SerializationEnum::serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const { writeEscapedString(this->getNameForValue(assert_cast(column).getData()[row_num]), ostr); } template void SerializationEnum::deserializeTextEscaped(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const { if (settings.tsv.input_format_enum_as_number) assert_cast(column).getData().push_back(readValue(istr)); else { /// NOTE It would be nice to do without creating a temporary object - at least extract std::string out. std::string field_name; readEscapedString(field_name, istr); assert_cast(column).getData().push_back(this->getValue(StringRef(field_name), true)); } } template void SerializationEnum::serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const { writeQuotedString(this->getNameForValue(assert_cast(column).getData()[row_num]), ostr); } template void SerializationEnum::deserializeTextQuoted(IColumn & column, ReadBuffer & istr, const FormatSettings &) const { std::string field_name; readQuotedStringWithSQLStyle(field_name, istr); assert_cast(column).getData().push_back(this->getValue(StringRef(field_name))); } template void SerializationEnum::deserializeWholeText(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const { if (settings.tsv.input_format_enum_as_number) assert_cast(column).getData().push_back(readValue(istr)); else { std::string field_name; readString(field_name, istr); assert_cast(column).getData().push_back(this->getValue(StringRef(field_name), true)); } } template void SerializationEnum::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const { writeJSONString(this->getNameForValue(assert_cast(column).getData()[row_num]), ostr, settings); } template void SerializationEnum::serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const { writeXMLStringForTextElement(this->getNameForValue(assert_cast(column).getData()[row_num]), ostr); } template void SerializationEnum::deserializeTextJSON(IColumn & column, ReadBuffer & istr, const FormatSettings &) const { if (!istr.eof() && *istr.position() != '"') assert_cast(column).getData().push_back(readValue(istr)); else { std::string field_name; readJSONString(field_name, istr); assert_cast(column).getData().push_back(this->getValue(StringRef(field_name))); } } template void SerializationEnum::serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const { writeCSVString(this->getNameForValue(assert_cast(column).getData()[row_num]), ostr); } template void SerializationEnum::deserializeTextCSV(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const { if (settings.csv.input_format_enum_as_number) assert_cast(column).getData().push_back(readValue(istr)); else { std::string field_name; readCSVString(field_name, istr, settings.csv); assert_cast(column).getData().push_back(this->getValue(StringRef(field_name), true)); } } template class SerializationEnum; template class SerializationEnum; }