yql_data_provider_impl.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #pragma once
  2. #include <yql/essentials/core/yql_data_provider.h>
  3. #include <yql/essentials/core/yql_graph_transformer.h>
  4. #include <util/generic/ptr.h>
  5. namespace NYql {
  6. class TPlanFormatterBase : public IPlanFormatter {
  7. public:
  8. TPlanFormatterBase() = default;
  9. ~TPlanFormatterBase() = default;
  10. void WriteDetails(const TExprNode& node, NYson::TYsonWriter& writer) override;
  11. bool GetDependencies(const TExprNode& node, TExprNode::TListType& children, bool compact) override;
  12. void GetResultDependencies(const TExprNode::TPtr& node, TExprNode::TListType& children, bool compact) override;
  13. ui32 GetInputs(const TExprNode& node, TVector<TPinInfo>& inputs, bool withLimits) override;
  14. ui32 GetOutputs(const TExprNode& node, TVector<TPinInfo>& outputs, bool withLimits) override;
  15. TString GetProviderPath(const TExprNode& node) override;
  16. void WritePlanDetails(const TExprNode& node, NYson::TYsonWriter& writer, bool withLimits) override;
  17. void WritePullDetails(const TExprNode& node, NYson::TYsonWriter& writer) override;
  18. void WritePinDetails(const TExprNode& node, NYson::TYsonWriter& writer) override;
  19. TString GetOperationDisplayName(const TExprNode& node) override;
  20. bool WriteSchemaHeader(NYson::TYsonWriter& writer) override;
  21. void WriteTypeDetails(NYson::TYsonWriter& writer, const TTypeAnnotationNode& type) override;
  22. };
  23. class TTrackableNodeProcessorBase : public ITrackableNodeProcessor {
  24. public:
  25. TTrackableNodeProcessorBase() = default;
  26. void GetUsedNodes(const TExprNode& node, TVector<TString>& usedNodeIds) override;
  27. void GetCreatedNodes(const TExprNode& node, TVector<TExprNodeAndId>& createdNodes, TExprContext& ctx) override;
  28. IGraphTransformer& GetCleanupTransformer() override;
  29. protected:
  30. TNullTransformer NullTransformer_;
  31. };
  32. class TDataProviderBase : public IDataProvider, public TPlanFormatterBase {
  33. public:
  34. TDataProviderBase() = default;
  35. ~TDataProviderBase() = default;
  36. bool Initialize(TExprContext& ctx) override;
  37. IGraphTransformer& GetConfigurationTransformer() override;
  38. TExprNode::TPtr GetClusterInfo(const TString& cluster, TExprContext& ctx) override;
  39. void AddCluster(const TString& name, const THashMap<TString, TString>& properties) override;
  40. const THashMap<TString, TString>* GetClusterTokens() override;
  41. IGraphTransformer& GetIODiscoveryTransformer() override;
  42. IGraphTransformer& GetEpochsTransformer() override;
  43. IGraphTransformer& GetIntentDeterminationTransformer() override;
  44. bool ValidateParameters(TExprNode& node, TExprContext& ctx, TMaybe<TString>& cluster) override;
  45. bool CanParse(const TExprNode& node) override;
  46. void FillModifyCallables(THashSet<TStringBuf>& callables) override;
  47. IGraphTransformer& GetTypeAnnotationTransformer(bool instantOnly) override;
  48. IGraphTransformer& GetConstraintTransformer(bool instantOnly, bool subGraph) override;
  49. TExprNode::TPtr RewriteIO(const TExprNode::TPtr& node, TExprContext& ctx) override;
  50. void PostRewriteIO() override;
  51. void Reset() override;
  52. IGraphTransformer& GetRecaptureOptProposalTransformer() override;
  53. IGraphTransformer& GetStatisticsProposalTransformer() override;
  54. IGraphTransformer& GetLogicalOptProposalTransformer() override;
  55. IGraphTransformer& GetPhysicalOptProposalTransformer() override;
  56. IGraphTransformer& GetPhysicalFinalizingTransformer() override;
  57. IGraphTransformer& GetLoadTableMetadataTransformer() override;
  58. bool IsPersistent(const TExprNode& node) override;
  59. bool IsRead(const TExprNode& node) override;
  60. bool IsWrite(const TExprNode& node) override;
  61. bool CanBuildResult(const TExprNode& node, TSyncMap& syncList) override;
  62. bool CanPullResult(const TExprNode& node, TSyncMap& syncList, bool& canRef) override;
  63. bool GetExecWorld(const TExprNode::TPtr& node, TExprNode::TPtr& root) override;
  64. bool CanEvaluate(const TExprNode& node) override;
  65. void EnterEvaluation(ui64 id) override;
  66. void LeaveEvaluation(ui64 id) override;
  67. TExprNode::TPtr CleanupWorld(const TExprNode::TPtr& node, TExprContext& ctx) override;
  68. TExprNode::TPtr OptimizePull(const TExprNode::TPtr& source, const TFillSettings& fillSettings, TExprContext& ctx,
  69. IOptimizationContext& optCtx) override;
  70. bool CanExecute(const TExprNode& node) override;
  71. bool ValidateExecution(const TExprNode& node, TExprContext& ctx) override;
  72. void GetRequiredChildren(const TExprNode& node, TExprNode::TListType& children) override;
  73. IGraphTransformer& GetCallableExecutionTransformer() override;
  74. IGraphTransformer& GetFinalizingTransformer() override;
  75. bool CollectDiagnostics(NYson::TYsonWriter& writer) override;
  76. bool GetTasksInfo(NYson::TYsonWriter& writer) override;
  77. bool CollectStatistics(NYson::TYsonWriter& writer, bool totalOnly) override;
  78. bool CollectDiscoveredData(NYson::TYsonWriter& writer) override;
  79. IPlanFormatter& GetPlanFormatter() override;
  80. ITrackableNodeProcessor& GetTrackableNodeProcessor() override;
  81. IGraphTransformer& GetPlanInfoTransformer() override;
  82. IDqIntegration* GetDqIntegration() override;
  83. IDqOptimization* GetDqOptimization() override;
  84. protected:
  85. THolder<IGraphTransformer> DefConstraintTransformer_;
  86. TNullTransformer NullTransformer_;
  87. TTrackableNodeProcessorBase NullTrackableNodeProcessor_;
  88. };
  89. TExprNode::TPtr DefaultCleanupWorld(const TExprNode::TPtr& node, TExprContext& ctx);
  90. } // namespace NYql