You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by w4...@apache.org on 2024/09/24 07:18:33 UTC
(doris) 01/01: [fix](analysis) Fix ColumnDef to sql result
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 <w4...@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-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org