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 ef860142e7c branch-3.0: [fix](sql) Wrong result for partition item 
tosql #45918 (#45959)
ef860142e7c is described below

commit ef860142e7c814a78b30815bffd7c3f4c7724fcb
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Dec 27 19:34:54 2024 +0800

    branch-3.0: [fix](sql) Wrong result for partition item tosql #45918 (#45959)
    
    Cherry-picked from #45918
    
    Co-authored-by: Uniqueyou <wangyix...@selectdb.com>
---
 .../apache/doris/catalog/ListPartitionItem.java    |  9 +---
 .../doris/catalog/ListPartitionInfoTest.java       | 57 ++++++++++++++++++++++
 2 files changed, 59 insertions(+), 7 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/ListPartitionItem.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/ListPartitionItem.java
index 98585381244..6edabea442e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/ListPartitionItem.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/ListPartitionItem.java
@@ -189,10 +189,7 @@ public class ListPartitionItem extends PartitionItem {
 
     public String toSql() {
         StringBuilder sb = new StringBuilder();
-        int size = partitionKeys.size();
-        if (size > 1) {
-            sb.append("(");
-        }
+        sb.append("(");
 
         int i = 0;
         for (PartitionKey partitionKey : partitionKeys) {
@@ -203,9 +200,7 @@ public class ListPartitionItem extends PartitionItem {
             i++;
         }
 
-        if (size > 1) {
-            sb.append(")");
-        }
+        sb.append(")");
 
         return sb.toString();
     }
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/catalog/ListPartitionInfoTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/catalog/ListPartitionInfoTest.java
index fe5f2fa0070..2caee8e7b68 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/catalog/ListPartitionInfoTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/catalog/ListPartitionInfoTest.java
@@ -248,4 +248,61 @@ public class ListPartitionInfoTest {
         String expected = "AUTO PARTITION BY LIST (`k1`, `k2`)";
         Assert.assertTrue("got: " + sql + ", should have: " + expected, 
sql.contains(expected));
     }
+
+    @Test
+    public void testListPartitionNullMax() throws AnalysisException, 
DdlException {
+        PartitionItem partitionItem = null;
+        Column k1 = new Column("k1", new ScalarType(PrimitiveType.INT), true, 
null, "", "");
+        Column k2 = new Column("k2", new ScalarType(PrimitiveType.INT), true, 
null, "", "");
+        partitionColumns.add(k1);
+        partitionColumns.add(k2);
+        partitionInfo = new ListPartitionInfo(partitionColumns);
+
+        List<List<PartitionValue>> inValues = new ArrayList<>();
+        inValues.add(Lists.newArrayList(new PartitionValue("", true), 
PartitionValue.MAX_VALUE));
+        SinglePartitionDesc singlePartitionDesc = new 
SinglePartitionDesc(false, "p1",
+                PartitionKeyDesc.createIn(inValues), null);
+        singlePartitionDesc.analyze(2, null);
+        partitionItem = 
partitionInfo.handleNewSinglePartitionDesc(singlePartitionDesc, 20000L, false);
+
+        Assert.assertEquals("((NULL, MAXVALUE))", ((ListPartitionItem) 
partitionItem).toSql());
+
+        inValues = new ArrayList<>();
+        inValues.add(Lists.newArrayList(new PartitionValue("", true), new 
PartitionValue("", true)));
+        singlePartitionDesc = new SinglePartitionDesc(false, "p2",
+        PartitionKeyDesc.createIn(inValues), null);
+        singlePartitionDesc.analyze(2, null);
+        partitionItem = 
partitionInfo.handleNewSinglePartitionDesc(singlePartitionDesc, 20000L, false);
+
+        Assert.assertEquals("((NULL, NULL))", ((ListPartitionItem) 
partitionItem).toSql());
+
+        inValues = new ArrayList<>();
+        inValues.add(Lists.newArrayList(PartitionValue.MAX_VALUE, new 
PartitionValue("", true)));
+        singlePartitionDesc = new SinglePartitionDesc(false, "p3",
+        PartitionKeyDesc.createIn(inValues), null);
+        singlePartitionDesc.analyze(2, null);
+        partitionItem = 
partitionInfo.handleNewSinglePartitionDesc(singlePartitionDesc, 20000L, false);
+
+        Assert.assertEquals("((MAXVALUE, NULL))", ((ListPartitionItem) 
partitionItem).toSql());
+
+        inValues = new ArrayList<>();
+        inValues.add(Lists.newArrayList(PartitionValue.MAX_VALUE, 
PartitionValue.MAX_VALUE));
+        singlePartitionDesc = new SinglePartitionDesc(false, "p4",
+        PartitionKeyDesc.createIn(inValues), null);
+        singlePartitionDesc.analyze(2, null);
+        partitionItem = 
partitionInfo.handleNewSinglePartitionDesc(singlePartitionDesc, 20000L, false);
+
+        Assert.assertEquals("((MAXVALUE, MAXVALUE))", ((ListPartitionItem) 
partitionItem).toSql());
+
+        inValues = new ArrayList<>();
+        inValues.add(Lists.newArrayList(new PartitionValue("", true), new 
PartitionValue("", true)));
+        inValues.add(Lists.newArrayList(PartitionValue.MAX_VALUE, new 
PartitionValue("", true)));
+        inValues.add(Lists.newArrayList(new PartitionValue("", true), 
PartitionValue.MAX_VALUE));
+        singlePartitionDesc = new SinglePartitionDesc(false, "p5",
+        PartitionKeyDesc.createIn(inValues), null);
+        singlePartitionDesc.analyze(2, null);
+        partitionItem = 
partitionInfo.handleNewSinglePartitionDesc(singlePartitionDesc, 20000L, false);
+
+        Assert.assertEquals("((NULL, NULL),(MAXVALUE, NULL),(NULL, 
MAXVALUE))", ((ListPartitionItem) partitionItem).toSql());
+    }
 }


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

Reply via email to