This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 6df1a9ab753 [branch-2.1](auto-partition) fix auto partition expr
change unexpected (#36345) (#36514)
6df1a9ab753 is described below
commit 6df1a9ab753e1680bb2f001c2ee6a1df01749ca9
Author: zclllyybb <[email protected]>
AuthorDate: Thu Jun 20 17:50:31 2024 +0800
[branch-2.1](auto-partition) fix auto partition expr change unexpected
(#36345) (#36514)
pick #36345
---
.../org/apache/doris/catalog/PartitionInfo.java | 3 ++-
.../doris/analysis/PartitionPruneTestBase.java | 4 ++-
.../doris/analysis/RangePartitionPruneTest.java | 3 ---
.../test_date_function_prune.groovy | 31 ++++++++++++++++++++++
4 files changed, 36 insertions(+), 5 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/catalog/PartitionInfo.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/PartitionInfo.java
index c899a4e8917..434812b07d3 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/PartitionInfo.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/PartitionInfo.java
@@ -249,8 +249,9 @@ public class PartitionInfo implements Writable {
return isAutoCreatePartitions;
}
+ // forbid change metadata.
public ArrayList<Expr> getPartitionExprs() {
- return this.partitionExprs;
+ return Expr.cloneList(this.partitionExprs);
}
public void checkPartitionItemListsMatch(List<PartitionItem> list1,
List<PartitionItem> list2) throws DdlException {
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/PartitionPruneTestBase.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/PartitionPruneTestBase.java
index 162a81ccb88..8a9d9787731 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/analysis/PartitionPruneTestBase.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/analysis/PartitionPruneTestBase.java
@@ -34,7 +34,9 @@ public abstract class PartitionPruneTestBase extends
TestWithFeService {
}
private void assertExplainContains(String sql, String subString) throws
Exception {
- Assert.assertTrue(String.format("sql=%s, expectResult=%s", sql,
subString),
+ Assert.assertTrue(
+ String.format("sql=%s, expectResult=%s, but got %s", sql,
subString,
+ getSQLPlanOrErrorMsg("explain " + sql)),
getSQLPlanOrErrorMsg("explain " + sql).contains(subString));
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/RangePartitionPruneTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/RangePartitionPruneTest.java
index 4cd7f8d2049..7bce2526df0 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/analysis/RangePartitionPruneTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/analysis/RangePartitionPruneTest.java
@@ -206,9 +206,6 @@ public class RangePartitionPruneTest extends
PartitionPruneTestBase {
"partitions=6/8");
addCase("select /*+ SET_VAR(enable_nereids_planner=false) */ * from
test.test_to_date_trunc where event_day= \"2023-08-07 11:00:00\" ",
"partitions=1/2");
- addCase("select /*+ SET_VAR(enable_nereids_planner=false) */ * from
test.test_to_date_trunc where date_trunc(event_day, \"day\")= \"2023-08-07
11:00:00\" ",
- "partitions=1/2");
-
}
diff --git
a/regression-test/suites/nereids_rules_p0/partition_prune/test_date_function_prune.groovy
b/regression-test/suites/nereids_rules_p0/partition_prune/test_date_function_prune.groovy
index c126206eba0..c6f122e3c87 100644
---
a/regression-test/suites/nereids_rules_p0/partition_prune/test_date_function_prune.groovy
+++
b/regression-test/suites/nereids_rules_p0/partition_prune/test_date_function_prune.groovy
@@ -91,4 +91,35 @@ suite("test_date_function_prune") {
sql "select * from dp where date_time >
str_to_date('2020-01-02','%Y-%m-%d')"
contains("partitions=2/3 (p2,p3)")
}
+
+ sql "drop table if exists test_to_date_trunc"
+ sql """
+ CREATE TABLE test_to_date_trunc(
+ event_day DATETIME NOT NULL
+ )
+ DUPLICATE KEY(event_day)
+ AUTO PARTITION BY range (date_trunc(event_day, "day")) (
+ PARTITION `p20230807` values [(20230807 ), (20230808 )),
+ PARTITION `p20020106` values [(20020106 ), (20020107 ))
+ )
+ DISTRIBUTED BY HASH(event_day) BUCKETS 4
+ PROPERTIES("replication_num" = "1");
+ """
+ explain {
+ sql """ select /*+ SET_VAR(enable_nereids_planner=false) */ * from
test_to_date_trunc where date_trunc(event_day, "day")= "2023-08-07 11:00:00" """
+ contains("partitions=0/2")
+ }
+ explain {
+ sql """ select * from test_to_date_trunc where date_trunc(event_day,
"day")= "2023-08-07 11:00:00" """
+ contains("VEMPTYSET")
+ }
+ sql """ insert into test_to_date_trunc values ("20230807000000"); """
+ explain {
+ sql """ select /*+ SET_VAR(enable_nereids_planner=false) */ * from
test_to_date_trunc where date_trunc(event_day, "day")= "2023-08-07 11:00:00" """
+ contains("partitions=1/2 (p20230807)")
+ }
+ explain {
+ sql """ select * from test_to_date_trunc where date_trunc(event_day,
"day")= "2023-08-07 11:00:00" """
+ contains("partitions=1/2 (p20230807)")
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]