This is an automated email from the ASF dual-hosted git repository.

englefly pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new ee5691b9dd4 [test](nereids)add regression case: disable join reorder 
if there are invalid stats (#43501)
ee5691b9dd4 is described below

commit ee5691b9dd4c7a1ed4ee9364c2261ebd3be52881
Author: minghong <zhoumingh...@selectdb.com>
AuthorDate: Thu Nov 28 11:18:28 2024 +0800

    [test](nereids)add regression case: disable join reorder if there are 
invalid stats (#43501)
    
    ### What problem does this PR solve?
    add test case for pr #41790.
    this case is blocked by #43279
---
 .../data/nereids_p0/stats/invalid_stats.out        |  31 ++++++
 .../stats/invalid_stats/invalid_stats.out          |  31 ++++++
 .../stats/{ => col_stats}/column_stats.groovy      |   0
 .../suites/nereids_p0/stats/invalid_stats.groovy   | 111 ---------------------
 .../invalid_stats.groovy}                          |  71 ++++---------
 5 files changed, 80 insertions(+), 164 deletions(-)

diff --git a/regression-test/data/nereids_p0/stats/invalid_stats.out 
b/regression-test/data/nereids_p0/stats/invalid_stats.out
new file mode 100644
index 00000000000..9b1b2e2aa97
--- /dev/null
+++ b/regression-test/data/nereids_p0/stats/invalid_stats.out
@@ -0,0 +1,31 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !reorder_1 --
+PhysicalResultSink
+--hashJoin[INNER_JOIN broadcast] hashCondition=((region.r_regionkey = 
nation.n_regionkey)) otherCondition=()
+----PhysicalOlapScan[nation]
+----PhysicalOlapScan[region]
+
+-- !ndv_min_max_invalid --
+PhysicalResultSink
+--hashJoin[INNER_JOIN broadcast] hashCondition=((region.r_regionkey = 
nation.n_regionkey)) otherCondition=()
+----PhysicalOlapScan[region]
+----PhysicalOlapScan[nation]
+
+-- !reorder_2 --
+PhysicalResultSink
+--hashJoin[INNER_JOIN broadcast] hashCondition=((region.r_regionkey = 
nation.n_regionkey)) otherCondition=()
+----PhysicalOlapScan[nation]
+----PhysicalOlapScan[region]
+
+-- !order_3 --
+PhysicalResultSink
+--hashJoin[INNER_JOIN broadcast] hashCondition=((region.r_regionkey = 
nation.n_regionkey)) otherCondition=()
+----PhysicalOlapScan[nation]
+----PhysicalOlapScan[region]
+
+-- !ndv_row_invalid --
+PhysicalResultSink
+--hashJoin[INNER_JOIN broadcast] hashCondition=((region.r_regionkey = 
nation.n_regionkey)) otherCondition=()
+----PhysicalOlapScan[region]
+----PhysicalOlapScan[nation]
+
diff --git 
a/regression-test/data/nereids_p0/stats/invalid_stats/invalid_stats.out 
b/regression-test/data/nereids_p0/stats/invalid_stats/invalid_stats.out
new file mode 100644
index 00000000000..9b1b2e2aa97
--- /dev/null
+++ b/regression-test/data/nereids_p0/stats/invalid_stats/invalid_stats.out
@@ -0,0 +1,31 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !reorder_1 --
+PhysicalResultSink
+--hashJoin[INNER_JOIN broadcast] hashCondition=((region.r_regionkey = 
nation.n_regionkey)) otherCondition=()
+----PhysicalOlapScan[nation]
+----PhysicalOlapScan[region]
+
+-- !ndv_min_max_invalid --
+PhysicalResultSink
+--hashJoin[INNER_JOIN broadcast] hashCondition=((region.r_regionkey = 
nation.n_regionkey)) otherCondition=()
+----PhysicalOlapScan[region]
+----PhysicalOlapScan[nation]
+
+-- !reorder_2 --
+PhysicalResultSink
+--hashJoin[INNER_JOIN broadcast] hashCondition=((region.r_regionkey = 
nation.n_regionkey)) otherCondition=()
+----PhysicalOlapScan[nation]
+----PhysicalOlapScan[region]
+
+-- !order_3 --
+PhysicalResultSink
+--hashJoin[INNER_JOIN broadcast] hashCondition=((region.r_regionkey = 
nation.n_regionkey)) otherCondition=()
+----PhysicalOlapScan[nation]
+----PhysicalOlapScan[region]
+
+-- !ndv_row_invalid --
+PhysicalResultSink
+--hashJoin[INNER_JOIN broadcast] 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/col_stats/column_stats.groovy
similarity index 100%
copy from regression-test/suites/nereids_p0/stats/column_stats.groovy
copy to regression-test/suites/nereids_p0/stats/col_stats/column_stats.groovy
diff --git a/regression-test/suites/nereids_p0/stats/invalid_stats.groovy 
b/regression-test/suites/nereids_p0/stats/invalid_stats.groovy
deleted file mode 100644
index 5304cd8c2c1..00000000000
--- a/regression-test/suites/nereids_p0/stats/invalid_stats.groovy
+++ /dev/null
@@ -1,111 +0,0 @@
-// 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("join reorder with unknown column statistics")
-    // }
-
-    // explain {
-    //     sql "select * from region where r_regionkey=1"
-    //     contains("join reorder with unknown column statistics")
-    // }
-
-    // explain {
-    //     sql "select r_regionkey from region group by r_regionkey"
-    //     contains("join reorder with unknown column statistics")
-    // }
-
-    // explain {
-    //     sql "select r_regionkey from region join nation on 
r_regionkey=n_regionkey"
-    //     contains("join reorder 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("join reorder with unknown column statistics")
-    // }
-
-    // explain {
-    //     sql "select r_regionkey from region group by r_regionkey"
-    //     notContains("join reorder with unknown column statistics")
-    // }
-
-    // explain {
-    //     sql "select r_regionkey from region join nation on 
r_regionkey=n_regionkey"
-    //     notContains("join reorder with unknown column statistics")
-    // }
-
-    // explain {
-    //     sql "select r_name from region join nation on 
r_regionkey=n_regionkey"
-    //     notContains("join reorder 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("join reorder with unknown column statistics")
-    // }
-}
-// disable jo: alter table region modify column r_regionkey set stats 
('ndv'='0', 'num_nulls'='0', 'min_value'='0', 'max_value'='4', 'row_count'='0');
-// disable jo: alter table region modify column r_regionkey set stats 
('ndv'='11', 'num_nulls'='0', 'min_value'='0', 'max_value'='4', 
'row_count'='1');
-
-// alter table region modify column r_regionkey set stats ('ndv'='10', 
'num_nulls'='0', 'min_value'='0', 'max_value'='4', 'row_count'='1');
diff --git a/regression-test/suites/nereids_p0/stats/column_stats.groovy 
b/regression-test/suites/nereids_p0/stats/invalid_stats/invalid_stats.groovy
similarity index 52%
rename from regression-test/suites/nereids_p0/stats/column_stats.groovy
rename to 
regression-test/suites/nereids_p0/stats/invalid_stats/invalid_stats.groovy
index d69601ec8f4..51f1a37f118 100644
--- a/regression-test/suites/nereids_p0/stats/column_stats.groovy
+++ b/regression-test/suites/nereids_p0/stats/invalid_stats/invalid_stats.groovy
@@ -15,14 +15,13 @@
 // specific language governing permissions and limitations
 // under the License.
 
