aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/source.cpp
diff options
context:
space:
mode:
authorvvvv <vvvv@yandex-team.com>2025-04-18 19:56:51 +0300
committervvvv <vvvv@yandex-team.com>2025-04-18 20:09:18 +0300
commitb149e9e78eb1a8502618850e1372d60161c1d7c5 (patch)
tree8531be9024db20e5ba59aa810b347ffa41c49b80 /yql/essentials/sql/v1/source.cpp
parentb8720ed2617f37508e6d6a8881c4105775bc910d (diff)
downloadydb-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.cpp13
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) {