Files
doris/regression-test/plugins/plugin_planner.groovy
T
yujun 23f9248bd8 [fix](nereids) project distinct to agg checker exclude window function (#54133)
for a project, if it is distinct and no contains agg function,
ProjectWithDistinctToAggregate will convert project to agg.

but the agg function should exclude window function.

for example:

for table t:
```
create table t(a int);
insert into t values (1), (1);
```

then for a distinct query
```
MySQL root@172.58.1.1:db1> select  distinct a, max(a) over() from t;
+---+---------------+
| a | max(a) over() |
+---+---------------+
| 1 | 1             |
| 1 | 1             |
+---+---------------+
```

it output two rows, it's error,  should output one row.

so we exclude the window function, then with this pr, the result will
be:
```
MySQL root@172.58.1.1:db1> select  distinct a, max(a) over() from t;
+---+---------------+
| a | max(a) over() |
+---+---------------+
| 1 | 1             |
+---+---------------+
```
2025-08-11 10:11:51 +08:00

29 lines
1.2 KiB
Groovy

// 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.
import org.apache.doris.regression.suite.Suite
Suite.metaClass.explainAndResult = { String tag, String sql ->
"qt_${tag}_shape" "explain shape plan ${sql}"
"qt_${tag}_result" "${sql}"
}
Suite.metaClass.explainAndOrderResult = { String tag, String sql ->
"qt_${tag}_shape" "explain shape plan ${sql}"
"order_qt_${tag}_result" "${sql}"
}