This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-4.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.1 by this push:
new 4104d3293d6 branch-4.1: [fix](variant) clamp
variant_sparse_hash_shard_count to >=1 in SHOW CREATE output #63661 (#63717)
4104d3293d6 is described below
commit 4104d3293d657aa7d9ceae2c80483b0f4284e832
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed May 27 15:46:18 2026 +0800
branch-4.1: [fix](variant) clamp variant_sparse_hash_shard_count to >=1 in
SHOW CREATE output #63661 (#63717)
Cherry-picked from #63661
Co-authored-by: Chenyang Sun <[email protected]>
Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
---
.../java/org/apache/doris/catalog/VariantType.java | 3 +-
.../apache/doris/nereids/types/VariantType.java | 3 +-
.../ddl/create_nestedtypes_with_schemachange.out | 12 ++---
regression-test/data/variant_p0/desc.out | 50 +++++++++---------
regression-test/data/variant_p0/nested.out | 2 +-
regression-test/data/variant_p0/nested2.out | 8 +--
.../test_doris_24269_create_table_like.groovy | 59 ++++++++++++++++++++++
7 files changed, 99 insertions(+), 38 deletions(-)
diff --git
a/fe/fe-common/src/main/java/org/apache/doris/catalog/VariantType.java
b/fe/fe-common/src/main/java/org/apache/doris/catalog/VariantType.java
index df24768c180..b3b34b2a045 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/catalog/VariantType.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/VariantType.java
@@ -183,8 +183,9 @@ public class VariantType extends ScalarType {
sb.append("\"variant_max_sparse_column_statistics_size\" = \"")
.append(String.valueOf(variantMaxSparseColumnStatisticsSize)).append("\"");
sb.append(",");
+ // Output at least 1 for backward compatibility: old data without
this parameter defaults to 0
sb.append("\"variant_sparse_hash_shard_count\" = \"")
-
.append(String.valueOf(variantSparseHashShardCount)).append("\"");
+ .append(String.valueOf(Math.max(1,
variantSparseHashShardCount))).append("\"");
}
sb.append(")>");
return sb.toString();
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/VariantType.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/VariantType.java
index 5ae317db058..4b54aad5414 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/VariantType.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/VariantType.java
@@ -180,8 +180,9 @@ public class VariantType extends PrimitiveType {
.append(String.valueOf(variantMaxSparseColumnStatisticsSize))
.append("\"");
sb.append(",");
+ // Output at least 1 for backward compatibility: old data without
this parameter defaults to 0
sb.append("\"variant_sparse_hash_shard_count\" = \"")
-
.append(String.valueOf(variantSparseHashShardCount))
+ .append(String.valueOf(Math.max(1,
variantSparseHashShardCount)))
.append("\"");
}
if (enableNestedGroup) {
diff --git
a/regression-test/data/datatype_p0/nested_types/ddl/create_nestedtypes_with_schemachange.out
b/regression-test/data/datatype_p0/nested_types/ddl/create_nestedtypes_with_schemachange.out
index bba5c8bd1f0..86cce3569f7 100644
---
a/regression-test/data/datatype_p0/nested_types/ddl/create_nestedtypes_with_schemachange.out
+++
b/regression-test/data/datatype_p0/nested_types/ddl/create_nestedtypes_with_schemachange.out
@@ -53,7 +53,7 @@ col2 int No false \N NONE
col3 array<int> Yes false \N NONE
col4 map<int,int> Yes false \N NONE
col5 struct<f1:int> Yes false \N NONE
-col6 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"0","variant_sparse_hash_shard_count" = "0")> Yes false \N NONE
+col6 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"0","variant_sparse_hash_shard_count" = "1")> Yes false \N NONE
-- !sql_after --
1 2 [1, 2] {1:2} {"f1":1} {"a":[1, 2, 3]}
@@ -67,7 +67,7 @@ col2 int No false \N NONE
col3 array<int> Yes false \N NONE
col4 map<int,int> No false \N NONE
col5 struct<f1:int> No false \N NONE
-col6 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"0","variant_sparse_hash_shard_count" = "0")> No false \N NONE
+col6 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"0","variant_sparse_hash_shard_count" = "1")> No false \N NONE
-- !sql_after --
1 2 [1, 2] {1:2} {"f1":1} {"a":[1, 2, 3]}
@@ -81,7 +81,7 @@ col2 int No false \N NONE
col3 array<int> Yes false \N NONE
col4 map<int,int> Yes false \N NONE
col5 struct<f1:int> Yes false \N NONE
-col6 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"0","variant_sparse_hash_shard_count" = "0")> Yes false \N NONE
+col6 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"0","variant_sparse_hash_shard_count" = "1")> Yes false \N NONE
-- !sql_after --
1 2 [1, 2] {1:2} {"f1":1} {"a":[1, 2, 3]}
@@ -95,7 +95,7 @@ col2 int No false \N NONE
col3 array<int> No false \N NONE
col4 map<int,int> Yes false \N NONE
col5 struct<f1:int> No false \N NONE
-col6 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"0","variant_sparse_hash_shard_count" = "0")> No false \N NONE
+col6 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"0","variant_sparse_hash_shard_count" = "1")> No false \N NONE
-- !sql_after --
1 2 [1, 2] {1:2} {"f1":1} {"a":[1, 2, 3]}
@@ -109,7 +109,7 @@ col2 int No false \N NONE
col3 array<int> Yes false \N NONE
col4 map<int,int> Yes false \N NONE
col5 struct<f1:int> Yes false \N NONE
-col6 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"0","variant_sparse_hash_shard_count" = "0")> Yes false \N NONE
+col6 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"0","variant_sparse_hash_shard_count" = "1")> Yes false \N NONE
-- !sql_after --
1 2 [1, 2] {1:2} {"f1":1} {"a":[1, 2, 3]}
@@ -123,7 +123,7 @@ col2 int No false \N NONE
col3 array<int> No false \N NONE
col4 map<int,int> No false \N NONE
col5 struct<f1:int> Yes false \N NONE
-col6 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"0","variant_sparse_hash_shard_count" = "0")> No false \N NONE
+col6 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"0","variant_sparse_hash_shard_count" = "1")> No false \N NONE
-- !sql_after --
1 2 [1, 2] {1:2} {"f1":1} {"a":[1, 2, 3]}
diff --git a/regression-test/data/variant_p0/desc.out
b/regression-test/data/variant_p0/desc.out
index a43bbcf742c..7724a871326 100644
--- a/regression-test/data/variant_p0/desc.out
+++ b/regression-test/data/variant_p0/desc.out
@@ -1,19 +1,19 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !sql_1 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"2","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"2","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.xxxx text Yes false \N NONE
-- !sql_2 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"2","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"2","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.ddd.mxmxm array<json> Yes false \N NONE
-- !sql_3 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b json Yes false \N NONE
v.c.c bigint Yes false \N NONE
@@ -22,7 +22,7 @@ v.xxxx text Yes false \N NONE
-- !sql_6_1 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b json Yes false \N NONE
v.c.c bigint Yes false \N NONE
@@ -34,7 +34,7 @@ v.xxxx text Yes false \N NONE
-- !sql_6_2 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b json Yes false \N NONE
v.c.c bigint Yes false \N NONE
@@ -43,7 +43,7 @@ v.xxxx text Yes false \N NONE
-- !sql_6_3 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b json Yes false \N NONE
v.c.c bigint Yes false \N NONE
@@ -51,7 +51,7 @@ v.c.e double Yes false \N NONE
-- !sql_6 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b json Yes false \N NONE
v.c.c bigint Yes false \N NONE
@@ -63,7 +63,7 @@ v.xxxx text Yes false \N NONE
-- !sql_7 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b json Yes false \N NONE
v.c.c bigint Yes false \N NONE
@@ -72,13 +72,13 @@ v.xxxx text Yes false \N NONE
-- !sql_7_1 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.xxxx text Yes false \N NONE
-- !sql_7_2 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b json Yes false \N NONE
v.c.c bigint Yes false \N NONE
@@ -86,7 +86,7 @@ v.c.e double Yes false \N NONE
-- !sql_7_3 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b json Yes false \N NONE
v.c.c bigint Yes false \N NONE
@@ -95,9 +95,9 @@ v.xxxx text Yes false \N NONE
-- !sql_8 --
k bigint Yes true \N
-v1 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
-v2 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
-v3 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v1 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
+v2 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
+v3 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v1.a bigint Yes false \N NONE
v1.b json Yes false \N NONE
v1.c.c bigint Yes false \N NONE
@@ -112,11 +112,11 @@ v3.c.e double Yes false \N NONE
-- !sql_9 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
-- !sql_9_1 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b json Yes false \N NONE
v.c.c bigint Yes false \N NONE
@@ -125,7 +125,7 @@ v.oooo.xxxx.xxx bigint Yes false \N NONE
-- !sql_10 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.k1 bigint Yes false \N NONE
v.k2 text Yes false \N NONE
v.k3 array<bigint> Yes false \N NONE
@@ -134,8 +134,8 @@ v.k5 json Yes false \N NONE
-- !sql_10_1 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
-v2 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
+v2 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b json Yes false \N NONE
v.c.c bigint Yes false \N NONE
@@ -154,7 +154,7 @@ v2.oooo.xxxx.xxx bigint Yes false \N NONE
-- !sql_10_2 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b json Yes false \N NONE
v.c.c bigint Yes false \N NONE
@@ -173,8 +173,8 @@ v2.oooo.xxxx.xxx bigint Yes false \N NONE
-- !sql_10_3 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
-v3 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
+v3 variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b json Yes false \N NONE
v.c.c bigint Yes false \N NONE
@@ -193,7 +193,7 @@ v3.oooo.xxxx.xxx bigint Yes false \N NONE
-- !sql_11 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.!@#^&*() text Yes false \N NONE
v.名字 text Yes false \N NONE
v.画像.丬文 text Yes false \N NONE
@@ -202,11 +202,11 @@ v.金额 bigint Yes false \N NONE
-- !sql_12 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
-- !sql15 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.a bigint Yes false \N NONE
v.b bigint Yes false \N NONE
v.c bigint Yes false \N NONE
diff --git a/regression-test/data/variant_p0/nested.out
b/regression-test/data/variant_p0/nested.out
index 71a5f9ce53e..448be067df0 100644
--- a/regression-test/data/variant_p0/nested.out
+++ b/regression-test/data/variant_p0/nested.out
@@ -1,7 +1,7 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !sql --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"3","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"3","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.nested.a array<text> Yes false \N NONE
v.nested.aaa array<text> Yes false \N NONE
v.nested.ax1111 array<text> Yes false \N NONE
diff --git a/regression-test/data/variant_p0/nested2.out
b/regression-test/data/variant_p0/nested2.out
index c1b497b3ca6..763ce2675ae 100644
--- a/regression-test/data/variant_p0/nested2.out
+++ b/regression-test/data/variant_p0/nested2.out
@@ -1,7 +1,7 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !sql_desc_1 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.nested.a array<bigint> Yes false \N NONE
v.nested.b array<text> Yes false \N NONE
v.nested.c array<double> Yes false \N NONE
@@ -50,7 +50,7 @@ v.nested.c array<double> Yes false \N NONE
-- !sql_desc_2 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.nested.a array<json> Yes false \N NONE
v.nested.b array<json> Yes false \N NONE
v.nested.c array<double> Yes false \N NONE
@@ -169,7 +169,7 @@ v.nested.c array<double> Yes false \N NONE
-- !sql_desc_4 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.nested.a array<json> Yes false \N NONE
v.nested.b array<json> Yes false \N NONE
v.nested.c array<text> Yes false \N NONE
@@ -218,7 +218,7 @@ v.nested.c array<text> Yes false \N NONE
-- !sql_desc_5 --
k bigint Yes true \N
-v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "0")> Yes false \N
NONE
+v variant<PROPERTIES ("variant_max_subcolumns_count" =
"0","variant_enable_typed_paths_to_sparse" =
"false","variant_max_sparse_column_statistics_size" =
"10000","variant_sparse_hash_shard_count" = "1")> Yes false \N
NONE
v.nested.a array<json> Yes false \N NONE
v.nested.b array<json> Yes false \N NONE
v.nested.c array<json> Yes false \N NONE
diff --git
a/regression-test/suites/variant_p0/test_doris_24269_create_table_like.groovy
b/regression-test/suites/variant_p0/test_doris_24269_create_table_like.groovy
new file mode 100644
index 00000000000..0cbcbb5ed09
--- /dev/null
+++
b/regression-test/suites/variant_p0/test_doris_24269_create_table_like.groovy
@@ -0,0 +1,59 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+// DORIS-24269: creating a variant column without an explicit
+// variant_sparse_hash_shard_count used to serialize the column as
+// `"variant_sparse_hash_shard_count" = "0"` in SHOW CREATE TABLE,
+// which was then rejected when feeding that DDL back through
+// CREATE TABLE LIKE. The schema serializer now clamps the emitted
+// value to >= 1 for backward compatibility; this test guards the
+// round-trip.
+suite("test_doris_24269_create_table_like", "p0") {
+ def src = "test_doris_24269_objects"
+ def dst = "test_doris_24269_objects_like"
+
+ sql "DROP TABLE IF EXISTS ${src}"
+ sql "DROP TABLE IF EXISTS ${dst}"
+
+ sql """
+ CREATE TABLE ${src} (
+ `col_0` int NULL,
+ `col_1` varchar(64) NULL,
+ `col_2` tinyint NULL,
+ `col_3` bigint NULL,
+ `col_7` variant NULL,
+ INDEX objects_properties_idx (`col_7`) USING INVERTED
+ ) ENGINE = OLAP
+ UNIQUE KEY (`col_0`, `col_1`, `col_2`, `col_3`)
+ DISTRIBUTED BY HASH (`col_0`, `col_1`, `col_2`) BUCKETS 2
+ PROPERTIES (
+ "replication_num" = "1",
+ "enable_unique_key_merge_on_write" = "true"
+ )
+ """
+
+ // CREATE TABLE LIKE must succeed even though the source table left
+ // variant_sparse_hash_shard_count at its default value.
+ sql "CREATE TABLE ${dst} LIKE ${src}"
+
+ def srcSchema = sql "DESC ${src}"
+ def dstSchema = sql "DESC ${dst}"
+ assertEquals(srcSchema.size(), dstSchema.size())
+
+ sql "DROP TABLE IF EXISTS ${dst}"
+ sql "DROP TABLE IF EXISTS ${src}"
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]