#pragma once #include #include #include namespace DB { /** Добавляет в блок недостающие столбцы со значениями по-умолчанию. * Эти столбцы - материалированные (не константы). */ class AddingDefaultBlockOutputStream : public IBlockOutputStream { public: AddingDefaultBlockOutputStream( BlockOutputStreamPtr output_, NamesAndTypesListPtr required_columns_) : output(output_), required_columns(required_columns_) { } void write(const Block & block) override { Block res = block; res.addDefaults(required_columns); output->write(res); } void flush() { output->flush(); } void writePrefix() override { output->writePrefix(); } void writeSuffix() override { output->writeSuffix(); } private: BlockOutputStreamPtr output; NamesAndTypesListPtr required_columns; }; }