yql_data_provider_impl.h 5.5 KB

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