diff --git a/regression-test/data/nereids_p0/stats/column_stats.out b/regression-test/data/nereids_p0/stats/column_stats.out new file mode 100644 index 000000000000000..03a7cdc2fd24454 --- /dev/null +++ b/regression-test/data/nereids_p0/stats/column_stats.out @@ -0,0 +1,13 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !order -- +PhysicalResultSink +--hashJoin[INNER_JOIN broadcast] hashCondition=((region.r_regionkey = nation.n_regionkey)) otherCondition=() +----PhysicalOlapScan[nation] +----PhysicalOlapScan[region] + +-- !disable_order -- +PhysicalResultSink +--hashJoin[INNER_JOIN shuffle] hashCondition=((region.r_regionkey = nation.n_regionkey)) otherCondition=() +----PhysicalOlapScan[region] +----PhysicalOlapScan[nation] + diff --git a/regression-test/suites/nereids_p0/stats/column_stats.groovy b/regression-test/suites/nereids_p0/stats/column_stats.groovy index d69601ec8f47582..ed1c717b3522c01 100644 --- a/regression-test/suites/nereids_p0/stats/column_stats.groovy +++ b/regression-test/suites/nereids_p0/stats/column_stats.groovy @@ -109,4 +109,11 @@ suite("column_stats") { """ notContains("planed with unknown column statistics") } + + // test invalid col stats => disable join reorder + qt_order "explain shape plan select * from region join nation on r_regionkey=n_regionkey" + + sql "alter table region modify column r_regionkey set stats ('ndv'='0', 'num_nulls'='0', 'min_value'='0', 'max_value'='4', 'row_count'='0');" + + qt_disable_order "explain shape plan select * from region join nation on r_regionkey=n_regionkey" } diff --git a/regression-test/suites/nereids_p0/stats/invalid_stats.groovy b/regression-test/suites/nereids_p0/stats/invalid_stats.groovy new file mode 100644 index 000000000000000..370cff31e2221ac --- /dev/null +++ b/regression-test/suites/nereids_p0/stats/invalid_stats.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("invalid_stats") { + multi_sql """ + set global enable_auto_analyze=false; + SET enable_nereids_planner=true; + SET enable_fallback_to_original_planner=false; + set disable_nereids_rules=PRUNE_EMPTY_PARTITION; + + + drop table if exists region; + CREATE TABLE region ( + r_regionkey int NOT NULL, + r_name VARCHAR(25) NOT NULL, + r_comment VARCHAR(152) + )ENGINE=OLAP + DUPLICATE KEY(`r_regionkey`) + COMMENT "OLAP" + DISTRIBUTED BY HASH(`r_regionkey`) BUCKETS 1 + PROPERTIES ( + "replication_num" = "1" + ); + + drop table if exists nation; + CREATE TABLE `nation` ( + `n_nationkey` int(11) NOT NULL, + `n_name` varchar(25) NOT NULL, + `n_regionkey` int(11) NOT NULL, + `n_comment` varchar(152) NULL + ) ENGINE=OLAP + DUPLICATE KEY(`N_NATIONKEY`) + COMMENT "OLAP" + DISTRIBUTED BY HASH(`N_NATIONKEY`) BUCKETS 1 + PROPERTIES ( + "replication_num" = "1" + ); + alter table nation modify column n_nationkey set stats ('ndv'='25', 'num_nulls'='0', 'min_value'='0', 'max_value'='24', 'row_count'='25'); + + alter table nation modify column n_regionkey set stats ('ndv'='5', 'num_nulls'='0', 'min_value'='0', 'max_value'='4', 'row_count'='25'); + + """ + + explain { + sql "select * from region" + notContains("planed with unknown column statistics") + } + + explain { + sql "select * from region where r_regionkey=1" + contains("planed with unknown column statistics") + } + + explain { + sql "select r_regionkey from region group by r_regionkey" + contains("planed with unknown column statistics") + } + + explain { + sql "select r_regionkey from region join nation on r_regionkey=n_regionkey" + contains("planed with unknown column statistics") + } + + sql "alter table region modify column r_regionkey set stats ('ndv'='5', 'num_nulls'='0', 'min_value'='0', 'max_value'='4', 'row_count'='5');" + + explain { + sql "select * from region where r_regionkey=1" + notContains("planed with unknown column statistics") + } + + explain { + sql "select r_regionkey from region group by r_regionkey" + notContains("planed with unknown column statistics") + } + + explain { + sql "select r_regionkey from region join nation on r_regionkey=n_regionkey" + notContains("planed with unknown column statistics") + } + + explain { + sql "select r_name from region join nation on r_regionkey=n_regionkey" + notContains("planed with unknown column statistics") + } + + explain { + sql """ + select r_name + from (select r_name, r_regionkey + 1 x from region) T join nation on T.x=n_regionkey + """ + notContains("planed with unknown column statistics") + } +}