Skip to content

Commit

Permalink
[fix](planner)should keep at least one slot materialized in agg node #…
Browse files Browse the repository at this point in the history
  • Loading branch information
starocean999 authored Nov 4, 2023
1 parent c84d82b commit 3199379
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -905,7 +905,9 @@ public void materializeRequiredSlots(Analyzer analyzer, ExprSubstitutionMap smap
intermediateSlotDesc.setIsMaterialized(true);
}

if (!slotDesc.isMaterialized()) {
if (!slotDesc.isMaterialized()
&& !(i == aggregateExprsSize - 1 && materializedSlots.isEmpty() && groupingExprs.isEmpty())) {
// we need keep at least one materialized slot in agg node
continue;
}

Expand Down
4 changes: 4 additions & 0 deletions regression-test/data/correctness_p0/test_agg_materialize.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
-- This file is automatically generated. You should know what you did if you want to edit this
-- !select --
3

35 changes: 35 additions & 0 deletions regression-test/suites/correctness_p0/test_agg_materialize.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@

// 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
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.

// The cases is copied from https://github.com/trinodb/trino/tree/master
// /testing/trino-product-tests/src/main/resources/sql-tests/testcases/aggregate
// and modified by Doris.

suite("test_agg_materialize") {
sql "set enable_nereids_planner=false"
qt_select """with tb1 as (select * from (select * from (select 1 k1) as t lateral view explode([1,2,3]) tmp1 as e1)t)
select count(*) from (select 1, count(*)
from tb1
where e1 in (1, 2)
group by e1
union all
select 1, count(*)
from tb1
where e1 = 1)tttt
; """
}

0 comments on commit 3199379

Please sign in to comment.