#pragma once #include #include #include namespace Poco { namespace MongoDB { class Connection; class Cursor; } } namespace DB { /// Converts MongoDB Cursor to a stream of Blocks class MongoDBBlockInputStream final : public IBlockInputStream { public: MongoDBBlockInputStream( std::shared_ptr & connection_, std::unique_ptr cursor_, const Block & sample_block, const UInt64 max_block_size_); ~MongoDBBlockInputStream() override; String getName() const override { return "MongoDB"; } Block getHeader() const override { return description.sample_block.cloneEmpty(); } private: Block readImpl() override; std::shared_ptr connection; std::unique_ptr cursor; const UInt64 max_block_size; ExternalResultDescription description; bool all_read = false; }; }