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 <[email protected]>
---
.../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: [email protected]
For additional commands, e-mail: [email protected]