void CSVRowOutputStream::writePrefix() { size_t columns = sample.columns(); if (with_names) { for (size_t i = 0; i < columns; ++i) { writeCSVString(sample.safeGetByPosition(i).name, ostr); writeChar(i == columns - 1 ? '\n' : ',', ostr); } } if (with_types) { for (size_t i = 0; i < columns; ++i) { writeCSVString(sample.safeGetByPosition(i).type->getName(), ostr); writeChar(i == columns - 1 ? '\n' : ',', ostr); } } }
void DataTypeEnum<Type>::serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { writeCSVString(getNameForValue(static_cast<const ColumnType &>(column).getData()[row_num]), ostr); }
void DataTypeFixedString::serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr) const { const char * pos = reinterpret_cast<const char *>(&static_cast<const ColumnFixedString &>(column).getChars()[n * row_num]); writeCSVString(pos, pos + n, ostr); }