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 61da5bed66c branch-3.0: [Bug](auto-partition) fix auto partition could 
set storage_medium properties #45955 (#46259)
61da5bed66c is described below

commit 61da5bed66c4f726810aa2c00df35f20e68e14ee
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Feb 13 10:07:56 2025 +0800

    branch-3.0: [Bug](auto-partition) fix auto partition could set 
storage_medium properties #45955 (#46259)
    
    Cherry-picked from #45955
    
    ---------
    
    Co-authored-by: zhangstar333 <zhangs...@selectdb.com>
---
 .../apache/doris/analysis/PartitionExprUtil.java   |  9 ++++-
 .../doris/service/FrontendServiceImplTest.java     | 47 ++++++++++++++++++++++
 2 files changed, 55 insertions(+), 1 deletion(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/PartitionExprUtil.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/PartitionExprUtil.java
index 420bee53e18..30c3636434e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/PartitionExprUtil.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/PartitionExprUtil.java
@@ -18,11 +18,13 @@
 package org.apache.doris.analysis;
 
 import org.apache.doris.catalog.Column;
+import org.apache.doris.catalog.DataProperty;
 import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.catalog.PartitionInfo;
 import org.apache.doris.catalog.PartitionType;
 import org.apache.doris.catalog.Type;
 import org.apache.doris.common.AnalysisException;
+import org.apache.doris.common.util.PropertyAnalyzer;
 import org.apache.doris.thrift.TNullableStringLiteral;
 
 import com.google.common.collect.Maps;
@@ -186,7 +188,12 @@ public class PartitionExprUtil {
 
             SinglePartitionDesc singleRangePartitionDesc = new 
SinglePartitionDesc(true, partitionName,
                     partitionKeyDesc, partitionProperties);
-
+            // iff table's storage medium is not equal default storage medium,
+            // should add storage medium in partition properties
+            if 
(!DataProperty.DEFAULT_STORAGE_MEDIUM.equals(olapTable.getStorageMedium())) {
+                
partitionProperties.put(PropertyAnalyzer.PROPERTIES_STORAGE_MEDIUM,
+                        olapTable.getStorageMedium().name());
+            }
             AddPartitionClause addPartitionClause = new 
AddPartitionClause(singleRangePartitionDesc,
                     distributionDesc, partitionProperties, false);
             result.put(partitionName, addPartitionClause);
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/service/FrontendServiceImplTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/service/FrontendServiceImplTest.java
index 36a7447e2e4..715a96c236b 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/service/FrontendServiceImplTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/service/FrontendServiceImplTest.java
@@ -25,8 +25,10 @@ import org.apache.doris.catalog.Env;
 import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.catalog.Partition;
 import org.apache.doris.common.Config;
+import org.apache.doris.common.ConfigBase;
 import org.apache.doris.common.FeConstants;
 import org.apache.doris.qe.ConnectContext;
+import org.apache.doris.qe.ShowResultSet;
 import org.apache.doris.tablefunction.BackendsTableValuedFunction;
 import org.apache.doris.thrift.TBackendsMetadataParams;
 import org.apache.doris.thrift.TCreatePartitionRequest;
@@ -132,6 +134,51 @@ public class FrontendServiceImplTest {
         Assert.assertNotNull(p20230807);
     }
 
+    @Test
+    public void testCreatePartitionRangeMedium() throws Exception {
+        ConfigBase.setMutableConfig("disable_storage_medium_check", "true");
+        String createOlapTblStmt = new String("CREATE TABLE 
test.partition_range2(\n"
+                + "    event_day DATETIME NOT NULL,\n"
+                + "    site_id INT DEFAULT '10',\n"
+                + "    city_code VARCHAR(100)\n"
+                + ")\n"
+                + "DUPLICATE KEY(event_day, site_id, city_code)\n"
+                + "AUTO PARTITION BY range (date_trunc( event_day,'day')) (\n"
+                + "\n"
+                + ")\n"
+                + "DISTRIBUTED BY HASH(event_day, site_id) BUCKETS 2\n"
+                + "PROPERTIES(\"storage_medium\" = \"ssd\",\"replication_num\" 
= \"1\");");
+
+        createTable(createOlapTblStmt);
+        Database db = 
Env.getCurrentInternalCatalog().getDbOrAnalysisException("test");
+        OlapTable table = (OlapTable) 
db.getTableOrAnalysisException("partition_range2");
+
+        List<List<TNullableStringLiteral>> partitionValues = new ArrayList<>();
+        List<TNullableStringLiteral> values = new ArrayList<>();
+
+        TNullableStringLiteral start = new TNullableStringLiteral();
+        start.setValue("2023-08-07 00:00:00");
+        values.add(start);
+
+        partitionValues.add(values);
+
+        FrontendServiceImpl impl = new FrontendServiceImpl(exeEnv);
+        TCreatePartitionRequest request = new TCreatePartitionRequest();
+        request.setDbId(db.getId());
+        request.setTableId(table.getId());
+        request.setPartitionValues(partitionValues);
+        TCreatePartitionResult partition = impl.createPartition(request);
+
+        Assert.assertEquals(partition.getStatus().getStatusCode(), 
TStatusCode.OK);
+        Partition p20230807 = table.getPartition("p20230807000000");
+        Assert.assertNotNull(p20230807);
+
+        ShowResultSet result = 
UtFrameUtils.showPartitionsByName(connectContext, "test.partition_range2");
+        String showCreateTableResultSql = 
result.getResultRows().get(0).get(10);
+        System.out.println(showCreateTableResultSql);
+        Assert.assertEquals(showCreateTableResultSql, "SSD");
+    }
+
     @Test
     public void testCreatePartitionList() throws Exception {
         String createOlapTblStmt = new String("CREATE TABLE 
test.partition_list(\n"


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

Reply via email to