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

dataroaring pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new 553411f131b branch-3.0: [fix](partition) Remove invalid partition 
property in synced table #47571 (#47633)
553411f131b is described below

commit 553411f131b3d2930e85f3121cc566e7b7a0464b
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Feb 19 10:36:08 2025 +0800

    branch-3.0: [fix](partition) Remove invalid partition property in synced 
table #47571 (#47633)
    
    Cherry-picked from #47571
    
    Co-authored-by: Uniqueyou <wangyix...@selectdb.com>
---
 .../apache/doris/datasource/InternalCatalog.java   |   4 +
 .../test_partition_storage_policy.groovy           | 118 +++++++++++++++++++++
 2 files changed, 122 insertions(+)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
index 55fa51ebc47..373541ea125 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
@@ -3158,6 +3158,10 @@ public class InternalCatalog implements 
CatalogIf<Database> {
                     
olapTable.getPartitionInfo().getDataProperty(partition.getId())
                             .setStoragePolicy(partionStoragePolicy);
                 }
+                // storage policy is invalid for table/partition when table is 
being synced
+                if (isBeingSynced) {
+                    olapTable.setStoragePolicy("");
+                }
                 afterCreatePartitions(db.getId(), olapTable.getId(), null,
                         olapTable.getIndexIdList(), true);
             } else {
diff --git 
a/regression-test/suites/partition_p0/test_partition_storage_policy.groovy 
b/regression-test/suites/partition_p0/test_partition_storage_policy.groovy
new file mode 100644
index 00000000000..569921684b9
--- /dev/null
+++ b/regression-test/suites/partition_p0/test_partition_storage_policy.groovy
@@ -0,0 +1,118 @@
+// 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("test_partition_storage_policy") {
+    def resource_name = "test_partition_storage_policy_resource"
+    def policy_name= "test_partition_storage_policy"
+    def tableNameSynced = "test_partition_storage_policy_tbl_synced"
+    def tableNameNotSynced = "test_partition_storage_policy_tbl_not_synced"
+
+    sql "DROP TABLE IF EXISTS ${tableNameSynced}"
+    sql "DROP TABLE IF EXISTS ${tableNameNotSynced}"
+
+    def check_storage_policy_exist = { name->
+        def polices = sql"""
+        show storage policy;
+        """
+        for (p in polices) {
+            if (name == p[0]) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    if (check_storage_policy_exist(policy_name)) {
+        sql """
+            DROP STORAGE POLICY ${policy_name}
+        """
+    }
+
+    def has_resouce = sql """
+        SHOW RESOURCES WHERE NAME = "${resource_name}";
+    """
+
+    if (has_resouce.size() > 0) {
+        sql """
+            DROP RESOURCE ${resource_name}
+        """
+    }
+
+    sql """
+        CREATE RESOURCE IF NOT EXISTS "${resource_name}"
+        PROPERTIES(
+            "type"="s3",
+            "AWS_ENDPOINT" = "${getS3Endpoint()}",
+            "AWS_REGION" = "${getS3Region()}",
+            "AWS_ROOT_PATH" = "regression/cooldown",
+            "AWS_ACCESS_KEY" = "${getS3AK()}",
+            "AWS_SECRET_KEY" = "${getS3SK()}",
+            "AWS_MAX_CONNECTIONS" = "50",
+            "AWS_REQUEST_TIMEOUT_MS" = "3000",
+            "AWS_CONNECTION_TIMEOUT_MS" = "1000",
+            "AWS_BUCKET" = "${getS3BucketName()}",
+            "s3_validity_check" = "true"
+        );
+    """
+
+    sql """
+        CREATE STORAGE POLICY IF NOT EXISTS ${policy_name}
+        PROPERTIES(
+            "storage_resource" = "${resource_name}",
+            "cooldown_ttl" = "300"
+        )
+    """
+
+    sql """
+        CREATE TABLE IF NOT EXISTS ${tableNameSynced}
+        (
+            k1 DATETIMEV2(3),
+            k2 INT,
+            V1 VARCHAR(2048)
+        ) PARTITION BY RANGE (k1) (
+            PARTITION p1 VALUES LESS THAN ("2022-01-01 00:00:00.111") 
("storage_policy" = ${policy_name} ,"replication_num"="1"),
+            PARTITION p2 VALUES LESS THAN ("2022-02-01 00:00:00.111") 
("storage_policy" = ${policy_name} ,"replication_num"="1")
+        ) DISTRIBUTED BY HASH(k2) BUCKETS 1
+        PROPERTIES (
+            "replication_allocation" = "tag.location.default: 1",
+            "is_being_synced" = "true"
+        );
+    """
+
+    sql """
+        CREATE TABLE IF NOT EXISTS ${tableNameNotSynced}
+        (
+            k1 DATETIMEV2(3),
+            k2 INT,
+            V1 VARCHAR(2048)
+        ) PARTITION BY RANGE (k1) (
+            PARTITION p1 VALUES LESS THAN ("2022-01-01 00:00:00.111") 
("storage_policy" = ${policy_name} ,"replication_num"="1"),
+            PARTITION p2 VALUES LESS THAN ("2022-02-01 00:00:00.111") 
("storage_policy" = ${policy_name} ,"replication_num"="1")
+        ) DISTRIBUTED BY HASH(k2) BUCKETS 1
+        PROPERTIES (
+            "replication_allocation" = "tag.location.default: 1"
+        );
+    """
+
+    def res = sql "SHOW CREATE TABLE ${tableNameSynced}"
+    assertTrue(!res[0][1].contains("PARTITION p1 VALUES [('0000-01-01 
00:00:00'), ('2022-01-01 00:00:00.111'))(\"storage_policy\" = 
\"${policy_name}\")"))
+    assertTrue(!res[0][1].contains("PARTITION p2 VALUES [('2022-01-01 
00:00:00.111'), ('2022-02-01 00:00:00.111'))(\"storage_policy\" = 
\"${policy_name}\")"))
+
+    res = sql "SHOW CREATE TABLE ${tableNameNotSynced}"
+    assertTrue(res[0][1].contains("PARTITION p1 VALUES [('0000-01-01 
00:00:00'), ('2022-01-01 00:00:00.111'))(\"storage_policy\" = 
\"${policy_name}\")"))
+    assertTrue(res[0][1].contains("PARTITION p2 VALUES [('2022-01-01 
00:00:00.111'), ('2022-02-01 00:00:00.111'))(\"storage_policy\" = 
\"${policy_name}\")"))
+}


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

Reply via email to