[fix](nereids) fix some arrgregate bugs in Nereids (#15326)
1. the agg function without distinct keyword should be a "merge" funcion in threePhaseAggregateWithDistinct 2. use aggregateParam.aggMode.consumeAggregateBuffer instead of aggregateParam.aggPhase.isGlobal() to indicate if a agg function is a "merge" function 3. add an AvgDistinctToSumDivCount rule to support avg(distinct xxx) in some case 4. AggregateExpression's nullable method should call inner function's nullable method. 5. add a bind slot rule to bind pattern "logicalSort(logicalHaving(logicalProject()))" 6. don't remove project node in PhysicalPlanTranslator 7. add a cast to bigint expr when count( distinct datelike type ) 8. fallback to old optimizer if bitmap runtime filter is enabled. 9. fix exchange node mem leak
This commit is contained in:
@ -762,7 +762,14 @@ Status ExecNode::do_projections(vectorized::Block* origin_block, vectorized::Blo
|
||||
RETURN_IF_ERROR(_projections[i]->execute(origin_block, &result_column_id));
|
||||
auto column_ptr = origin_block->get_by_position(result_column_id)
|
||||
.column->convert_to_full_column_if_const();
|
||||
mutable_columns[i]->insert_range_from(*column_ptr, 0, rows);
|
||||
//TODO: this is a quick fix, we need a new function like "change_to_nullable" to do it
|
||||
if (mutable_columns[i]->is_nullable() xor column_ptr->is_nullable()) {
|
||||
DCHECK(mutable_columns[i]->is_nullable() && !column_ptr->is_nullable());
|
||||
reinterpret_cast<ColumnNullable*>(mutable_columns[i].get())
|
||||
->insert_range_from_not_nullable(*column_ptr, 0, rows);
|
||||
} else {
|
||||
mutable_columns[i]->insert_range_from(*column_ptr, 0, rows);
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_mem_reuse) output_block->swap(mutable_block.to_block());
|
||||
|
||||
Reference in New Issue
Block a user