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]