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