This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new de9b9d6a399 [Fix](nereids) change char(0) to char(1), varchar(0) to
varchar(65533) when create table (#38427) (#38530)
de9b9d6a399 is described below
commit de9b9d6a39978c6e4cd9daf7302aaf826c26780b
Author: feiniaofeiafei <[email protected]>
AuthorDate: Mon Aug 5 09:18:18 2024 +0800
[Fix](nereids) change char(0) to char(1), varchar(0) to varchar(65533) when
create table (#38427) (#38530)
cherry-pick #38427 to branch-2.1
---------
Co-authored-by: morrySnow <[email protected]>
---
.../doris/nereids/trees/plans/commands/info/ColumnDefinition.java | 7 ++++---
.../org/apache/doris/nereids/types/coercion/CharacterType.java | 4 ++++
regression-test/suites/ddl_p0/test_create_table.groovy | 8 ++++++++
3 files changed, 16 insertions(+), 3 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ColumnDefinition.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ColumnDefinition.java
index 352c3ec72da..049a0426073 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ColumnDefinition.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ColumnDefinition.java
@@ -36,6 +36,7 @@ import org.apache.doris.nereids.types.StructField;
import org.apache.doris.nereids.types.StructType;
import org.apache.doris.nereids.types.TinyIntType;
import org.apache.doris.nereids.types.VarcharType;
+import org.apache.doris.nereids.types.coercion.CharacterType;
import org.apache.doris.qe.SessionVariable;
import com.google.common.base.Preconditions;
@@ -163,10 +164,10 @@ public class ColumnDefinition {
.collect(ImmutableList.toImmutableList());
return new StructType(structFields);
} else {
- if (dataType.isStringLikeType()) {
- if (dataType instanceof CharType && ((CharType)
dataType).getLen() == -1) {
+ if (dataType.isStringLikeType() && !((CharacterType)
dataType).isLengthSet()) {
+ if (dataType instanceof CharType) {
return new CharType(1);
- } else if (dataType instanceof VarcharType && ((VarcharType)
dataType).getLen() == -1) {
+ } else if (dataType instanceof VarcharType) {
return new VarcharType(VarcharType.MAX_VARCHAR_LENGTH);
}
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/coercion/CharacterType.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/coercion/CharacterType.java
index da56e71c7b0..c02ea39e39a 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/coercion/CharacterType.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/coercion/CharacterType.java
@@ -57,4 +57,8 @@ public abstract class CharacterType extends PrimitiveType {
public int width() {
return WIDTH;
}
+
+ public boolean isLengthSet() {
+ return len > 0;
+ }
}
diff --git a/regression-test/suites/ddl_p0/test_create_table.groovy
b/regression-test/suites/ddl_p0/test_create_table.groovy
index a022f51e52a..724e7e062e1 100644
--- a/regression-test/suites/ddl_p0/test_create_table.groovy
+++ b/regression-test/suites/ddl_p0/test_create_table.groovy
@@ -50,4 +50,12 @@ suite("sql_create_time_range_table") {
assertTrue(result1.size() == 1)
assertTrue(result1[0].size() == 1)
assertTrue(result1[0][0] == 0, "Create table should update 0 rows")
+
+ sql "SET enable_nereids_planner=true;"
+ sql "SET enable_fallback_to_original_planner=false;"
+ sql "drop table if exists varchar_0_char_0"
+ sql "create table varchar_0_char_0 (id int, a varchar(0), b char(0))
distributed by hash(id) properties(\"replication_num\"=\"1\")\n"
+ def res_show = sql "show create table varchar_0_char_0"
+ mustContain(res_show[0][1], "VARCHAR(65533)")
+ mustContain(res_show[0][1], "CHAR(1)")
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]