aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ydb/library/yql/minikql/comp_nodes/mkql_block_agg.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_block_agg.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_block_agg.cpp
index ae48c2a331..a9768dba59 100644
--- a/ydb/library/yql/minikql/comp_nodes/mkql_block_agg.cpp
+++ b/ydb/library/yql/minikql/comp_nodes/mkql_block_agg.cpp
@@ -876,7 +876,12 @@ public:
// encode key
out[insertBatchLen].Rewind();
for (ui32 i = 0; i < keysDatum.size(); ++i) {
- s.Readers_[i]->SaveItem(*keysDatum[i].array(), row, out[insertBatchLen]);
+ if (keysDatum[i].is_scalar()) {
+ // TODO: more efficient code when grouping by scalar
+ s.Readers_[i]->SaveScalarItem(*keysDatum[i].scalar(), out[insertBatchLen]);
+ } else {
+ s.Readers_[i]->SaveItem(*keysDatum[i].array(), row, out[insertBatchLen]);
+ }
}
insertBatchRows[insertBatchLen] = row;
@@ -1555,7 +1560,6 @@ void PrepareKeys(const std::vector<TKeyParams>& keys, TMaybe<ui32>& totalKeysSiz
NYql::NUdf::TBlockItemSerializeProps props;
for (auto& param : keys) {
auto type = AS_TYPE(TBlockType, param.Type);
- MKQL_ENSURE(type->GetShape() != TBlockType::EShape::Scalar, "Expecting block as key");
UpdateBlockItemSerializeProps(TTypeInfoHelper(), type->GetItemType(), props);
}