diff options
author | udovichenko-r <udovichenko-r@yandex-team.ru> | 2022-06-01 14:34:16 +0300 |
---|---|---|
committer | udovichenko-r <udovichenko-r@yandex-team.ru> | 2022-06-01 14:34:16 +0300 |
commit | 9a059d543fb7bd8cfefa1d74be9436634539f9d3 (patch) | |
tree | 6d41ec8852dc19ab972fb7f37d14e62176628e74 | |
parent | c1a5a70d103a7f61424a2e38f329e7a0ef64ca21 (diff) | |
download | ydb-9a059d543fb7bd8cfefa1d74be9436634539f9d3.tar.gz |
[yql] Cleanup unused transformers
YQL-12393
ref:c37007ab79220ef2b4de00612e51e453801c66da
-rw-r--r-- | ydb/library/yql/providers/dq/opt/dqs_opt.cpp | 117 | ||||
-rw-r--r-- | ydb/library/yql/providers/dq/opt/dqs_opt.h | 3 | ||||
-rw-r--r-- | ydb/library/yql/providers/dq/opt/physical_optimize.cpp | 6 |
3 files changed, 4 insertions, 122 deletions
diff --git a/ydb/library/yql/providers/dq/opt/dqs_opt.cpp b/ydb/library/yql/providers/dq/opt/dqs_opt.cpp index edfcc4232c..850d24944f 100644 --- a/ydb/library/yql/providers/dq/opt/dqs_opt.cpp +++ b/ydb/library/yql/providers/dq/opt/dqs_opt.cpp @@ -46,72 +46,6 @@ namespace NYql::NDqs { using TStatus = IGraphTransformer::TStatus; - THolder<IGraphTransformer> CreateDqsWrapListsOptTransformer() { - return CreateFunctorTransformer( - [&](const TExprNode::TPtr& input, TExprNode::TPtr& output, TExprContext& ctx) -> TStatus { - YQL_ENSURE(input->GetTypeAnn() != nullptr); - YQL_ENSURE(input->GetTypeAnn()->GetKind() == ETypeAnnotationKind::List); - if (TExprBase(input).Maybe<TDqCnUnionAll>()) { - return TStatus(TStatus::ELevel::Ok, false); - } - - output = Build<TDqCnUnionAll>(ctx, input->Pos()) // clang-format off - .Output() - .Stage<TDqStage>() - .Inputs() - .Build() - .Program() - .Args({}) - .Body<TCoIterator>() - .List(input) - .Build() - .Build() - .Settings(TDqStageSettings().BuildNode(ctx, input->Pos())) - .Build() - .Index() - .Build("0") - .Build() - .Done().Ptr(); // clang-format on - - return TStatus(TStatus::ELevel::Repeat, true); - }); - } - - THolder<NYql::IGraphTransformer> CreateDqsBuildTransformer() { - return CreateFunctorTransformer([](const TExprNode::TPtr& input, TExprNode::TPtr& output, TExprContext& ctx) -> TStatus { - TExprBase node(input); - if (node.Maybe<TDqCnResult>()) { - return TStatus::Ok; - } - - if (!node.Maybe<TDqCnUnionAll>()) { - ctx.AddError(TIssue(input->Pos(ctx), "Last connection must be union all")); - output = input; - return TStatus::Error; - } - - output = Build<TDqCnResult>(ctx, input->Pos()) // clang-format off - .Output() - .Stage<TDqStage>() - .Inputs() - .Add(node.Cast<TDqCnUnionAll>()) - .Build() - .Program() - .Args({"row"}) - .Body("row") - .Build() - .Settings(TDqStageSettings().BuildNode(ctx, node.Pos())) - .Build() - .Index() - .Build("0") - .Build() - .ColumnHints() // TODO: set column hints - .Build() - .Done().Ptr(); // clang-format on - return TStatus(IGraphTransformer::TStatus::Repeat, true); - }); - } - THolder<IGraphTransformer> CreateDqsRewritePhyCallablesTransformer() { return CreateFunctorTransformer([](const TExprNode::TPtr& input, TExprNode::TPtr& output, TExprContext& ctx) { TOptimizeExprSettings optSettings{nullptr}; @@ -199,57 +133,6 @@ namespace NYql::NDqs { }); } - namespace NPeephole { - - class TDqsPeepholeTransformer: public TSyncTransformerBase { - public: - TDqsPeepholeTransformer(THolder<IGraphTransformer>&& typeAnnTransformer, - TTypeAnnotationContext& typesCtx) - : TypeAnnTransformer(std::move(typeAnnTransformer)) - , TypesCtx(typesCtx) - { - } - - TStatus DoTransform(TExprNode::TPtr inputExpr, TExprNode::TPtr& outputExpr, TExprContext& ctx) final { - if (Optimized) { - outputExpr = inputExpr; - return TStatus::Ok; - } - - auto transformer = CreateDqsRewritePhyCallablesTransformer(); - auto status = InstantTransform(*transformer, inputExpr, ctx); - if (status.Level != TStatus::Ok) { - ctx.AddError(TIssue(ctx.GetPosition(inputExpr->Pos()), TString("Peephole optimization failed for Dq stage"))); - return TStatus::Error; - } - - bool hasNonDeterministicFunctions = false; - status = PeepHoleOptimizeNode<true>(inputExpr, inputExpr, ctx, TypesCtx, TypeAnnTransformer.Get(), hasNonDeterministicFunctions); - if (status.Level != TStatus::Ok) { - ctx.AddError(TIssue(ctx.GetPosition(inputExpr->Pos()), TString("Peephole optimization failed for Dq stage"))); - return TStatus::Error; - } - - outputExpr = inputExpr; - Optimized = true; - return TStatus::Ok; - } - - void Rewind() final { - Optimized = false; - } - - private: - THolder<IGraphTransformer> TypeAnnTransformer; - TTypeAnnotationContext& TypesCtx; - bool Optimized = false; - }; - } - - THolder<IGraphTransformer> CreateDqsPeepholeTransformer(THolder<IGraphTransformer>&& typeAnnTransformer, TTypeAnnotationContext& typesCtx) { - return MakeHolder<NPeephole::TDqsPeepholeTransformer>(std::move(typeAnnTransformer), typesCtx); - } - THolder<IGraphTransformer> CreateDqsFinalizingOptTransformer() { return CreateFunctorTransformer( [](const TExprNode::TPtr& input, TExprNode::TPtr& output, TExprContext& ctx) { diff --git a/ydb/library/yql/providers/dq/opt/dqs_opt.h b/ydb/library/yql/providers/dq/opt/dqs_opt.h index 25da467f41..e2a7a31e35 100644 --- a/ydb/library/yql/providers/dq/opt/dqs_opt.h +++ b/ydb/library/yql/providers/dq/opt/dqs_opt.h @@ -13,11 +13,8 @@ namespace NYql { namespace NYql::NDqs { class TDatabaseManager; - THolder<IGraphTransformer> CreateDqsWrapListsOptTransformer(); THolder<IGraphTransformer> CreateDqsFinalizingOptTransformer(); - THolder<IGraphTransformer> CreateDqsBuildTransformer(); THolder<IGraphTransformer> CreateDqsRewritePhyCallablesTransformer(); THolder<IGraphTransformer> CreateDqsReplacePrecomputesTransformer(TTypeAnnotationContext* typesCtx, const NKikimr::NMiniKQL::IFunctionRegistry* funcRegistry); - THolder<IGraphTransformer> CreateDqsPeepholeTransformer(THolder<IGraphTransformer>&& typeAnnTransformer, TTypeAnnotationContext& typesCtx); } // namespace NYql::NDqs diff --git a/ydb/library/yql/providers/dq/opt/physical_optimize.cpp b/ydb/library/yql/providers/dq/opt/physical_optimize.cpp index 2464b27b87..2a14933488 100644 --- a/ydb/library/yql/providers/dq/opt/physical_optimize.cpp +++ b/ydb/library/yql/providers/dq/opt/physical_optimize.cpp @@ -21,6 +21,8 @@ public: : TOptimizeTransformerBase(typeCtx, NLog::EComponent::ProviderDq, {}) , Config(config) { + const bool enablePrecompute = Config->_EnablePrecompute.Get().GetOrElse(false); + #define HNDL(name) "DqsPhy-"#name, Hndl(&TDqsPhysicalOptProposalTransformer::name) AddHandler(0, &TDqSourceWrap::Match, HNDL(BuildStageWithSourceWrap)); AddHandler(0, &TDqReadWrap::Match, HNDL(BuildStageWithReadWrap)); @@ -42,7 +44,7 @@ public: AddHandler(0, &TCoAssumeSorted::Match, HNDL(BuildSortStage<false>)); AddHandler(0, &TCoOrderedLMap::Match, HNDL(PushOrderedLMapToStage<false>)); AddHandler(0, &TCoLMap::Match, HNDL(PushLMapToStage<false>)); - if (Config->_EnablePrecompute.Get().GetOrElse(false)) { + if (enablePrecompute) { AddHandler(0, &TCoHasItems::Match, HNDL(BuildHasItems)); AddHandler(0, &TCoToOptional::Match, HNDL(BuildScalarPrecompute<false>)); AddHandler(0, &TCoHead::Match, HNDL(BuildScalarPrecompute<false>)); @@ -62,7 +64,7 @@ public: AddHandler(1, &TCoAssumeSorted::Match, HNDL(BuildSortStage<true>)); AddHandler(1, &TCoOrderedLMap::Match, HNDL(PushOrderedLMapToStage<true>)); AddHandler(1, &TCoLMap::Match, HNDL(PushLMapToStage<true>)); - if (Config->_EnablePrecompute.Get().GetOrElse(false)) { + if (enablePrecompute) { AddHandler(0, &TCoToOptional::Match, HNDL(BuildScalarPrecompute<true>)); AddHandler(0, &TCoHead::Match, HNDL(BuildScalarPrecompute<true>)); } |