aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <vvvv@ydb.tech>2023-03-30 20:54:26 +0300
committervvvv <vvvv@ydb.tech>2023-03-30 20:54:26 +0300
commit8be9f8ba959c6ee27bcbc25686af05c25b366329 (patch)
treea8f2767dcc0e98f1d13d053c6492c76d207690e3
parent3f2cb85d2a2714d0168f3d775d99e28c07c84f9c (diff)
downloadydb-8be9f8ba959c6ee27bcbc25686af05c25b366329.tar.gz
Enable EmitAggApply by default
Один из тестов локально канонизирован vvvv@mr-nvme-testing-08:~/repo/arcadia/yql/tests/sql$ ya make -tA -F '*aggregate-library_error_in_aggregation_fail*' sql2yql yt_native_file dq_file Number of suites skipped by name: 21, by filter *aggregate-library_error_in_aggregation_fail* Total 3 suites: 3 - GOOD Total 11 tests: 6 - GOOD 5 - SKIPPED Ok rtmr тесты локально проходят
-rw-r--r--ydb/library/yql/core/type_ann/type_ann_list.cpp5
-rw-r--r--ydb/library/yql/core/yql_aggregate_expander.cpp11
2 files changed, 12 insertions, 4 deletions
diff --git a/ydb/library/yql/core/type_ann/type_ann_list.cpp b/ydb/library/yql/core/type_ann/type_ann_list.cpp
index 9c53f05b4a5..ea1ecb57493 100644
--- a/ydb/library/yql/core/type_ann/type_ann_list.cpp
+++ b/ydb/library/yql/core/type_ann/type_ann_list.cpp
@@ -5286,6 +5286,11 @@ namespace {
}
auto itemType = input->Child(1)->GetTypeAnn()->Cast<TTypeExprType>()->GetType();
+ if (itemType->GetKind() == ETypeAnnotationKind::Unit) {
+ output = ctx.Expr.NewCallable(input->Pos(), "Void", {});
+ return IGraphTransformer::TStatus::Repeat;
+ }
+
auto& lambda = input->ChildRef(2);
const auto status = ConvertToLambda(lambda, ctx.Expr, 1);
if (status.Level != IGraphTransformer::TStatus::Ok) {
diff --git a/ydb/library/yql/core/yql_aggregate_expander.cpp b/ydb/library/yql/core/yql_aggregate_expander.cpp
index e6c2ab22140..177755f7b15 100644
--- a/ydb/library/yql/core/yql_aggregate_expander.cpp
+++ b/ydb/library/yql/core/yql_aggregate_expander.cpp
@@ -1474,12 +1474,15 @@ TExprNode::TPtr TAggregateExpander::CountAggregateRewrite(const NNodes::TCoAggre
}
if (!isDistinct) {
- if (IsDepended(traits->Child(2)->Tail(), traits->Child(2)->Head().Head())) {
- return node.Ptr();
- }
-
if (traits->Head().Content() == "count") {
initVal = traits->Child(2)->TailPtr();
+ if (initVal->GetTypeAnn()->IsOptionalOrNull()) {
+ if (IsDepended(traits->Child(2)->Tail(), traits->Child(2)->Head().Head())) {
+ return node.Ptr();
+ }
+ } else {
+ initVal = nullptr;
+ }
}
}
} else {