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]

Reply via email to