-suite("column_stats") {
+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;
-
+        set ignore_shape_nodes=PhysicalProject;
         
         drop table if exists region;
         CREATE TABLE region  (
@@ -52,61 +51,27 @@ suite("column_stats") {
         );
         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_name set stats ('ndv'='25', 
'num_nulls'='0', 'min_value'='ALGERIA', 'max_value'='VIETNAM', 
'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');
-
-        alter table nation modify column n_comment set stats ('ndv'='25', 
'num_nulls'='0', 'min_value'=' haggle. carefully final deposits detect slyly 
agai', 'max_value'='y final packages. slow foxes cajole quickly. quickly silent 
platelets breach ironic accounts. unusual pinto be', 'row_count'='25');
+        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"
-        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")
-    }
-
+    qt_reorder_1 "explain shape plan select r_regionkey 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');"
+    
+    // r_regionkey stats invalid: ndv=0, but min or max is not null
+    qt_ndv_min_max_invalid "explain shape plan select r_regionkey from region 
join nation on r_regionkey=n_regionkey"
+    
+    // inject normal stats and check join order is nation-region
     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")
-    }
+    qt_reorder_2 "explain shape plan select r_regionkey from region join 
nation on r_regionkey=n_regionkey"
 
-    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")
-    }
+    // r_regionkey stats invalid: ndv > 10*row
+    sql "alter table region modify column r_regionkey set stats ('ndv'='10', 
'num_nulls'='0', 'min_value'='0', 'max_value'='4', 'row_count'='1');"
+    qt_order_3 "explain shape plan select r_regionkey from region join nation 
on r_regionkey=n_regionkey"
+    
+    sql "alter table region modify column r_regionkey set stats ('ndv'='11', 
'num_nulls'='0', 'min_value'='0', 'max_value'='4', 'row_count'='1');"
+    qt_ndv_row_invalid "explain shape plan select r_regionkey from region join 
nation on r_regionkey=n_regionkey"
 
-    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")
-    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to