This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new f6d98a6061a branch-2.1: [Bug](auto-partition) fix auto partition could
set storage_medium properties #45955 (#46260)
f6d98a6061a is described below
commit f6d98a6061ae7d7e720d6d5f381a1706b4622e4f
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Jan 2 16:38:55 2025 +0800
branch-2.1: [Bug](auto-partition) fix auto partition could set
storage_medium properties #45955 (#46260)
Cherry-picked from #45955
Co-authored-by: zhangstar333 <[email protected]>
---
.../apache/doris/analysis/PartitionExprUtil.java | 9 +++-
.../doris/service/FrontendServiceImplTest.java | 51 +++++++++++++++++++++-
2 files changed, 57 insertions(+), 3 deletions(-)
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 2e5a4e07456..e145b0c6880 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;
@@ -53,7 +55,6 @@ import org.junit.Test;
import org.junit.rules.ExpectedException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
@@ -132,6 +133,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"
@@ -185,7 +231,8 @@ public class FrontendServiceImplTest {
TGetDbsResult dbNames = impl.getDbNames(params);
Assert.assertEquals(dbNames.getDbs().size(), 2);
- Assert.assertEquals(dbNames.getDbs(), Arrays.asList("test", "test_"));
+ Assert.assertTrue(dbNames.getDbs().contains("test"));
+ Assert.assertTrue(dbNames.getDbs().contains("test_"));
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]