summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <[email protected]>2023-03-29 21:26:42 +0300
committervvvv <[email protected]>2023-03-29 21:26:42 +0300
commit8465581d64fae1a06be58d74292de499105c6c40 (patch)
treea7097143941975aa0c8f9fede2417cea318fb5e9
parent1f4a5bf754d1cafdfd88393dd67ebea3c319e5c6 (diff)
Supported of AVG (Bool) for blocks
-rw-r--r--ydb/library/yql/core/yql_expr_type_annotation.cpp4
-rw-r--r--ydb/library/yql/minikql/comp_nodes/mkql_block_agg_sum.cpp1
2 files changed, 3 insertions, 2 deletions
diff --git a/ydb/library/yql/core/yql_expr_type_annotation.cpp b/ydb/library/yql/core/yql_expr_type_annotation.cpp
index 6aa1d989397..1676a75f467 100644
--- a/ydb/library/yql/core/yql_expr_type_annotation.cpp
+++ b/ydb/library/yql/core/yql_expr_type_annotation.cpp
@@ -5527,7 +5527,7 @@ bool GetAvgResultType(const TPositionHandle& pos, const TTypeAnnotationNode& inp
if(IsDataOrOptionalOfData(&inputType, isOptional, lambdaType)) {
auto lambdaTypeSlot = lambdaType->GetSlot();
const TTypeAnnotationNode *avgResultType = nullptr;
- if (IsDataTypeNumeric(lambdaTypeSlot)) {
+ if (IsDataTypeNumeric(lambdaTypeSlot) || lambdaTypeSlot == EDataSlot::Bool) {
avgResultType = ctx.MakeType<TDataExprType>(EDataSlot::Double);
if (isOptional) {
avgResultType = ctx.MakeType<TOptionalExprType>(avgResultType);
@@ -5539,7 +5539,7 @@ bool GetAvgResultType(const TPositionHandle& pos, const TTypeAnnotationNode& inp
} else {
ctx.AddError(TIssue(ctx.GetPosition(pos),
TStringBuilder() << "Unsupported column type: " << lambdaTypeSlot));
- return IGraphTransformer::TStatus::Error;
+ return false;
}
retType = avgResultType;
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_block_agg_sum.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_block_agg_sum.cpp
index 064a8c5cc3f..d5eb55672bd 100644
--- a/ydb/library/yql/minikql/comp_nodes/mkql_block_agg_sum.cpp
+++ b/ydb/library/yql/minikql/comp_nodes/mkql_block_agg_sum.cpp
@@ -734,6 +734,7 @@ std::unique_ptr<typename TTag::TPreparedAggregator> PrepareAvgOverInput(TTupleTy
case NUdf::EDataSlot::Int8:
return std::make_unique<TPreparedAvgBlockAggregator<TTag, i8>>(filterColumn, argColumn, avgRetType);
case NUdf::EDataSlot::Uint8:
+ case NUdf::EDataSlot::Bool:
return std::make_unique<TPreparedAvgBlockAggregator<TTag, ui8>>(filterColumn, argColumn, avgRetType);
case NUdf::EDataSlot::Int16:
return std::make_unique<TPreparedAvgBlockAggregator<TTag, i16>>(filterColumn, argColumn, avgRetType);