aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwhcrc <whcrc@ydb.tech>2022-08-01 12:48:08 +0300
committerwhcrc <whcrc@ydb.tech>2022-08-01 12:48:08 +0300
commite8b26c6cb50d489df1967783be26b4a75d3fe0cc (patch)
tree744775ef942cfa864be741cd023e2ab7cce41acf
parent8a1625f555c78bae20a416825e7d0adffa7cc279 (diff)
downloadydb-e8b26c6cb50d489df1967783be26b4a75d3fe0cc.tar.gz
[DQ] drop compact in sqlIn
-rw-r--r--ydb/library/yql/dq/opt/dq_opt_log.cpp14
-rw-r--r--ydb/library/yql/dq/opt/dq_opt_log.h2
-rw-r--r--ydb/library/yql/providers/dq/opt/logical_optimize.cpp5
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>();