diff options
author | whcrc <whcrc@ydb.tech> | 2022-08-01 12:48:08 +0300 |
---|---|---|
committer | whcrc <whcrc@ydb.tech> | 2022-08-01 12:48:08 +0300 |
commit | e8b26c6cb50d489df1967783be26b4a75d3fe0cc (patch) | |
tree | 744775ef942cfa864be741cd023e2ab7cce41acf | |
parent | 8a1625f555c78bae20a416825e7d0adffa7cc279 (diff) | |
download | ydb-e8b26c6cb50d489df1967783be26b4a75d3fe0cc.tar.gz |
[DQ] drop compact in sqlIn
-rw-r--r-- | ydb/library/yql/dq/opt/dq_opt_log.cpp | 14 | ||||
-rw-r--r-- | ydb/library/yql/dq/opt/dq_opt_log.h | 2 | ||||
-rw-r--r-- | ydb/library/yql/providers/dq/opt/logical_optimize.cpp | 5 |
3 files changed, 21 insertions, 0 deletions
diff --git a/ydb/library/yql/dq/opt/dq_opt_log.cpp b/ydb/library/yql/dq/opt/dq_opt_log.cpp index 05bee5130b9..e28cade2688 100644 --- a/ydb/library/yql/dq/opt/dq_opt_log.cpp +++ b/ydb/library/yql/dq/opt/dq_opt_log.cpp @@ -271,4 +271,18 @@ NNodes::TExprBase DqFlatMapOverExtend(NNodes::TExprBase node, TExprContext& ctx) return TExprBase(res); } +NNodes::TExprBase DqSqlInDropCompact(NNodes::TExprBase node, TExprContext& ctx) { + auto maybeSqlIn = node.Maybe<TCoSqlIn>(); + if (!maybeSqlIn || !maybeSqlIn.Collection().Maybe<TDqConnection>().IsValid() || !maybeSqlIn.Options().IsValid()) { + return node; + } + if (HasSetting(maybeSqlIn.Cast().Options().Ref(), "isCompact")) { + return TExprBase(ctx.ChangeChild( + maybeSqlIn.Cast().Ref(), + TCoSqlIn::idx_Options, + RemoveSetting(maybeSqlIn.Cast().Options().Ref(), "isCompact", ctx))); + } + return node; +} + } diff --git a/ydb/library/yql/dq/opt/dq_opt_log.h b/ydb/library/yql/dq/opt/dq_opt_log.h index 024ab5551e9..8284e8b4844 100644 --- a/ydb/library/yql/dq/opt/dq_opt_log.h +++ b/ydb/library/yql/dq/opt/dq_opt_log.h @@ -29,4 +29,6 @@ NNodes::TExprBase DqFlatMapOverExtend(NNodes::TExprBase node, TExprContext& ctx) NNodes::TMaybeNode<NNodes::TExprBase> DqUnorderedInStage(NNodes::TExprBase node, const std::function<bool(const TExprNode*)>& stopTraverse, TExprContext& ctx, TTypeAnnotationContext* typeCtx); +NNodes::TExprBase DqSqlInDropCompact(NNodes::TExprBase node, TExprContext& ctx); + } // namespace NYql::NDq diff --git a/ydb/library/yql/providers/dq/opt/logical_optimize.cpp b/ydb/library/yql/providers/dq/opt/logical_optimize.cpp index c6024d4ade7..c2f953e1715 100644 --- a/ydb/library/yql/providers/dq/opt/logical_optimize.cpp +++ b/ydb/library/yql/providers/dq/opt/logical_optimize.cpp @@ -55,6 +55,7 @@ public: AddHandler(0, &TCoFlatMapBase::Match, HNDL(FlatMapOverExtend)); AddHandler(0, &TDqQuery::Match, HNDL(MergeQueriesWithSinks)); AddHandler(0, &TDqStageBase::Match, HNDL(UnorderedInStage)); + AddHandler(0, &TCoSqlIn::Match, HNDL(SqlInDropCompact)); #undef HNDL } @@ -126,6 +127,10 @@ protected: return DqUnorderedInStage(node, TDqReadWrapBase::Match, ctx, Types); } + TMaybeNode<TExprBase> SqlInDropCompact(TExprBase node, TExprContext& ctx) const { + return DqSqlInDropCompact(node, ctx); + } + private: TMaybeNode<TExprBase> RewriteAsHoppingWindow(const TExprBase node, TExprContext& ctx, const TDqConnection& input) { const auto aggregate = node.Cast<TCoAggregate>(); |