yql_clickhouse_provider.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include "yql_clickhouse_settings.h"
  3. #include <ydb/library/yql/core/yql_data_provider.h>
  4. #include <ydb/library/yql/providers/common/http_gateway/yql_http_gateway.h>
  5. #include <ydb/library/yql/providers/common/db_id_async_resolver/db_async_resolver.h>
  6. namespace NKikimr::NMiniKQL {
  7. class IFunctionRegistry;
  8. }
  9. namespace NYql {
  10. struct TClickHouseState : public TThrRefBase
  11. {
  12. using TPtr = TIntrusivePtr<TClickHouseState>;
  13. struct TTableMeta {
  14. const TStructExprType* ItemType = nullptr;
  15. TVector<TString> ColumnOrder;
  16. };
  17. THashMap<std::pair<TString, TString>, TTableMeta> Tables;
  18. std::unordered_map<std::string_view, std::string_view> Timezones;
  19. TTypeAnnotationContext* Types = nullptr;
  20. TClickHouseConfiguration::TPtr Configuration = MakeIntrusive<TClickHouseConfiguration>();
  21. const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry = nullptr;
  22. THashMap<std::pair<TString, NYq::DatabaseType>, NYq::TEvents::TDatabaseAuth> DatabaseIds;
  23. std::shared_ptr<NYq::IDatabaseAsyncResolver> DbResolver;
  24. };
  25. TDataProviderInitializer GetClickHouseDataProviderInitializer(
  26. IHTTPGateway::TPtr gateway,
  27. std::shared_ptr<NYq::IDatabaseAsyncResolver> dbResolver = nullptr
  28. );
  29. TIntrusivePtr<IDataProvider> CreateClickHouseDataSource(TClickHouseState::TPtr state, IHTTPGateway::TPtr gateway);
  30. TIntrusivePtr<IDataProvider> CreateClickHouseDataSink(TClickHouseState::TPtr state);
  31. } // namespace NYql