From 43c1066bc7c820317ae0da9cd96246b87ebf1add Mon Sep 17 00:00:00 2001 From: walter Date: Thu, 26 Sep 2024 14:11:13 +0800 Subject: [PATCH] [fix](analysis) Fix ColumnDef to sql result #41205 (#41325) cherry pick from #41205 --- .../java/org/apache/doris/analysis/ColumnDef.java | 13 ++++++++++++- .../org/apache/doris/analysis/ColumnDefTest.java | 8 +++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java index bc722d3a1d69af..50498846ec43a1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java @@ -166,6 +166,17 @@ public String getValue() { } return value; } + + public String toSql() { + StringBuilder sb = new StringBuilder(); + sb.append("DEFAULT "); + if (value != null) { + sb.append('"').append(value).append('"'); + } else { + sb.append("NULL"); + } + return sb.toString(); + } } // parameter initialized in constructor @@ -582,7 +593,7 @@ public String toSql() { } if (defaultValue.isSet) { - sb.append("DEFAULT \"").append(defaultValue.value).append("\" "); + sb.append(defaultValue.toSql()).append(" "); } sb.append("COMMENT \"").append(comment).append("\""); diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/ColumnDefTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/ColumnDefTest.java index fc9bd4a7ac6c14..9649b8523d69ca 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ColumnDefTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ColumnDefTest.java @@ -89,7 +89,7 @@ public void testReplaceIfNotNull() throws AnalysisException { ColumnDef column = new ColumnDef("col", intCol, false, AggregateType.REPLACE_IF_NOT_NULL, false, DefaultValue.NOT_SET, ""); column.analyze(true); Assert.assertEquals(AggregateType.REPLACE_IF_NOT_NULL, column.getAggregateType()); - Assert.assertEquals("`col` int REPLACE_IF_NOT_NULL NULL DEFAULT \"null\" COMMENT \"\"", column.toSql()); + Assert.assertEquals("`col` int REPLACE_IF_NOT_NULL NULL DEFAULT NULL COMMENT \"\"", column.toSql()); } // CHECKSTYLE IGNORE THIS LINE { // CHECKSTYLE IGNORE THIS LINE // not allow null @@ -98,6 +98,12 @@ public void testReplaceIfNotNull() throws AnalysisException { Assert.assertEquals(AggregateType.REPLACE_IF_NOT_NULL, column.getAggregateType()); Assert.assertEquals("`col` int REPLACE_IF_NOT_NULL NULL DEFAULT \"10\" COMMENT \"\"", column.toSql()); } // CHECKSTYLE IGNORE THIS LINE + { // CHECKSTYLE IGNORE THIS LINE + ColumnDef column = new ColumnDef("col", intCol, false, AggregateType.REPLACE_IF_NOT_NULL, true, DefaultValue.NULL_DEFAULT_VALUE, ""); + column.analyze(true); + Assert.assertEquals(AggregateType.REPLACE_IF_NOT_NULL, column.getAggregateType()); + Assert.assertEquals("`col` int REPLACE_IF_NOT_NULL NULL DEFAULT NULL COMMENT \"\"", column.toSql()); + } // CHECKSTYLE IGNORE THIS LINE } @Test(expected = AnalysisException.class)