From 8d2815269c89855f1f60a330dd620023fefd47cd Mon Sep 17 00:00:00 2001 From: zhaochangle Date: Tue, 9 Apr 2024 09:23:19 +0800 Subject: [PATCH] 1 --- .../nereids/parser/PartitionTableInfo.java | 7 +---- .../plans/commands/info/CreateTableInfo.java | 3 +-- .../test_auto_range_partition.out | 3 +++ .../test_auto_range_partition.groovy | 27 +++++++++++++++++++ 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/PartitionTableInfo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/PartitionTableInfo.java index fcf35b739c45e7..3bc4a124410f01 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/PartitionTableInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/PartitionTableInfo.java @@ -83,12 +83,7 @@ public PartitionTableInfo( this.partitionType = partitionType; this.partitionDefs = partitionDefs; this.partitionList = partitionFields; - if (this.partitionList != null) { - this.partitionColumns = this.partitionList.stream() - .filter(UnboundSlot.class::isInstance) - .map(partition -> ((UnboundSlot) partition).getName()) - .collect(Collectors.toList()); - } + extractPartitionColumns(); } public boolean isAutoPartition() { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java index ada3e08fdc932b..967b81ebb085bb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java @@ -90,7 +90,7 @@ public class CreateTableInfo { private String clusterName = null; private List clusterKeysColumnNames = null; private List clusterKeysColumnIds = null; - private PartitionTableInfo partitionTableInfo; // get when validate + private PartitionTableInfo partitionTableInfo; /** * constructor for create table @@ -425,7 +425,6 @@ public void validate(ConnectContext ctx) { } // validate partition - partitionTableInfo.extractPartitionColumns(); partitionTableInfo.validatePartitionInfo(columnMap, properties, ctx, isEnableMergeOnWrite, isExternal); // validate distribution descriptor diff --git a/regression-test/data/partition_p0/auto_partition/test_auto_range_partition.out b/regression-test/data/partition_p0/auto_partition/test_auto_range_partition.out index 93c6d86bf9c734..dadc18076a4eb2 100644 --- a/regression-test/data/partition_p0/auto_partition/test_auto_range_partition.out +++ b/regression-test/data/partition_p0/auto_partition/test_auto_range_partition.out @@ -108,3 +108,6 @@ 9999-12-31T23:59:59 9999-12-31T23:59:59.999999 +-- !sql -- +2020-12-12 + diff --git a/regression-test/suites/partition_p0/auto_partition/test_auto_range_partition.groovy b/regression-test/suites/partition_p0/auto_partition/test_auto_range_partition.groovy index 52325690ce7f61..b7bafc58383dd9 100644 --- a/regression-test/suites/partition_p0/auto_partition/test_auto_range_partition.groovy +++ b/regression-test/suites/partition_p0/auto_partition/test_auto_range_partition.groovy @@ -102,4 +102,31 @@ suite("test_auto_range_partition") { result2 = sql "show partitions from right_bound" logger.info("${result2}") assertEquals(result2.size(), 2) + + // partition expr extraction + + sql " drop table if exists isit " + sql " drop table if exists isit_src " + sql """ + CREATE TABLE isit ( + k DATE NOT NULL + ) + AUTO PARTITION BY RANGE (date_trunc(k, 'day'))() + DISTRIBUTED BY HASH(k) BUCKETS AUTO + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + sql """ + CREATE TABLE isit_src ( + k DATE NOT NULL + ) + DISTRIBUTED BY HASH(k) BUCKETS AUTO + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + sql " insert into isit_src values (20201212); " + sql " insert into isit select * from isit_src " + qt_sql " select * from isit order by k " }