branch-2.1: [fix](ip)fix default value for ip #45194 (#45392)

Cherry-picked from #45194

Co-authored-by: amory <wangqiannan@selectdb.com>
This commit is contained in:
github-actions[bot]
2024-12-16 14:38:12 +08:00
committed by GitHub
parent d13241115d
commit 4df7069e59
5 changed files with 65 additions and 2 deletions

View File

@ -545,6 +545,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);
}

View File

@ -112,7 +112,7 @@ public class IPv4Literal extends LiteralExpr {
@Override
protected String toSqlImpl() {
return getStringValue();
return "\"" + getStringValue() + "\"";
}
@Override

View File

@ -72,7 +72,7 @@ public class IPv6Literal extends LiteralExpr {
@Override
protected String toSqlImpl() {
return getStringValue();
return "\"" + getStringValue() + "\"";
}
@Override

View File

@ -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

View File

@ -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 """
}