Skip to content

Commit

Permalink
[fix](ip) fix ip nullable param without check (apache#44700)
Browse files Browse the repository at this point in the history
if we use ipv6_cidr_to_range function with nullable func which with
invalid ipv6 will make be core
```
mysql> select id, ipv6_cidr_to_range(nullable(''), 32) from fn_test_ip_nullable order by id;
```
  • Loading branch information
amorynan authored Dec 3, 2024
1 parent 7ee8681 commit 702ca90
Show file tree
Hide file tree
Showing 4 changed files with 256 additions and 57 deletions.
74 changes: 25 additions & 49 deletions be/src/vec/functions/function_ip.h
Original file line number Diff line number Diff line change
Expand Up @@ -871,6 +871,11 @@ class FunctionIPv4CIDRToRange : public IFunction {
}
};

/**
* this function accepts two arguments: an IPv6 address and a CIDR mask
* IPv6 address can be either ipv6 type or string type as ipv6 string address
* FE: PropagateNullable is used to handle nullable columns
*/
class FunctionIPv6CIDRToRange : public IFunction {
public:
static constexpr auto name = "ipv6_cidr_to_range";
Expand Down Expand Up @@ -902,12 +907,14 @@ class FunctionIPv6CIDRToRange : public IFunction {

if (addr_type.is_ipv6()) {
const auto* ipv6_addr_column = assert_cast<const ColumnIPv6*>(addr_column.get());
col_res = execute_impl<ColumnIPv6>(*ipv6_addr_column, *cidr_col, input_rows_count,
add_col_const, col_const);
col_res = execute_impl(*ipv6_addr_column, *cidr_col, input_rows_count, add_col_const,
col_const);
} else if (addr_type.is_string()) {
const auto* str_addr_column = assert_cast<const ColumnString*>(addr_column.get());
col_res = execute_impl<ColumnString>(*str_addr_column, *cidr_col, input_rows_count,
add_col_const, col_const);
ColumnPtr col_ipv6 =
convert_to_ipv6<IPConvertExceptionMode::Throw>(addr_column, nullptr);
const auto* ipv6_addr_column = assert_cast<const ColumnIPv6*>(col_ipv6.get());
col_res = execute_impl(*ipv6_addr_column, *cidr_col, input_rows_count, add_col_const,
col_const);
} else {
return Status::RuntimeError(
"Illegal column {} of argument of function {}, Expected IPv6 or String",
Expand All @@ -918,8 +925,7 @@ class FunctionIPv6CIDRToRange : public IFunction {
return Status::OK();
}

template <typename FromColumn>
static ColumnPtr execute_impl(const FromColumn& from_column, const ColumnInt16& cidr_column,
static ColumnPtr execute_impl(const ColumnIPv6& from_column, const ColumnInt16& cidr_column,
size_t input_rows_count, bool is_addr_const = false,
bool is_cidr_const = false) {
auto col_res_lower_range = ColumnIPv6::create(input_rows_count, 0);
Expand All @@ -936,20 +942,10 @@ class FunctionIPv6CIDRToRange : public IFunction {
throw Exception(ErrorCode::INVALID_ARGUMENT, "Illegal cidr value '{}'",
std::to_string(cidr));
}
if constexpr (std::is_same_v<FromColumn, ColumnString>) {
// 16 bytes ipv6 string is stored in big-endian byte order
// so transfer to little-endian firstly
auto* src_data = const_cast<char*>(from_column.get_data_at(0).data);
std::reverse(src_data, src_data + IPV6_BINARY_LENGTH);
apply_cidr_mask(src_data, reinterpret_cast<char*>(&vec_res_lower_range[i]),
reinterpret_cast<char*>(&vec_res_upper_range[i]),
cast_set<UInt8>(cidr));
} else {
apply_cidr_mask(from_column.get_data_at(0).data,
reinterpret_cast<char*>(&vec_res_lower_range[i]),
reinterpret_cast<char*>(&vec_res_upper_range[i]),
cast_set<UInt8>(cidr));
}
apply_cidr_mask(from_column.get_data_at(0).data,
reinterpret_cast<char*>(&vec_res_lower_range[i]),
reinterpret_cast<char*>(&vec_res_upper_range[i]),
cast_set<UInt8>(cidr));
}
} else if (is_cidr_const) {
auto cidr = cidr_column.get_int(0);
Expand All @@ -958,20 +954,10 @@ class FunctionIPv6CIDRToRange : public IFunction {
std::to_string(cidr));
}
for (size_t i = 0; i < input_rows_count; ++i) {
if constexpr (std::is_same_v<FromColumn, ColumnString>) {
// 16 bytes ipv6 string is stored in big-endian byte order
// so transfer to little-endian firstly
auto* src_data = const_cast<char*>(from_column.get_data_at(i).data);
std::reverse(src_data, src_data + IPV6_BINARY_LENGTH);
apply_cidr_mask(src_data, reinterpret_cast<char*>(&vec_res_lower_range[i]),
reinterpret_cast<char*>(&vec_res_upper_range[i]),
cast_set<UInt8>(cidr));
} else {
apply_cidr_mask(from_column.get_data_at(i).data,
reinterpret_cast<char*>(&vec_res_lower_range[i]),
reinterpret_cast<char*>(&vec_res_upper_range[i]),
cast_set<UInt8>(cidr));
}
apply_cidr_mask(from_column.get_data_at(i).data,
reinterpret_cast<char*>(&vec_res_lower_range[i]),
reinterpret_cast<char*>(&vec_res_upper_range[i]),
cast_set<UInt8>(cidr));
}
} else {
for (size_t i = 0; i < input_rows_count; ++i) {
Expand All @@ -980,20 +966,10 @@ class FunctionIPv6CIDRToRange : public IFunction {
throw Exception(ErrorCode::INVALID_ARGUMENT, "Illegal cidr value '{}'",
std::to_string(cidr));
}
if constexpr (std::is_same_v<FromColumn, ColumnString>) {
// 16 bytes ipv6 string is stored in big-endian byte order
// so transfer to little-endian firstly
auto* src_data = const_cast<char*>(from_column.get_data_at(i).data);
std::reverse(src_data, src_data + IPV6_BINARY_LENGTH);
apply_cidr_mask(src_data, reinterpret_cast<char*>(&vec_res_lower_range[i]),
reinterpret_cast<char*>(&vec_res_upper_range[i]),
cast_set<UInt8>(cidr));
} else {
apply_cidr_mask(from_column.get_data_at(i).data,
reinterpret_cast<char*>(&vec_res_lower_range[i]),
reinterpret_cast<char*>(&vec_res_upper_range[i]),
cast_set<UInt8>(cidr));
}
apply_cidr_mask(from_column.get_data_at(i).data,
reinterpret_cast<char*>(&vec_res_lower_range[i]),
reinterpret_cast<char*>(&vec_res_upper_range[i]),
cast_set<UInt8>(cidr));
}
}
return ColumnStruct::create(
Expand Down
204 changes: 204 additions & 0 deletions regression-test/data/nereids_function_p0/scalar_function/IP.out
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,108 @@
99 {"min":"224.0.0.0", "max":"224.0.255.255"}
100 {"min":"224.0.0.0", "max":"224.0.255.255"}

-- !sql_cidr_ipv6_nullable_ --
1 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
2 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
3 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
4 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
5 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
6 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
7 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
8 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
9 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
10 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
11 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
12 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
13 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
14 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
15 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
16 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
17 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
18 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
19 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
20 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
21 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
22 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
23 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
24 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
25 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
26 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
27 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
28 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
29 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
30 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
31 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
32 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
33 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
34 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
35 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
36 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
37 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
38 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
39 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
40 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
41 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
42 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
43 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
44 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
45 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
46 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
47 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
48 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
49 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
50 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
51 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
52 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
53 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
54 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
55 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
56 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
57 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
58 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
59 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
60 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
61 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
62 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
63 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
64 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
65 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
66 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
67 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
68 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
69 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
70 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
71 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
72 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
73 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
74 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
75 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
76 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
77 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
78 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
79 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
80 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
81 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
82 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
83 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
84 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
85 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
86 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
87 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
88 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
89 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
90 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
91 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
92 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
93 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
94 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
95 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
96 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
97 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
98 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
99 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
100 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}

-- !sql_num2string_ipv6 --
1 ::1
2 fc00::
Expand Down Expand Up @@ -6121,6 +6223,108 @@
99 {"min":"224.0.0.0", "max":"224.0.255.255"}
100 {"min":"224.0.0.0", "max":"224.0.255.255"}

-- !sql_not_null_cidr_ipv6_nullable_ --
1 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
2 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
3 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
4 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
5 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
6 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
7 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
8 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
9 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
10 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
11 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
12 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
13 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
14 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
15 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
16 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
17 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
18 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
19 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
20 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
21 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
22 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
23 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
24 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
25 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
26 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
27 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
28 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
29 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
30 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
31 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
32 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
33 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
34 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
35 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
36 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
37 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
38 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
39 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
40 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
41 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
42 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
43 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
44 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
45 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
46 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
47 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
48 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
49 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
50 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
51 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
52 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
53 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
54 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
55 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
56 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
57 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
58 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
59 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
60 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
61 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
62 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
63 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
64 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
65 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
66 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
67 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
68 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
69 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
70 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
71 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
72 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
73 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
74 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
75 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
76 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
77 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
78 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
79 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
80 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
81 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
82 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
83 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
84 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
85 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
86 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
87 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
88 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
89 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
90 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
91 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
92 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
93 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
94 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
95 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
96 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
97 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
98 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
99 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}
100 {"min":"::", "max":"::ffff:ffff:ffff:ffff:ffff:ffff"}

-- !sql_not_null_ipv6_string_to_num --
1 00000000000000000000000000000001
2 FC000000000000000000000000000000
Expand Down
Loading

0 comments on commit 702ca90

Please sign in to comment.