This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch branch-1.2-unstable in repository https://gitbox.apache.org/repos/asf/doris.git
commit dd2a122707e52952a365ac160c180aacfbfc8a93 Author: morrySnow <101034200+morrys...@users.noreply.github.com> AuthorDate: Tue Nov 8 16:40:46 2022 +0800 [regression](Nereids) add back tpch regression test cases (#13826) 1. add back TPC-H regression test cases 2. fix decimal problem on aggregate function sum and agg introduced by #13764 3. fix memo merge group NPE introduced by #13900 --- .../java/org/apache/doris/nereids/memo/Memo.java | 14 ++- .../trees/expressions/functions/agg/Avg.java | 2 +- .../trees/expressions/functions/agg/Sum.java | 4 +- .../apache/doris/nereids/types/DecimalType.java | 4 +- .../nereids/trees/expressions/GetDataTypeTest.java | 2 +- .../suites/tpch_sf1_p1/tpch_sf1/nereids/q1.groovy | 77 ++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q10.groovy | 102 ++++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q11.groovy | 91 +++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q12.groovy | 93 +++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q13.groovy | 77 ++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q14.groovy | 63 ++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q15.groovy | 94 +++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q16.groovy | 97 ++++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q17.groovy | 73 ++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q18.groovy | 108 +++++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q19.groovy | 106 +++++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q2.groovy | 129 +++++++++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q20.groovy | 99 ++++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q21.groovy | 107 +++++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q22.groovy | 110 ++++++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q3.groovy | 83 +++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q4.groovy | 77 ++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q5.groovy | 87 ++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q6.groovy | 54 +++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q7.groovy | 115 ++++++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q8.groovy | 112 ++++++++++++++++++ .../suites/tpch_sf1_p1/tpch_sf1/nereids/q9.groovy | 95 +++++++++++++++ 27 files changed, 2064 insertions(+), 11 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java index 7db42fba56..81b1dc7c3f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java @@ -375,11 +375,17 @@ public class Memo { if (source.equals(destination)) { return source; } - if (source.getParentGroupExpressions().stream() - .anyMatch(e -> e.getOwnerGroup().equals(destination))) { - return null; + List<GroupExpression> needReplaceChild = Lists.newArrayList(); + for (GroupExpression groupExpression : groupExpressions.values()) { + if (groupExpression.children().contains(source)) { + if (groupExpression.getOwnerGroup().equals(destination)) { + // cycle, we should not merge + return null; + } + needReplaceChild.add(groupExpression); + } } - for (GroupExpression groupExpression : source.getParentGroupExpressions()) { + for (GroupExpression groupExpression : needReplaceChild) { groupExpressions.remove(groupExpression); List<Group> children = groupExpression.children(); // TODO: use a better way to replace child, avoid traversing all groupExpression diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Avg.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Avg.java index 406004236d..842724458c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Avg.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Avg.java @@ -58,7 +58,7 @@ public class Avg extends AggregateFunction implements UnaryExpression, ImplicitC .map(types -> types.get(0)) .orElse(child().getDataType()); if (argumentType instanceof DecimalType) { - return argumentType; + return DecimalType.SYSTEM_DEFAULT; } else if (argumentType.isDate()) { return DateType.INSTANCE; } else if (argumentType.isDateTime()) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Sum.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Sum.java index 997bf0757e..f69a1461c1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Sum.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Sum.java @@ -56,12 +56,10 @@ public class Sum extends AggregateFunction implements UnaryExpression, ImplicitC if (dataType instanceof LargeIntType) { return dataType; } else if (dataType instanceof DecimalType) { - // TODO: precision + 10 - return dataType; + return DecimalType.SYSTEM_DEFAULT; } else if (dataType instanceof IntegralType) { return BigIntType.INSTANCE; } else if (dataType instanceof FractionalType) { - // TODO: precision + 10 return DoubleType.INSTANCE; } else { throw new IllegalStateException("Unsupported sum type: " + dataType); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DecimalType.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DecimalType.java index e19b3ee52f..077d1780ac 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DecimalType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DecimalType.java @@ -37,7 +37,7 @@ public class DecimalType extends FractionalType { public static int MAX_PRECISION = 38; public static int MAX_SCALE = 38; - public static final DecimalType SYSTEM_DEFAULT = new DecimalType(MAX_PRECISION, 18); + public static final DecimalType SYSTEM_DEFAULT = new DecimalType(27, 9); private static final DecimalType BOOLEAN_DECIMAL = new DecimalType(1, 0); private static final DecimalType TINYINT_DECIMAL = new DecimalType(3, 0); @@ -100,7 +100,7 @@ public class DecimalType extends FractionalType { @Override public Type toCatalogDataType() { - return ScalarType.createDecimalType(precision, scale); + return ScalarType.createDecimalType(27, 9); } public int getPrecision() { diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/GetDataTypeTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/GetDataTypeTest.java index 0abf8db6dd..87e5e2115f 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/GetDataTypeTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/GetDataTypeTest.java @@ -73,7 +73,7 @@ public class GetDataTypeTest { Assertions.assertEquals(LargeIntType.INSTANCE, new Sum(largeIntLiteral).getDataType()); Assertions.assertEquals(DoubleType.INSTANCE, new Sum(floatLiteral).getDataType()); Assertions.assertEquals(DoubleType.INSTANCE, new Sum(doubleLiteral).getDataType()); - Assertions.assertEquals(DecimalType.createDecimalType(BigDecimal.ONE), new Sum(decimalLiteral).getDataType()); + Assertions.assertEquals(DecimalType.createDecimalType(27, 9), new Sum(decimalLiteral).getDataType()); Assertions.assertEquals(BigIntType.INSTANCE, new Sum(bigIntLiteral).getDataType()); Assertions.assertThrows(RuntimeException.class, () -> new Sum(charLiteral).getDataType()); Assertions.assertThrows(RuntimeException.class, () -> new Sum(varcharLiteral).getDataType()); diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q1.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q1.groovy new file mode 100644 index 0000000000..0964eda946 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q1.groovy @@ -0,0 +1,77 @@ +/* + * 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. + */ + +suite("tpch_sf1_q1_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ + select + l_returnflag, + l_linestatus, + sum(l_quantity) as sum_qty, + sum(l_extendedprice) as sum_base_price, + sum(l_extendedprice * (1 - l_discount)) as sum_disc_price, + sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge, + avg(l_quantity) as avg_qty, + avg(l_extendedprice) as avg_price, + avg(l_discount) as avg_disc, + count(*) as count_order + from + lineitem + where + l_shipdate <= date '1998-12-01' - interval '90' day + group by + l_returnflag, + l_linestatus + order by + l_returnflag, + l_linestatus; + """ + + qt_select """ + select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=16, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=false) */ + l_returnflag, + l_linestatus, + sum(l_quantity) as sum_qty, + sum(l_extendedprice) as sum_base_price, + sum(l_extendedprice * (1 - l_discount)) as sum_disc_price, + sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge, + avg(l_quantity) as avg_qty, + avg(l_extendedprice) as avg_price, + avg(l_discount) as avg_disc, + count(*) as count_order + from + lineitem + where + l_shipdate <= date '1998-12-01' - interval '90' day + group by + l_returnflag, + l_linestatus + order by + l_returnflag, + l_linestatus; + """ +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q10.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q10.groovy new file mode 100644 index 0000000000..b0b0eb5271 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q10.groovy @@ -0,0 +1,102 @@ +/* + * 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. + */ + +suite("tpch_sf1_q10_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ + select + c_custkey, + c_name, + sum(l_extendedprice * (1 - l_discount)) as revenue, + c_acctbal, + n_name, + c_address, + c_phone, + c_comment + from + customer, + orders, + lineitem, + nation + where + c_custkey = o_custkey + and l_orderkey = o_orderkey + and o_orderdate >= date '1993-10-01' + and o_orderdate < date '1993-10-01' + interval '3' month + and l_returnflag = 'R' + and c_nationkey = n_nationkey + group by + c_custkey, + c_name, + c_acctbal, + c_phone, + n_name, + c_address, + c_comment + order by + revenue desc + limit 20; + """ + + qt_select """ + select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=16, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + c_custkey, + c_name, + sum(t1.l_extendedprice * (1 - t1.l_discount)) as revenue, + c_acctbal, + n_name, + c_address, + c_phone, + c_comment + from + customer, + ( + select o_custkey,l_extendedprice,l_discount from lineitem, orders + where l_orderkey = o_orderkey + and o_orderdate >= date '1993-10-01' + and o_orderdate < date '1993-10-01' + interval '3' month + and l_returnflag = 'R' + ) t1, + nation + where + c_custkey = t1.o_custkey + and c_nationkey = n_nationkey + group by + c_custkey, + c_name, + c_acctbal, + c_phone, + n_name, + c_address, + c_comment + order by + revenue desc + limit 20; + + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q11.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q11.groovy new file mode 100644 index 0000000000..86c12a2a07 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q11.groovy @@ -0,0 +1,91 @@ +/* + * 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. + */ + +suite("tpch_sf1_q11_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ + select + ps_partkey, + sum(ps_supplycost * ps_availqty) as value + from + partsupp, + supplier, + nation + where + ps_suppkey = s_suppkey + and s_nationkey = n_nationkey + and n_name = 'GERMANY' + group by + ps_partkey having + sum(ps_supplycost * ps_availqty) > ( + select + sum(ps_supplycost * ps_availqty) * 0.0001000000 + from + partsupp, + supplier, + nation + where + ps_suppkey = s_suppkey + and s_nationkey = n_nationkey + and n_name = 'GERMANY' + ) + order by + value desc, ps_partkey; + """ + + qt_select """ + select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + ps_partkey, + sum(ps_supplycost * ps_availqty) as value + from + partsupp, + ( + select s_suppkey + from supplier, nation + where s_nationkey = n_nationkey and n_name = 'GERMANY' + ) B + where + ps_suppkey = B.s_suppkey + group by + ps_partkey having + sum(ps_supplycost * ps_availqty) > ( + select + sum(ps_supplycost * ps_availqty) * 0.000002 + from + partsupp, + (select s_suppkey + from supplier, nation + where s_nationkey = n_nationkey and n_name = 'GERMANY' + ) A + where + ps_suppkey = A.s_suppkey + ) + order by + value desc, ps_partkey; + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q12.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q12.groovy new file mode 100644 index 0000000000..b6634e3652 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q12.groovy @@ -0,0 +1,93 @@ +/* + * 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. + */ + +suite("tpch_sf1_q12_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ + select + l_shipmode, + sum(case + when o_orderpriority = '1-URGENT' + or o_orderpriority = '2-HIGH' + then 1 + else 0 + end) as high_line_count, + sum(case + when o_orderpriority <> '1-URGENT' + and o_orderpriority <> '2-HIGH' + then 1 + else 0 + end) as low_line_count + from + orders, + lineitem + where + o_orderkey = l_orderkey + and l_shipmode in ('MAIL', 'SHIP') + and l_commitdate < l_receiptdate + and l_shipdate < l_commitdate + and l_receiptdate >= date '1994-01-01' + and l_receiptdate < date '1994-01-01' + interval '1' year + group by + l_shipmode + order by + l_shipmode; + """ + + qt_select """ + select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + l_shipmode, + sum(case + when o_orderpriority = '1-URGENT' + or o_orderpriority = '2-HIGH' + then 1 + else 0 + end) as high_line_count, + sum(case + when o_orderpriority <> '1-URGENT' + and o_orderpriority <> '2-HIGH' + then 1 + else 0 + end) as low_line_count + from + orders, + lineitem + where + o_orderkey = l_orderkey + and l_shipmode in ('MAIL', 'SHIP') + and l_commitdate < l_receiptdate + and l_shipdate < l_commitdate + and l_receiptdate >= date '1994-01-01' + and l_receiptdate < date '1994-01-01' + interval '1' year + group by + l_shipmode + order by + l_shipmode; + + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q13.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q13.groovy new file mode 100644 index 0000000000..a11937aa39 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q13.groovy @@ -0,0 +1,77 @@ +/* + * 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. + */ + +suite("tpch_sf1_q13_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ + select + c_count, + count(*) as custdist + from + ( + select + c_custkey, + count(o_orderkey) as c_count + from + customer left outer join orders on + c_custkey = o_custkey + and o_comment not like '%special%requests%' + group by + c_custkey + ) as c_orders + group by + c_count + order by + custdist desc, + c_count desc; + """ + + qt_select """ + select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=16, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true) */ + c_count, + count(*) as custdist + from + ( + select + c_custkey, + count(o_orderkey) as c_count + from + orders right outer join customer on + c_custkey = o_custkey + and o_comment not like '%special%requests%' + group by + c_custkey + ) as c_orders + group by + c_count + order by + custdist desc, + c_count desc; + + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q14.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q14.groovy new file mode 100644 index 0000000000..40d55cbeaa --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q14.groovy @@ -0,0 +1,63 @@ +/* + * 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. + */ + +suite("tpch_sf1_q14_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ +select + 100.00 * sum(case + when p_type like 'PROMO%' + then l_extendedprice * (1 - l_discount) + else 0 + end) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue +from + lineitem, + part +where + l_partkey = p_partkey + and l_shipdate >= date '1995-09-01' + and l_shipdate < date '1995-09-01' + interval '1' month; + """ + + qt_select """ +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true) */ + 100.00 * sum(case + when p_type like 'PROMO%' + then l_extendedprice * (1 - l_discount) + else 0 + end) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue +from + part, + lineitem +where + l_partkey = p_partkey + and l_shipdate >= date '1995-09-01' + and l_shipdate < date '1995-09-01' + interval '1' month; + + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q15.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q15.groovy new file mode 100644 index 0000000000..eb5c1d3b54 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q15.groovy @@ -0,0 +1,94 @@ +/* + * 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. + */ + +suite("tpch_sf1_q15_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + + sql """ + drop view if exists revenue0; + """ + + sql """ + create view revenue0 (supplier_no, total_revenue) as + select + l_suppkey, + sum(l_extendedprice * (1 - l_discount)) + from + lineitem + where + l_shipdate >= date '1996-01-01' + and l_shipdate < date '1996-01-01' + interval '3' month + group by + l_suppkey; + """ + + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ + select + s_suppkey, + s_name, + s_address, + s_phone, + total_revenue + from + supplier, + revenue0 + where + s_suppkey = supplier_no + and total_revenue = ( + select + max(total_revenue) + from + revenue0 + ) + order by + s_suppkey; + """ + + qt_select """ + select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + s_suppkey, + s_name, + s_address, + s_phone, + total_revenue + from + supplier, + revenue0 + where + s_suppkey = supplier_no + and total_revenue = ( + select + max(total_revenue) + from + revenue0 + ) + order by + s_suppkey; + + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q16.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q16.groovy new file mode 100644 index 0000000000..1e4a5f7dca --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q16.groovy @@ -0,0 +1,97 @@ +/* + * 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. + */ + +suite("tpch_sf1_q16_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ +select + p_brand, + p_type, + p_size, + count(distinct ps_suppkey) as supplier_cnt +from + partsupp, + part +where + p_partkey = ps_partkey + and p_brand <> 'Brand#45' + and p_type not like 'MEDIUM POLISHED%' + and p_size in (49, 14, 23, 45, 19, 3, 36, 9) + and ps_suppkey not in ( + select + s_suppkey + from + supplier + where + s_comment like '%Customer%Complaints%' + ) +group by + p_brand, + p_type, + p_size +order by + supplier_cnt desc, + p_brand, + p_type, + p_size; + """ + + qt_select """ +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + p_brand, + p_type, + p_size, + count(distinct ps_suppkey) as supplier_cnt +from + partsupp, + part +where + p_partkey = ps_partkey + and p_brand <> 'Brand#45' + and p_type not like 'MEDIUM POLISHED%' + and p_size in (49, 14, 23, 45, 19, 3, 36, 9) + and ps_suppkey not in ( + select + s_suppkey + from + supplier + where + s_comment like '%Customer%Complaints%' + ) +group by + p_brand, + p_type, + p_size +order by + supplier_cnt desc, + p_brand, + p_type, + p_size; + + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q17.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q17.groovy new file mode 100644 index 0000000000..f49d433946 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q17.groovy @@ -0,0 +1,73 @@ +/* + * 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. + */ + +suite("tpch_sf1_q17_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ + select + sum(l_extendedprice) / 7.0 as avg_yearly + from + lineitem, + part + where + p_partkey = l_partkey + and p_brand = 'Brand#23' + and p_container = 'MED BOX' + and l_quantity < ( + select + 0.2 * avg(l_quantity) + from + lineitem + where + l_partkey = p_partkey + ); + """ + + qt_select """ + select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=1, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + sum(l_extendedprice) / 7.0 as avg_yearly + from + lineitem join + part p1 on p1.p_partkey = l_partkey + where + p1.p_brand = 'Brand#23' + and p1.p_container = 'MED BOX' + and l_quantity < ( + select + 0.2 * avg(l_quantity) + from + lineitem join + part p2 on p2.p_partkey = l_partkey + where + l_partkey = p1.p_partkey + and p2.p_brand = 'Brand#23' + and p2.p_container = 'MED BOX' + ); + + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q18.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q18.groovy new file mode 100644 index 0000000000..5e4ede22ac --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q18.groovy @@ -0,0 +1,108 @@ +/* + * 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. + */ + +suite("tpch_sf1_q18_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ +select + c_name, + c_custkey, + o_orderkey, + o_orderdate, + o_totalprice, + sum(l_quantity) +from + customer, + orders, + lineitem +where + o_orderkey in ( + select + l_orderkey + from + lineitem + group by + l_orderkey having + sum(l_quantity) > 300 + ) + and c_custkey = o_custkey + and o_orderkey = l_orderkey +group by + c_name, + c_custkey, + o_orderkey, + o_orderdate, + o_totalprice +order by + o_totalprice desc, + o_orderdate +limit 100; + """ + + qt_select """ +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=16, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true) */ + c_name, + c_custkey, + t3.o_orderkey, + t3.o_orderdate, + t3.o_totalprice, + sum(t3.l_quantity) +from +customer join +( + select * from + lineitem join + ( + select * from + orders left semi join + ( + select + l_orderkey + from + lineitem + group by + l_orderkey having sum(l_quantity) > 300 + ) t1 + on o_orderkey = t1.l_orderkey + ) t2 + on t2.o_orderkey = l_orderkey +) t3 +on c_custkey = t3.o_custkey +group by + c_name, + c_custkey, + t3.o_orderkey, + t3.o_orderdate, + t3.o_totalprice +order by + t3.o_totalprice desc, + t3.o_orderdate +limit 100; + + """ +} + diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q19.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q19.groovy new file mode 100644 index 0000000000..fc31026d98 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q19.groovy @@ -0,0 +1,106 @@ +/* + * 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. + */ + +suite("tpch_sf1_q19_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ +select + sum(l_extendedprice* (1 - l_discount)) as revenue +from + lineitem, + part +where + ( + p_partkey = l_partkey + and p_brand = 'Brand#12' + and p_container in ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') + and l_quantity >= 1 and l_quantity <= 1 + 10 + and p_size between 1 and 5 + and l_shipmode in ('AIR', 'AIR REG') + and l_shipinstruct = 'DELIVER IN PERSON' + ) + or + ( + p_partkey = l_partkey + and p_brand = 'Brand#23' + and p_container in ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK') + and l_quantity >= 10 and l_quantity <= 10 + 10 + and p_size between 1 and 10 + and l_shipmode in ('AIR', 'AIR REG') + and l_shipinstruct = 'DELIVER IN PERSON' + ) + or + ( + p_partkey = l_partkey + and p_brand = 'Brand#34' + and p_container in ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') + and l_quantity >= 20 and l_quantity <= 20 + 10 + and p_size between 1 and 15 + and l_shipmode in ('AIR', 'AIR REG') + and l_shipinstruct = 'DELIVER IN PERSON' + ); + """ + + qt_select """ +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true) */ + sum(l_extendedprice* (1 - l_discount)) as revenue +from + lineitem, + part +where + ( + p_partkey = l_partkey + and p_brand = 'Brand#12' + and p_container in ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') + and l_quantity >= 1 and l_quantity <= 1 + 10 + and p_size between 1 and 5 + and l_shipmode in ('AIR', 'AIR REG') + and l_shipinstruct = 'DELIVER IN PERSON' + ) + or + ( + p_partkey = l_partkey + and p_brand = 'Brand#23' + and p_container in ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK') + and l_quantity >= 10 and l_quantity <= 10 + 10 + and p_size between 1 and 10 + and l_shipmode in ('AIR', 'AIR REG') + and l_shipinstruct = 'DELIVER IN PERSON' + ) + or + ( + p_partkey = l_partkey + and p_brand = 'Brand#34' + and p_container in ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') + and l_quantity >= 20 and l_quantity <= 20 + 10 + and p_size between 1 and 15 + and l_shipmode in ('AIR', 'AIR REG') + and l_shipinstruct = 'DELIVER IN PERSON' + ); + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q2.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q2.groovy new file mode 100644 index 0000000000..8628045109 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q2.groovy @@ -0,0 +1,129 @@ +/* + * 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. + */ + +suite("tpch_sf1_q2_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ +select + s_acctbal, + s_name, + n_name, + p_partkey, + p_mfgr, + s_address, + s_phone, + s_comment +from + part, + supplier, + partsupp, + nation, + region +where + p_partkey = ps_partkey + and s_suppkey = ps_suppkey + and p_size = 15 + and p_type like '%BRASS' + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey + and r_name = 'EUROPE' + and ps_supplycost = ( + select + min(ps_supplycost) + from + partsupp, + supplier, + nation, + region + where + p_partkey = ps_partkey + and s_suppkey = ps_suppkey + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey + and r_name = 'EUROPE' + ) +order by + s_acctbal desc, + n_name, + s_name, + p_partkey +limit 100; + """ + + qt_select """ + select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=1, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + s_acctbal, + s_name, + n_name, + p_partkey, + p_mfgr, + s_address, + s_phone, + s_comment +from + partsupp join + ( + select + ps_partkey as a_partkey, + min(ps_supplycost) as a_min + from + partsupp, + part, + supplier, + nation, + region + where + p_partkey = ps_partkey + and s_suppkey = ps_suppkey + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey + and r_name = 'EUROPE' + and p_size = 15 + and p_type like '%BRASS' + group by ps_partkey + ) A on ps_partkey = a_partkey and ps_supplycost=a_min , + part, + supplier, + nation, + region +where + p_partkey = ps_partkey + and s_suppkey = ps_suppkey + and p_size = 15 + and p_type like '%BRASS' + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey + and r_name = 'EUROPE' + +order by + s_acctbal desc, + n_name, + s_name, + p_partkey +limit 100; + """ +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q20.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q20.groovy new file mode 100644 index 0000000000..fa8981b91f --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q20.groovy @@ -0,0 +1,99 @@ +/* + * 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. + */ + +suite("tpch_sf1_q20_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ +select + s_name, + s_address +from + supplier, + nation +where + s_suppkey in ( + select + ps_suppkey + from + partsupp + where + ps_partkey in ( + select + p_partkey + from + part + where + p_name like 'forest%' + ) + and ps_availqty > ( + select + 0.5 * sum(l_quantity) + from + lineitem + where + l_partkey = ps_partkey + and l_suppkey = ps_suppkey + and l_shipdate >= date '1994-01-01' + and l_shipdate < date '1994-01-01' + interval '1' year + ) + ) + and s_nationkey = n_nationkey + and n_name = 'CANADA' +order by + s_name; + """ + + qt_select """ +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=16, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true) */ +s_name, s_address from +supplier left semi join +( + select * from + ( + select l_partkey,l_suppkey, 0.5 * sum(l_quantity) as l_q + from lineitem + where l_shipdate >= date '1994-01-01' + and l_shipdate < date '1994-01-01' + interval '1' year + group by l_partkey,l_suppkey + ) t2 join + ( + select ps_partkey, ps_suppkey, ps_availqty + from partsupp left semi join part + on ps_partkey = p_partkey and p_name like 'forest%' + ) t1 + on t2.l_partkey = t1.ps_partkey and t2.l_suppkey = t1.ps_suppkey + and t1.ps_availqty > t2.l_q +) t3 +on s_suppkey = t3.ps_suppkey +join nation +where s_nationkey = n_nationkey + and n_name = 'CANADA' +order by s_name; + + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q21.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q21.groovy new file mode 100644 index 0000000000..0407830d15 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q21.groovy @@ -0,0 +1,107 @@ +/* + * 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. + */ + +suite("tpch_sf1_q21_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ +select + s_name, + count(*) as numwait +from + supplier, + lineitem l1, + orders, + nation +where + s_suppkey = l1.l_suppkey + and o_orderkey = l1.l_orderkey + and o_orderstatus = 'F' + and l1.l_receiptdate > l1.l_commitdate + and exists ( + select + * + from + lineitem l2 + where + l2.l_orderkey = l1.l_orderkey + and l2.l_suppkey <> l1.l_suppkey + ) + and not exists ( + select + * + from + lineitem l3 + where + l3.l_orderkey = l1.l_orderkey + and l3.l_suppkey <> l1.l_suppkey + and l3.l_receiptdate > l3.l_commitdate + ) + and s_nationkey = n_nationkey + and n_name = 'SAUDI ARABIA' +group by + s_name +order by + numwait desc, + s_name +limit 100; + """ + + qt_select """ +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=16, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true) */ +s_name, count(*) as numwait +from orders join +( + select * from + lineitem l2 right semi join + ( + select * from + lineitem l3 right anti join + ( + select * from + lineitem l1 join + ( + select * from + supplier join nation + where s_nationkey = n_nationkey + and n_name = 'SAUDI ARABIA' + ) t1 + where t1.s_suppkey = l1.l_suppkey and l1.l_receiptdate > l1.l_commitdate + ) t2 + on l3.l_orderkey = t2.l_orderkey and l3.l_suppkey <> t2.l_suppkey and l3.l_receiptdate > l3.l_commitdate + ) t3 + on l2.l_orderkey = t3.l_orderkey and l2.l_suppkey <> t3.l_suppkey +) t4 +on o_orderkey = t4.l_orderkey and o_orderstatus = 'F' +group by + t4.s_name +order by + numwait desc, + t4.s_name +limit 100; + """ + +} \ No newline at end of file diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q22.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q22.groovy new file mode 100644 index 0000000000..bfcd6dd80c --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q22.groovy @@ -0,0 +1,110 @@ +/* + * 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. + */ + +suite("tpch_sf1_q22_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ +select + cntrycode, + count(*) as numcust, + sum(c_acctbal) as totacctbal +from + ( + select + substring(c_phone, 1, 2) as cntrycode, + c_acctbal + from + customer + where + substring(c_phone, 1, 2) in + ('13', '31', '23', '29', '30', '18', '17') + and c_acctbal > ( + select + avg(c_acctbal) + from + customer + where + c_acctbal > 0.00 + and substring(c_phone, 1, 2) in + ('13', '31', '23', '29', '30', '18', '17') + ) + and not exists ( + select + * + from + orders + where + o_custkey = c_custkey + ) + ) as custsale +group by + cntrycode +order by + cntrycode; + """ + + qt_select """ +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=16, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + cntrycode, + count(*) as numcust, + sum(c_acctbal) as totacctbal +from + ( + select + substring(c_phone, 1, 2) as cntrycode, + c_acctbal + from + customer + where + substring(c_phone, 1, 2) in + ('13', '31', '23', '29', '30', '18', '17') + and c_acctbal > ( + select + avg(c_acctbal) + from + customer + where + c_acctbal > 0.00 + and substring(c_phone, 1, 2) in + ('13', '31', '23', '29', '30', '18', '17') + ) + and not exists ( + select + * + from + orders + where + o_custkey = c_custkey + ) + ) as custsale +group by + cntrycode +order by + cntrycode; + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q3.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q3.groovy new file mode 100644 index 0000000000..0e4c19ab2b --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q3.groovy @@ -0,0 +1,83 @@ +/* + * 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. + */ + +suite("tpch_sf1_q3_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ + select + l_orderkey, + sum(l_extendedprice * (1 - l_discount)) as revenue, + o_orderdate, + o_shippriority + from + customer, + orders, + lineitem + where + c_mktsegment = 'BUILDING' + and c_custkey = o_custkey + and l_orderkey = o_orderkey + and o_orderdate < date '1995-03-15' + and l_shipdate > date '1995-03-15' + group by + l_orderkey, + o_orderdate, + o_shippriority + order by + revenue desc, + o_orderdate + limit 10; + """ + + qt_select """ + select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + l_orderkey, + sum(l_extendedprice * (1 - l_discount)) as revenue, + o_orderdate, + o_shippriority + from + ( + select l_orderkey, l_extendedprice, l_discount, o_orderdate, o_shippriority, o_custkey from + lineitem join orders + where l_orderkey = o_orderkey + and o_orderdate < date '1995-03-15' + and l_shipdate > date '1995-03-15' + ) t1 join customer c + on c.c_custkey = t1.o_custkey + where c_mktsegment = 'BUILDING' + group by + l_orderkey, + o_orderdate, + o_shippriority + order by + revenue desc, + o_orderdate + limit 10; + + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q4.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q4.groovy new file mode 100644 index 0000000000..3b51baedb4 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q4.groovy @@ -0,0 +1,77 @@ +/* + * 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. + */ + +suite("tpch_sf1_q4_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ + select + o_orderpriority, + count(*) as order_count + from + orders + where + o_orderdate >= date '1993-07-01' + and o_orderdate < date '1993-07-01' + interval '3' month + and exists ( + select + * + from + lineitem + where + l_orderkey = o_orderkey + and l_commitdate < l_receiptdate + ) + group by + o_orderpriority + order by + o_orderpriority; + """ + + qt_select """ + select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=4, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + o_orderpriority, + count(*) as order_count + from + ( + select + * + from + lineitem + where l_commitdate < l_receiptdate + ) t1 + right semi join orders + on t1.l_orderkey = o_orderkey + where + o_orderdate >= date '1993-07-01' + and o_orderdate < date '1993-07-01' + interval '3' month + group by + o_orderpriority + order by + o_orderpriority; + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q5.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q5.groovy new file mode 100644 index 0000000000..4fc1e494b9 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q5.groovy @@ -0,0 +1,87 @@ +/* + * 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. + */ + +suite("tpch_sf1_q5_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + sql 'set exec_mem_limit=8589934592' + + qt_select """ + select + n_name, + sum(l_extendedprice * (1 - l_discount)) as revenue + from + customer, + orders, + lineitem, + supplier, + nation, + region + where + c_custkey = o_custkey + and l_orderkey = o_orderkey + and l_suppkey = s_suppkey + and c_nationkey = s_nationkey + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey + and r_name = 'ASIA' + and o_orderdate >= date '1994-01-01' + and o_orderdate < date '1994-01-01' + interval '1' year + group by + n_name + order by + revenue desc; + """ + + qt_select """ + + select /*+SET_VAR(exec_mem_limit=8589934592, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true) */ + n_name, + sum(l_extendedprice * (1 - l_discount)) as revenue + from + customer, + orders, + lineitem, + supplier, + nation, + region + where + c_custkey = o_custkey + and l_orderkey = o_orderkey + and l_suppkey = s_suppkey + and c_nationkey = s_nationkey + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey + and r_name = 'ASIA' + and o_orderdate >= date '1994-01-01' + and o_orderdate < date '1994-01-01' + interval '1' year + group by + n_name + order by + revenue desc; + + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q6.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q6.groovy new file mode 100644 index 0000000000..1eaef71f85 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q6.groovy @@ -0,0 +1,54 @@ +/* + * 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. + */ + +suite("tpch_sf1_q6_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ + select + sum(l_extendedprice * l_discount) as revenue + from + lineitem + where + l_shipdate >= date '1994-01-01' + and l_shipdate < date '1994-01-01' + interval '1' year + and l_discount between .06 - 0.01 and .06 + 0.01 + and l_quantity < 24; + """ + + qt_select """ + select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=1, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true) */ + sum(l_extendedprice * l_discount) as revenue + from + lineitem + where + l_shipdate >= date '1994-01-01' + and l_shipdate < date '1994-01-01' + interval '1' year + and l_discount between .06 - 0.01 and .06 + 0.01 + and l_quantity < 24; + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q7.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q7.groovy new file mode 100644 index 0000000000..fd46be98ea --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q7.groovy @@ -0,0 +1,115 @@ +/* + * 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. + */ + +suite("tpch_sf1_q7_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ + select + supp_nation, + cust_nation, + l_year, + sum(volume) as revenue + from + ( + select + n1.n_name as supp_nation, + n2.n_name as cust_nation, + extract(year from l_shipdate) as l_year, + l_extendedprice * (1 - l_discount) as volume + from + supplier, + lineitem, + orders, + customer, + nation n1, + nation n2 + where + s_suppkey = l_suppkey + and o_orderkey = l_orderkey + and c_custkey = o_custkey + and s_nationkey = n1.n_nationkey + and c_nationkey = n2.n_nationkey + and ( + (n1.n_name = 'FRANCE' and n2.n_name = 'GERMANY') + or (n1.n_name = 'GERMANY' and n2.n_name = 'FRANCE') + ) + and l_shipdate between date '1995-01-01' and date '1996-12-31' + ) as shipping + group by + supp_nation, + cust_nation, + l_year + order by + supp_nation, + cust_nation, + l_year; + """ + + qt_select """ + select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true) */ + supp_nation, + cust_nation, + l_year, + sum(volume) as revenue + from + ( + select + n1.n_name as supp_nation, + n2.n_name as cust_nation, + extract(year from l_shipdate) as l_year, + l_extendedprice * (1 - l_discount) as volume + from + supplier, + lineitem, + orders, + customer, + nation n1, + nation n2 + where + s_suppkey = l_suppkey + and o_orderkey = l_orderkey + and c_custkey = o_custkey + and s_nationkey = n1.n_nationkey + and c_nationkey = n2.n_nationkey + and ( + (n1.n_name = 'FRANCE' and n2.n_name = 'GERMANY') + or (n1.n_name = 'GERMANY' and n2.n_name = 'FRANCE') + ) + and l_shipdate between date '1995-01-01' and date '1996-12-31' + ) as shipping + group by + supp_nation, + cust_nation, + l_year + order by + supp_nation, + cust_nation, + l_year; + + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q8.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q8.groovy new file mode 100644 index 0000000000..86caa36cf1 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q8.groovy @@ -0,0 +1,112 @@ +/* + * 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. + */ + +suite("tpch_sf1_q8_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + + qt_select """ +select + o_year, + sum(case + when nation = 'BRAZIL' then volume + else 0 + end) / sum(volume) as mkt_share +from + ( + select + extract(year from o_orderdate) as o_year, + l_extendedprice * (1 - l_discount) as volume, + n2.n_name as nation + from + part, + supplier, + lineitem, + orders, + customer, + nation n1, + nation n2, + region + where + p_partkey = l_partkey + and s_suppkey = l_suppkey + and l_orderkey = o_orderkey + and o_custkey = c_custkey + and c_nationkey = n1.n_nationkey + and n1.n_regionkey = r_regionkey + and r_name = 'AMERICA' + and s_nationkey = n2.n_nationkey + and o_orderdate between date '1995-01-01' and date '1996-12-31' + and p_type = 'ECONOMY ANODIZED STEEL' + ) as all_nations +group by + o_year +order by + o_year; + """ + + qt_select """ + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + o_year, + sum(case + when nation = 'BRAZIL' then volume + else 0 + end) / sum(volume) as mkt_share +from + ( + select + extract(year from o_orderdate) as o_year, + l_extendedprice * (1 - l_discount) as volume, + n2.n_name as nation + from + lineitem, + orders, + customer, + supplier, + part, + nation n1, + nation n2, + region + where + p_partkey = l_partkey + and s_suppkey = l_suppkey + and l_orderkey = o_orderkey + and o_custkey = c_custkey + and c_nationkey = n1.n_nationkey + and n1.n_regionkey = r_regionkey + and r_name = 'AMERICA' + and s_nationkey = n2.n_nationkey + and o_orderdate between date '1995-01-01' and date '1996-12-31' + and p_type = 'ECONOMY ANODIZED STEEL' + ) as all_nations +group by + o_year +order by + o_year; + + """ + +} diff --git a/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q9.groovy b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q9.groovy new file mode 100644 index 0000000000..89055edec8 --- /dev/null +++ b/regression-test/suites/tpch_sf1_p1/tpch_sf1/nereids/q9.groovy @@ -0,0 +1,95 @@ +/* + * 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. + */ + +suite("tpch_sf1_q9_nereids") { + String realDb = context.config.getDbNameByFile(context.file) + // get parent directory's group + realDb = realDb.substring(0, realDb.lastIndexOf("_")) + + sql "use ${realDb}" + + sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' + sql 'set exec_mem_limit=17179869184' + + qt_select """ + select + nation, + o_year, + sum(amount) as sum_profit + from + ( + select + n_name as nation, + extract(year from o_orderdate) as o_year, + l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity as amount + from + part, + supplier, + lineitem, + partsupp, + orders, + nation + where + s_suppkey = l_suppkey + and ps_suppkey = l_suppkey + and ps_partkey = l_partkey + and p_partkey = l_partkey + and o_orderkey = l_orderkey + and s_nationkey = n_nationkey + and p_name like '%green%' + ) as profit + group by + nation, + o_year + order by + nation, + o_year desc; + """ + + qt_select """ + select/*+SET_VAR(exec_mem_limit=17179869184, parallel_fragment_exec_instance_num=4, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true, enable_remove_no_conjuncts_runtime_filter_policy=true, runtime_filter_wait_time_ms=10000) */ + nation, + o_year, + sum(amount) as sum_profit + from + ( + select + n_name as nation, + extract(year from o_orderdate) as o_year, + l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity as amount + from + lineitem join orders on o_orderkey = l_orderkey + join part on p_partkey = l_partkey + join partsupp on ps_partkey = l_partkey + join supplier on s_suppkey = l_suppkey + join nation on s_nationkey = n_nationkey + where + ps_suppkey = l_suppkey and + p_name like '%green%' + ) as profit + group by + nation, + o_year + order by + nation, + o_year desc; + """ + +} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org