This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push:
new 11b8b95db68 branch-3.0: [fix](ip)fix default value for ip #45194
(#45391)
11b8b95db68 is described below
commit 11b8b95db68c420d244a802ca789ca68c160bd4a
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Dec 16 14:36:49 2024 +0800
branch-3.0: [fix](ip)fix default value for ip #45194 (#45391)
Cherry-picked from #45194
Co-authored-by: amory <[email protected]>
---
.../java/org/apache/doris/analysis/ColumnDef.java | 6 +++++
.../org/apache/doris/analysis/IPv4Literal.java | 2 +-
.../org/apache/doris/analysis/IPv6Literal.java | 2 +-
.../data/datatype_p0/ip/test_ip_basic.out | 31 ++++++++++++++++++++++
.../suites/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 d95a463fe4a..3604d6843f3 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
@@ -646,6 +646,12 @@ public class ColumnDef {
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 6fa84d18b25..92063e6b9b3 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
@@ -115,7 +115,7 @@ public class IPv4Literal extends LiteralExpr {
@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 a3ec7a3a349..bb986e0ffe7 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
@@ -75,7 +75,7 @@ public class IPv6Literal extends LiteralExpr {
@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 b69f9708a1b..e1b85abe00c 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 468b6f6f146..5a4ab2ca94a 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 """
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]