Skip to content

Commit

Permalink
[fix](Nereids) fix Illegal aggregate node: group by and output is empty
Browse files Browse the repository at this point in the history
  • Loading branch information
924060929 authored May 28, 2024
1 parent d085030 commit 2de8432
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 3 deletions.
5 changes: 5 additions & 0 deletions be/src/runtime/descriptors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -381,11 +381,13 @@ RowDescriptor::RowDescriptor(const DescriptorTbl& desc_tbl, const std::vector<TT
DCHECK_GT(row_tuples.size(), 0);
_num_materialized_slots = 0;
_num_null_slots = 0;
_num_slots = 0;

for (int i = 0; i < row_tuples.size(); ++i) {
TupleDescriptor* tupleDesc = desc_tbl.get_tuple_descriptor(row_tuples[i]);
_num_materialized_slots += tupleDesc->num_materialized_slots();
_num_null_slots += tupleDesc->num_null_slots();
_num_slots += tupleDesc->slots().size();
_tuple_desc_map.push_back(tupleDesc);
DCHECK(_tuple_desc_map.back() != nullptr);
}
Expand All @@ -399,6 +401,7 @@ RowDescriptor::RowDescriptor(TupleDescriptor* tuple_desc, bool is_nullable)
: _tuple_desc_map(1, tuple_desc), _tuple_idx_nullable_map(1, is_nullable) {
init_tuple_idx_map();
init_has_varlen_slots();
_num_slots = tuple_desc->slots().size();
}

RowDescriptor::RowDescriptor(const RowDescriptor& lhs_row_desc, const RowDescriptor& rhs_row_desc) {
Expand All @@ -414,6 +417,8 @@ RowDescriptor::RowDescriptor(const RowDescriptor& lhs_row_desc, const RowDescrip
rhs_row_desc._tuple_idx_nullable_map.end());
init_tuple_idx_map();
init_has_varlen_slots();

_num_slots = lhs_row_desc.num_slots() + rhs_row_desc.num_slots();
}

void RowDescriptor::init_tuple_idx_map() {
Expand Down
1 change: 1 addition & 0 deletions be/src/vec/exec/scan/vfile_scanner.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
Expand Down
6 changes: 3 additions & 3 deletions be/src/vec/functions/function_string.h
Original file line number Diff line number Diff line change
Expand Up @@ -2460,7 +2460,7 @@ StringRef do_money_format(FunctionContext* context, UInt32 scale, T int_value, T
auto multiplier = common::exp10_i128(std::abs(static_cast<int>(scale - 3)));
// do devide first to avoid overflow
// after round frac_value will be positive by design.
frac_value = std::abs(frac_value / multiplier) + 5;
frac_value = std::abs(static_cast<int>(frac_value / multiplier)) + 5;
frac_value /= 10;
} else if (scale < 2) {
DCHECK(frac_value < 100);
Expand Down Expand Up @@ -2501,8 +2501,8 @@ StringRef do_money_format(FunctionContext* context, UInt32 scale, T int_value, T

memcpy(result_data + (append_sign_manually ? 1 : 0), p, integer_str_len);
*(result_data + whole_decimal_str_len - 3) = '.';
*(result_data + whole_decimal_str_len - 2) = '0' + std::abs(frac_value / 10);
*(result_data + whole_decimal_str_len - 1) = '0' + std::abs(frac_value % 10);
*(result_data + whole_decimal_str_len - 2) = '0' + std::abs(static_cast<int>(frac_value / 10));
*(result_data + whole_decimal_str_len - 1) = '0' + std::abs(static_cast<int>(frac_value % 10));
return result;
};

Expand Down
15 changes: 15 additions & 0 deletions regression-test/suites/nereids_p0/aggregate/aggregate.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -343,4 +343,19 @@ suite("aggregate") {
"""
exception "aggregate function cannot contain aggregate parameters"
}

sql "drop table if exists table_10_undef_partitions2_keys3_properties4_distributed_by5"

sql """create table table_10_undef_partitions2_keys3_properties4_distributed_by5 (
col_bigint_undef_signed bigint/*agg_type_placeholder*/ ,
col_varchar_10__undef_signed varchar(10)/*agg_type_placeholder*/ ,
col_varchar_64__undef_signed varchar(64)/*agg_type_placeholder*/ ,
pk int/*agg_type_placeholder*/
) engine=olap
distributed by hash(pk) buckets 10
properties("replication_num" = "1")"""

sql "insert into table_10_undef_partitions2_keys3_properties4_distributed_by5(pk,col_bigint_undef_signed,col_varchar_10__undef_signed,col_varchar_64__undef_signed) values (0,111,'from','t'),(1,null,'h','out'),(2,3814,'get','q'),(3,5166561111626303305,'s','right'),(4,2688963514917402600,'b','hey'),(5,-5065987944147755706,'p','mean'),(6,31061,'v','d'),(7,122,'the','t'),(8,-2882446,'going','a'),(9,-43,'y','a');"

sql "SELECT MIN( `pk` ) FROM table_10_undef_partitions2_keys3_properties4_distributed_by5 WHERE ( col_varchar_64__undef_signed LIKE CONCAT ('come' , '%' ) OR col_varchar_10__undef_signed IN ( 'could' , 'was' , 'that' ) ) OR ( `pk` IS NULL OR ( `pk` <> 186 ) ) AND ( `pk` IS NOT NULL OR `pk` BETWEEN 255 AND -99 + 8 ) AND ( ( `pk` != 6 ) OR `pk` IS NULL );"
}

0 comments on commit 2de8432

Please sign in to comment.