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