From 4df7069e59ef7d2b5c52e766058d0cf71e61fc9a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 14:38:12 +0800 Subject: [PATCH] branch-2.1: [fix](ip)fix default value for ip #45194 (#45392) Cherry-picked from #45194 Co-authored-by: amory --- .../org/apache/doris/analysis/ColumnDef.java | 6 ++++ .../apache/doris/analysis/IPv4Literal.java | 2 +- .../apache/doris/analysis/IPv6Literal.java | 2 +- .../data/datatype_p0/ip/test_ip_basic.out | 31 +++++++++++++++++++ .../datatype_p0/ip/test_ip_basic.groovy | 26 ++++++++++++++++ 5 files changed, 65 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 3702f50277889b..160dbd4f868cd1 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 @@ -545,6 +545,12 @@ public static void validateDefaultValue(Type type, String defaultValue, DefaultV case BOOLEAN: new BoolLiteral(defaultValue); break; + case IPV4: + new IPv4Literal(defaultValue); + break; + case IPV6: + new IPv6Literal(defaultValue); + break; default: throw new AnalysisException("Unsupported type: " + type); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/IPv4Literal.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/IPv4Literal.java index b69bddf804c33f..11bf73569c12b4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/IPv4Literal.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/IPv4Literal.java @@ -112,7 +112,7 @@ public Expr clone() { @Override protected String toSqlImpl() { - return getStringValue(); + return "\"" + getStringValue() + "\""; } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/IPv6Literal.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/IPv6Literal.java index 33ca95aad36d40..4b4f99cfd73515 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/IPv6Literal.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/IPv6Literal.java @@ -72,7 +72,7 @@ private void checkValueValid(String ipv6) throws AnalysisException { @Override protected String toSqlImpl() { - return getStringValue(); + return "\"" + getStringValue() + "\""; } @Override diff --git a/regression-test/data/datatype_p0/ip/test_ip_basic.out b/regression-test/data/datatype_p0/ip/test_ip_basic.out index b69f9708a1b1fc..e1b85abe00c41b 100644 --- a/regression-test/data/datatype_p0/ip/test_ip_basic.out +++ b/regression-test/data/datatype_p0/ip/test_ip_basic.out @@ -373,3 +373,34 @@ ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 4 -- !sql -- 1 false 127.0.0.1 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff +-- !sql -- +1 5be8:dde9:7f0b:d5a7:bd01:b3be:9c69:573b 0.0.0.1 +2 :: 127.0.0.1 + +-- !sql -- +table_ip_default UNIQUE_KEYS col0 bigint bigint No true \N true + col4 ipv6 ipv6 Yes false :: NONE true + col24 ipv4 ipv4 Yes false 127.0.0.1 NONE true + +-- !sql -- +table_ip_default_like UNIQUE_KEYS col0 bigint bigint No true \N true + col4 ipv6 ipv6 Yes false :: NONE true + col24 ipv4 ipv4 Yes false 127.0.0.1 NONE true + +-- !sql -- +2 + +-- !sql -- +1 5be8:dde9:7f0b:d5a7:bd01:b3be:9c69:573b 0.0.0.1 +2 :: 127.0.0.1 + +-- !sql -- +0 + +-- !sql -- +0 + +-- !sql -- +1 5be8:dde9:7f0b:d5a7:bd01:b3be:9c69:573b 0.0.0.1 :: 127.0.0.1 +2 :: 127.0.0.1 :: 127.0.0.1 + diff --git a/regression-test/suites/datatype_p0/ip/test_ip_basic.groovy b/regression-test/suites/datatype_p0/ip/test_ip_basic.groovy index 468b6f6f146e14..5a4ab2ca94aca9 100644 --- a/regression-test/suites/datatype_p0/ip/test_ip_basic.groovy +++ b/regression-test/suites/datatype_p0/ip/test_ip_basic.groovy @@ -160,4 +160,30 @@ suite("test_ip_basic") { qt_sql """ select * from table_ip where col0 = 1""" sql """ Update table_ip set col25 = 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' where col0 = 1 """ qt_sql """ select * from table_ip where col0 = 1""" + + // test ip with default value + sql """ DROP TABLE IF EXISTS table_ip_default """ + sql """ CREATE TABLE IF NOT EXISTS `table_ip_default` (`col0` bigint NOT NULL, `col4` ipv6 NULL DEFAULT "::", `col24` ipv4 NULL DEFAULT "127.0.0.1") ENGINE=OLAP UNIQUE KEY(`col0`) DISTRIBUTED BY HASH(`col0`) BUCKETS 4 PROPERTIES ("replication_allocation" = "tag.location.default: 1") """ + sql """ insert into table_ip_default values (1, "5be8:dde9:7f0b:d5a7:bd01:b3be:9c69:573b", "0.0.0.1") """ + sql """ insert into table_ip_default(col0) values (2); """ + qt_sql """ select * from table_ip_default order by col0""" + // add cases for default value to make sure in all cases, the default value is not lost. + // show create table + // desc table + // create table like + // insert into table + // alter new ip column with default value + def result = sql """ show create table table_ip_default """ + log.info("show result : ${result}") + assertTrue(result.toString().containsIgnoreCase("`col4` ipv6 NULL DEFAULT \"::\"")) + assertTrue(result.toString().containsIgnoreCase("`col24` ipv4 NULL DEFAULT \"127.0.0.1\"")) + qt_sql """ desc table_ip_default all""" + sql """ DROP TABLE IF EXISTS table_ip_default_like """ + sql """ create table table_ip_default_like like table_ip_default """ + qt_sql """ desc table_ip_default_like all""" + qt_sql """ insert into table_ip_default_like select * from table_ip_default """ + qt_sql """ select * from table_ip_default_like order by col0 """ + qt_sql """ alter table table_ip_default_like add column col25 ipv6 NULL DEFAULT "::" """ + qt_sql """ alter table table_ip_default_like add column col26 ipv4 NULL DEFAULT "127.0.0.1" """ + qt_sql """ select * from table_ip_default_like order by col0 """ }