diff options
author | vvvv <vvvv@yandex-team.com> | 2025-04-18 19:56:51 +0300 |
---|---|---|
committer | vvvv <vvvv@yandex-team.com> | 2025-04-18 20:09:18 +0300 |
commit | b149e9e78eb1a8502618850e1372d60161c1d7c5 (patch) | |
tree | 8531be9024db20e5ba59aa810b347ffa41c49b80 /yql/essentials/sql/v1/source.cpp | |
parent | b8720ed2617f37508e6d6a8881c4105775bc910d (diff) | |
download | ydb-b149e9e78eb1a8502618850e1372d60161c1d7c5.tar.gz |
YQL-19864 docs
commit_hash:cc82995d04c8bd3b7ca4d6fe69e91edc092e1b32
Diffstat (limited to 'yql/essentials/sql/v1/source.cpp')
-rw-r--r-- | yql/essentials/sql/v1/source.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/yql/essentials/sql/v1/source.cpp b/yql/essentials/sql/v1/source.cpp index 28afe17d9c3..1b639dbc5d9 100644 --- a/yql/essentials/sql/v1/source.cpp +++ b/yql/essentials/sql/v1/source.cpp @@ -488,12 +488,15 @@ TNodePtr ISource::BuildFlattenColumns(const TString& label) { namespace { -TNodePtr BuildLambdaBodyForExprAliases(TPosition pos, const TVector<TNodePtr>& exprs) { +TNodePtr BuildLambdaBodyForExprAliases(TPosition pos, const TVector<TNodePtr>& exprs, bool override) { auto structObj = BuildAtom(pos, "row", TNodeFlags::Default); for (const auto& exprNode: exprs) { const auto name = exprNode->GetLabel(); YQL_ENSURE(name); - structObj = structObj->Y("ForceRemoveMember", structObj, structObj->Q(name)); + if (override) { + structObj = structObj->Y("ForceRemoveMember", structObj, structObj->Q(name)); + } + if (dynamic_cast<const TSessionWindow*>(exprNode.Get())) { continue; } @@ -515,12 +518,12 @@ TNodePtr ISource::BuildPreaggregatedMap(TContext& ctx) { TNodePtr res; if (groupByExprs) { - auto body = BuildLambdaBodyForExprAliases(Pos, groupByExprs); + auto body = BuildLambdaBodyForExprAliases(Pos, groupByExprs, ctx.GroupByExprAfterWhere || !ctx.FailOnGroupByExprOverride); res = Y("FlatMap", "core", BuildLambda(Pos, Y("row"), body)); } if (distinctAggrExprs) { - auto body = BuildLambdaBodyForExprAliases(Pos, distinctAggrExprs); + auto body = BuildLambdaBodyForExprAliases(Pos, distinctAggrExprs, ctx.GroupByExprAfterWhere || !ctx.FailOnGroupByExprOverride); auto lambda = BuildLambda(Pos, Y("row"), body); res = res ? Y("FlatMap", res, lambda) : Y("FlatMap", "core", lambda); } @@ -530,7 +533,7 @@ TNodePtr ISource::BuildPreaggregatedMap(TContext& ctx) { TNodePtr ISource::BuildPreFlattenMap(TContext& ctx) { Y_UNUSED(ctx); YQL_ENSURE(IsFlattenByExprs()); - return BuildLambdaBodyForExprAliases(Pos, Expressions(EExprSeat::FlattenByExpr)); + return BuildLambdaBodyForExprAliases(Pos, Expressions(EExprSeat::FlattenByExpr), true); } TNodePtr ISource::BuildPrewindowMap(TContext& ctx) { |