This is an automated email from the ASF dual-hosted git repository. w41ter pushed a commit to branch fix_column_def_sql_result in repository https://gitbox.apache.org/repos/asf/doris.git
commit bda5eb26603217579267831daf79972be5603c9b Author: w41ter <w41te...@gmail.com> AuthorDate: Tue Sep 24 07:09:26 2024 +0000 [fix](analysis) Fix ColumnDef to sql result For sql: ``` ALTER TABLE table_3333338 ADD COLUMN col484 DATETIME(1) REPLACE_IF_NOT_NULL ``` the toSql result is: ``` ADD COLUMN `col484` datetimev2(1) REPLACE_IF_NOT_NULL NULL DEFAULT "null" COMMENT "" ``` the `DEFAULT "null"` is not a valid expr for datetime. This PR correct the behaviour of toSql of the NULL DEFAULT VALUE to `DEFAULT NULL`. --- .../main/java/org/apache/doris/analysis/ColumnDef.java | 15 ++++++++++++++- .../java/org/apache/doris/analysis/ColumnDefTest.java | 8 +++++++- 2 files changed, 21 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 9bd34e1410b..52255196bdb 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 @@ -175,9 +175,22 @@ public class ColumnDef { } return LocalDateTime.now(TimeUtils.getTimeZone().toZoneId()) .format(DateTimeFormatter.ofPattern(format)); + } else if (value == null) { + return "NULL"; } 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 @@ -662,7 +675,7 @@ public class ColumnDef { } 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 246dd5dc8ff..c8764a0a2e0 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 class ColumnDefTest { ColumnDef column = new ColumnDef("col", intCol, false, AggregateType.REPLACE_IF_NOT_NULL, true, 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 class ColumnDefTest { 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) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org