diff options
author | vvvv <[email protected]> | 2023-03-29 21:26:42 +0300 |
---|---|---|
committer | vvvv <[email protected]> | 2023-03-29 21:26:42 +0300 |
commit | 8465581d64fae1a06be58d74292de499105c6c40 (patch) | |
tree | a7097143941975aa0c8f9fede2417cea318fb5e9 | |
parent | 1f4a5bf754d1cafdfd88393dd67ebea3c319e5c6 (diff) |
Supported of AVG (Bool) for blocks
-rw-r--r-- | ydb/library/yql/core/yql_expr_type_annotation.cpp | 4 | ||||
-rw-r--r-- | ydb/library/yql/minikql/comp_nodes/mkql_block_agg_sum.cpp | 1 |
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); |