#pragma once #include "config_formats.h" #if USE_ARROW #include #include #include "ArrowBufferedStreams.h" namespace arrow { class Schema; } namespace arrow::ipc { class RecordBatchWriter; } namespace DB { class ArrowBlockOutputFormat : public IOutputFormat { public: ArrowBlockOutputFormat(WriteBuffer & out_, const Block & header_, bool stream_, const FormatSettings & format_settings_); String getName() const override { return "ArrowBlockOutputFormat"; } void consume(Chunk) override; void finalize() override; String getContentType() const override { return "application/octet-stream"; } private: bool stream; const FormatSettings format_settings; std::shared_ptr arrow_ostream; std::shared_ptr writer; void prepareWriter(const std::shared_ptr & schema); }; } #endif