This is an automated email from the ASF dual-hosted git repository. morrysnow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 7b9fab11701 [Fix](nereids) change char(0) to char(1), varchar(0) to varchar(65533) when create table (#38427) 7b9fab11701 is described below commit 7b9fab1170181beabcf72ab476b9a1e7dcd987c0 Author: feiniaofeiafei <53502832+feiniaofeia...@users.noreply.github.com> AuthorDate: Tue Jul 30 11:14:56 2024 +0800 [Fix](nereids) change char(0) to char(1), varchar(0) to varchar(65533) when create table (#38427) --- .../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 5f7b52b1910..1d1f82f3fd6 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 @@ -37,6 +37,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; @@ -187,10 +188,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..1d3b8409d65 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: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org