#pragma once #if !defined(ARCADIA_BUILD) #include #endif #if USE_AWS_S3 #include #include #include #include "Client/Connection.h" #include #include #include namespace DB { class Context; class StorageS3Cluster : public shared_ptr_helper, public IStorage { friend struct shared_ptr_helper; public: std::string getName() const override { return "S3Cluster"; } Pipe read(const Names &, const StorageMetadataPtr &, SelectQueryInfo &, ContextPtr, QueryProcessingStage::Enum, size_t /*max_block_size*/, unsigned /*num_streams*/) override; QueryProcessingStage::Enum getQueryProcessingStage(ContextPtr, QueryProcessingStage::Enum, const StorageMetadataPtr &, SelectQueryInfo &) const override; NamesAndTypesList getVirtuals() const override; protected: StorageS3Cluster( const String & filename_, const String & access_key_id_, const String & secret_access_key_, const StorageID & table_id_, String cluster_name_, const String & format_name_, UInt64 max_connections_, const ColumnsDescription & columns_, const ConstraintsDescription & constraints_, ContextPtr context_, const String & compression_method_); private: StorageS3::ClientAuthentication client_auth; String filename; String cluster_name; String format_name; String compression_method; }; } #endif