yql_configuration_transformer.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #pragma once
  2. #include "yql_dispatch.h"
  3. #include <yql/essentials/core/yql_type_annotation.h>
  4. #include <util/generic/ptr.h>
  5. #include <util/generic/string.h>
  6. #include <util/generic/hash_set.h>
  7. #include <util/generic/strbuf.h>
  8. namespace NYql {
  9. namespace NCommon {
  10. class TProviderConfigurationTransformer : public TSyncTransformerBase {
  11. public:
  12. TProviderConfigurationTransformer(TSettingDispatcher::TPtr dispatcher,const TTypeAnnotationContext& types,
  13. const TString& provider, const THashSet<TStringBuf>& configureCallables = {});
  14. TStatus DoTransform(TExprNode::TPtr input, TExprNode::TPtr& output, TExprContext& ctx) final;
  15. void Rewind() final {
  16. }
  17. protected:
  18. virtual bool HandleAttr(TPositionHandle pos, const TString& cluster, const TString& name,
  19. const TMaybe<TString>& value, TExprContext& ctx);
  20. virtual bool HandleAuth(TPositionHandle pos, const TString& cluster, const TString& alias, TExprContext& ctx);
  21. protected:
  22. TSettingDispatcher::TPtr Dispatcher;
  23. const TTypeAnnotationContext& Types;
  24. TString Provider;
  25. THashSet<TStringBuf> ConfigureCallables;
  26. };
  27. THolder<IGraphTransformer> CreateProviderConfigurationTransformer(
  28. TSettingDispatcher::TPtr dispatcher,
  29. const TTypeAnnotationContext& types,
  30. const TString& provider
  31. );
  32. } // namespace NCommon
  33. } // namespace NYql