This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new fea3d44609b [fix](variant) clamp variant_sparse_hash_shard_count to 
>=1 in SHOW CREATE output (#63661)
fea3d44609b is described below

commit fea3d44609b20029eb571ba348d4efd44aa7bf01
Author: Chenyang Sun <[email protected]>
AuthorDate: Wed May 27 12:13:32 2026 +0800

    [fix](variant) clamp variant_sparse_hash_shard_count to >=1 in SHOW CREATE 
output (#63661)
    
    Variant columns default variant_sparse_hash_shard_count to 0 internally.
    SHOW CREATE TABLE used to emit `"variant_sparse_hash_shard_count" =
    "0"`, which older Doris versions reject (range was [1, 1024]) when the
    same DDL is fed back through CREATE TABLE LIKE:
    
        errCode = 2, detailMessage = variant_sparse_hash_shard_count
        format error: ... must between 1 and 1024
    
    Clamp the serialized value with Math.max(1, count) in both
    nereids.types.VariantType and catalog.VariantType so the emitted DDL is
    accepted by old and new versions. Existing parsing logic on master
    already allows 0, so internal behaviour is unchanged.
    
    Update the affected SHOW CREATE / DESC golden .out files to match the
    new emitted value. Add a regression suite covering the CREATE TABLE ->
    CREATE TABLE LIKE round-trip on a variant column with default
    properties.
    
    ### What problem does this PR solve?
    
    Issue Number: close #xxx
    
    Related PR: #xxx
    
    Problem Summary:
    
    ### Release note
    
    None
    
    ### Check List (For Author)
    
    - Test <!-- At least one of them must be included. -->
        - [x] Regression test
        - [ ] Unit Test
        - [ ] Manual test (add detailed scripts or steps below)
        - [ ] No need to test or manual test. Explain why:
    - [ ] This is a refactor/code format and no logic has been changed.
            - [ ] Previous test can cover this change.
            - [ ] No code files have been changed.
            - [ ] Other reason <!-- Add your reason?  -->
    
    - Behavior changed:
        - [ ] No.
        - [ ] Yes. <!-- Explain the behavior change -->
    
    - Does this need documentation?
        - [ ] No.
    - [ ] Yes. <!-- Add document PR link here. eg:
    https://github.com/apache/doris-website/pull/1214 -->
    
    ### Check List (For Reviewer who merge this PR)
    
    - [ ] Confirm the release note
    - [ ] Confirm test cases
    - [ ] Confirm document
    - [ ] Add branch pick label <!-- Add branch pick label that this PR
    should merge into -->
    
    Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
---
 .../apache/doris/nereids/types/VariantType.java    |  3 +-
 .../java/org/apache/doris/catalog/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-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 7654f2e6551..0a745d9cb7f 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
@@ -181,8 +181,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/fe/fe-type/src/main/java/org/apache/doris/catalog/VariantType.java 
b/fe/fe-type/src/main/java/org/apache/doris/catalog/VariantType.java
index df24768c180..b3b34b2a045 100644
--- a/fe/fe-type/src/main/java/org/apache/doris/catalog/VariantType.java
+++ b/fe/fe-type/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/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