#pragma once #include #include #include #include #include namespace DB { /** * This class represents table engine for external executable files. * Executable storage that will start process for read. * ExecutablePool storage maintain pool of processes and take process from pool for read. */ class StorageExecutable final : public shared_ptr_helper, public IStorage { friend struct shared_ptr_helper; public: String getName() const override { if (settings.is_executable_pool) return "ExecutablePool"; else return "Executable"; } Pipe read( const Names & column_names, const StorageSnapshotPtr & /*storage_snapshot*/, SelectQueryInfo & query_info, ContextPtr context, QueryProcessingStage::Enum processed_stage, size_t max_block_size, unsigned threads) override; protected: StorageExecutable( const StorageID & table_id, const String & format, const ExecutableSettings & settings, const std::vector & input_queries, const ColumnsDescription & columns, const ConstraintsDescription & constraints); private: ExecutableSettings settings; std::vector input_queries; Poco::Logger * log; std::unique_ptr coordinator; }; }