This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 176be48f25a [fix](mtmv)fix generate partition name illegality when
partition value contains colon (#31282)
176be48f25a is described below
commit 176be48f25a6cbbc1a262790064a6bbacf3a5417
Author: zhangdong <[email protected]>
AuthorDate: Fri Feb 23 17:59:44 2024 +0800
[fix](mtmv)fix generate partition name illegality when partition value
contains colon (#31282)
---
.../src/main/java/org/apache/doris/mtmv/MTMVPartitionUtil.java | 9 ++++++---
.../test/java/org/apache/doris/mtmv/MTMVPartitionUtilTest.java | 4 ++--
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionUtil.java
b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionUtil.java
index a4f3f4cb53e..6657b3d243f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionUtil.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionUtil.java
@@ -45,9 +45,13 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
public class MTMVPartitionUtil {
private static final Logger LOG =
LogManager.getLogger(MTMVPartitionUtil.class);
+ private static final Pattern PARTITION_NAME_PATTERN =
Pattern.compile("[^a-zA-Z0-9,]");
+ private static final String PARTITION_NAME_PREFIX = "p_";
/**
* Determine whether the partition is sync with retated partition and
other baseTables
@@ -286,9 +290,8 @@ public class MTMVPartitionUtil {
* @return
*/
public static String generatePartitionName(PartitionKeyDesc desc) {
- String partitionName = "p_";
- partitionName +=
desc.toSql().trim().replaceAll("\\(|\\)|\\-|\\[|\\]|'|\\s+", "")
- .replaceAll("\\(|\\)|\\,|\\[|\\]", "_");
+ Matcher matcher = PARTITION_NAME_PATTERN.matcher(desc.toSql());
+ String partitionName = PARTITION_NAME_PREFIX +
matcher.replaceAll("").replaceAll("\\,", "_");
if (partitionName.length() > 50) {
partitionName = partitionName.substring(0, 30) +
Math.abs(Objects.hash(partitionName))
+ "_" + System.currentTimeMillis();
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVPartitionUtilTest.java
b/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVPartitionUtilTest.java
index 4bb74bfd448..62f2fd5ff58 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVPartitionUtilTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVPartitionUtilTest.java
@@ -171,11 +171,11 @@ public class MTMVPartitionUtilTest {
@Test
public void testGeneratePartitionName() {
List<List<PartitionValue>> inValues = Lists.newArrayList();
- inValues.add(Lists.newArrayList(new PartitionValue("value11"), new
PartitionValue("value12")));
+ inValues.add(Lists.newArrayList(new PartitionValue("20201010
01:01:01"), new PartitionValue("value12")));
inValues.add(Lists.newArrayList(new PartitionValue("value21"), new
PartitionValue("value22")));
PartitionKeyDesc inDesc = PartitionKeyDesc.createIn(inValues);
String inName = MTMVPartitionUtil.generatePartitionName(inDesc);
- Assert.assertEquals("p_value11_value12_value21_value22", inName);
+ Assert.assertEquals("p_20201010010101_value12_value21_value22",
inName);
PartitionKeyDesc rangeDesc = PartitionKeyDesc.createFixed(
Lists.newArrayList(new PartitionValue(1L)),
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]