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 ec54b498418 [fix](variant) Fix variant type inference from JSON 
(#59861)
ec54b498418 is described below

commit ec54b49841811b9a97e333464c14ca6d576e4f2e
Author: Sun Chenyang <[email protected]>
AuthorDate: Wed Jan 14 18:11:29 2026 +0800

    [fix](variant) Fix variant type inference from JSON (#59861)
    
    ### What problem does this PR solve?
    
    variant type inference from json: bigint, largeint, string, null,
    double, array, jsonb
    
    Problem Summary:
    
    ### Release note
    
    None
    
    ### Check List (For Author)
    
    - Test <!-- At least one of them must be included. -->
        - [x] Regression test
        - [x] 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 -->
---
 be/src/vec/columns/column_variant.cpp              |   4 +-
 be/src/vec/common/schema_util.cpp                  |  53 ----
 be/src/vec/common/schema_util.h                    |   5 -
 be/src/vec/data_types/get_least_supertype.cpp      |   3 +
 .../vec/data_types/serde/data_type_jsonb_serde.cpp |   4 +
 be/src/vec/json/json_parser.h                      |  31 +--
 be/src/vec/json/parse2column.h                     |   1 -
 be/src/vec/json/simd_json_parser.h                 |   1 +
 .../vec/columns/column_variant_allocated_bytes.out |   4 +-
 .../vec/columns/column_variant_byte_size.out       |   4 +-
 .../column_variant_update_crc_with_value.out       |   2 +-
 ..._variant_update_crc_with_value.out_with_nullmap |   2 +-
 .../column_variant_update_crcs_with_value.out      |   2 +-
 ...variant_update_crcs_with_value.out_with_nullmap |   2 +-
 .../column_variant_update_hashes_with_value.out    |   2 +-
 ...riant_update_hashes_with_value.out_with_nullmap |   2 +-
 .../column_variant_update_xxHash_with_value.out    |   2 +-
 ...riant_update_xxHash_with_value.out_with_nullmap |   2 +-
 be/test/vec/columns/column_variant_test.cpp        |  44 ++-
 be/test/vec/common/schema_util_test.cpp            |  25 --
 be/test/vec/jsonb/json_parser_test.cpp             |  90 ++++++-
 regression-test/data/variant_p0/desc.out           | 126 ++++-----
 regression-test/data/variant_p0/nested.out         |  22 +-
 .../data/variant_p0/nested/nested_in_top_array.out |  32 +--
 regression-test/data/variant_p0/nested2.out        |   4 +-
 .../predefine/test_prdefine_insert_into_select.out |   4 +-
 .../variant_p0/predefine/test_predefine_ddl.out    |   6 +-
 .../variant_p0/predefine/variant_hirachinal.out    |   4 +-
 .../data/variant_p0/predefine/variant_with_mow.out |   2 +-
 .../data/variant_p0/test_types_in_variant.out      | 121 +++++++++
 .../data/variant_p0/tpch/sql/q01_trans.out         |   8 +-
 .../data/variant_p0/tpch/sql/q05_trans.out         |   2 +-
 .../data/variant_p0/tpch/sql/q06_trans.out         |   2 +-
 .../data/variant_p0/tpch/sql/q08_trans.out         |   4 +-
 .../data/variant_p0/tpch/sql/q09_trans.out         | 294 ++++++++++-----------
 .../data/variant_p0/tpch/sql/q10_trans.out         |  10 +-
 .../test_variant_bloom_filter.groovy               |   2 +-
 .../variant_p0/predefine/test_predefine_ddl.groovy |   3 +-
 .../variant_p0/predefine/variant_hirachinal.groovy |   5 +-
 .../suites/variant_p0/test_types_in_variant.groovy | 103 ++++++++
 .../variant_p0/test_variant_is_null_expr.groovy    |  12 +-
 .../suites/variant_p0/variant_hirachinal.groovy    |   4 +-
 42 files changed, 630 insertions(+), 425 deletions(-)

diff --git a/be/src/vec/columns/column_variant.cpp 
b/be/src/vec/columns/column_variant.cpp
index 135c71bc01c..c7f4df6fe0f 100644
--- a/be/src/vec/columns/column_variant.cpp
+++ b/be/src/vec/columns/column_variant.cpp
@@ -232,9 +232,7 @@ void ColumnVariant::Subcolumn::insert(Field field, 
FieldInfo info) {
                 type_changed = true;
             }
         } else {
-            if (least_common_type_id != from_type_id &&
-                
schema_util::is_conversion_required_between_integers(from_type_id,
-                                                                     
least_common_type_id)) {
+            if (least_common_type_id != from_type_id) {
                 type_changed = true;
                 DataTypePtr new_least_common_base_type;
                 get_least_supertype_jsonb(PrimitiveTypeSet {from_type_id, 
least_common_type_id},
diff --git a/be/src/vec/common/schema_util.cpp 
b/be/src/vec/common/schema_util.cpp
index e4481511a9c..ad1743267ac 100644
--- a/be/src/vec/common/schema_util.cpp
+++ b/be/src/vec/common/schema_util.cpp
@@ -117,31 +117,6 @@ DataTypePtr get_base_type_of_array(const DataTypePtr& 
type) {
     return last_array ? last_array->get_nested_type() : type;
 }
 
-size_t get_size_of_interger(PrimitiveType type) {
-    switch (type) {
-    case PrimitiveType::TYPE_TINYINT:
-        return sizeof(int8_t);
-    case PrimitiveType::TYPE_SMALLINT:
-        return sizeof(int16_t);
-    case PrimitiveType::TYPE_INT:
-        return sizeof(int32_t);
-    case PrimitiveType::TYPE_BIGINT:
-        return sizeof(int64_t);
-    case PrimitiveType::TYPE_LARGEINT:
-        return sizeof(int128_t);
-    case PrimitiveType::TYPE_BOOLEAN:
-        return sizeof(uint8_t);
-    default:
-        throw Exception(Status::FatalError("Unknown integer type: {}", 
type_to_string(type)));
-        return 0;
-    }
-}
-
-bool is_conversion_required_between_integers(const PrimitiveType& lhs, const 
PrimitiveType& rhs) {
-    bool is_native_int = is_int_or_bool(lhs) && is_int_or_bool(rhs);
-    return !is_native_int || get_size_of_interger(lhs) > 
get_size_of_interger(rhs);
-}
-
 Status cast_column(const ColumnWithTypeAndName& arg, const DataTypePtr& type, 
ColumnPtr* result) {
     ColumnsWithTypeAndName arguments {arg, {nullptr, type, type->get_name()}};
 
@@ -1201,19 +1176,6 @@ public:
     size_t apply(const typename PrimitiveTypeTraits<T>::CppType& x) {
         if constexpr (T == TYPE_ARRAY) {
             throw doris::Exception(ErrorCode::INVALID_ARGUMENT, "Array type is 
not supported");
-        } else if constexpr (T == TYPE_BIGINT) {
-            if (x <= std::numeric_limits<Int8>::max() && x >= 
std::numeric_limits<Int8>::min()) {
-                type = PrimitiveType::TYPE_TINYINT;
-            } else if (x <= std::numeric_limits<Int16>::max() &&
-                       x >= std::numeric_limits<Int16>::min()) {
-                type = PrimitiveType::TYPE_SMALLINT;
-            } else if (x <= std::numeric_limits<Int32>::max() &&
-                       x >= std::numeric_limits<Int32>::min()) {
-                type = PrimitiveType::TYPE_INT;
-            } else {
-                type = PrimitiveType::TYPE_BIGINT;
-            }
-            return 1;
         } else if constexpr (T == TYPE_NULL) {
             have_nulls = true;
             return 1;
@@ -1245,25 +1207,10 @@ public:
                 apply_visitor(*this, x[i]);
             }
             return 0;
-        } else if constexpr (T == TYPE_BIGINT) {
-            field_types.insert(PrimitiveType::TYPE_BIGINT);
-            if (x <= std::numeric_limits<Int8>::max() && x >= 
std::numeric_limits<Int8>::min()) {
-                type_indexes.insert(PrimitiveType::TYPE_TINYINT);
-            } else if (x <= std::numeric_limits<Int16>::max() &&
-                       x >= std::numeric_limits<Int16>::min()) {
-                type_indexes.insert(PrimitiveType::TYPE_SMALLINT);
-            } else if (x <= std::numeric_limits<Int32>::max() &&
-                       x >= std::numeric_limits<Int32>::min()) {
-                type_indexes.insert(PrimitiveType::TYPE_INT);
-            } else {
-                type_indexes.insert(PrimitiveType::TYPE_BIGINT);
-            }
-            return 0;
         } else if constexpr (T == TYPE_NULL) {
             have_nulls = true;
             return 0;
         } else {
-            PrimitiveTypeTraits<PrimitiveType::TYPE_ARRAY>::CppType a;
             field_types.insert(T);
             type_indexes.insert(T);
             return 0;
diff --git a/be/src/vec/common/schema_util.h b/be/src/vec/common/schema_util.h
index ca6890118fa..ef59caaaf5a 100644
--- a/be/src/vec/common/schema_util.h
+++ b/be/src/vec/common/schema_util.h
@@ -77,11 +77,6 @@ DataTypePtr get_base_type_of_array(const DataTypePtr& type);
 // Cast column to dst type
 Status cast_column(const ColumnWithTypeAndName& arg, const DataTypePtr& type, 
ColumnPtr* result);
 
-/// If both of types are signed/unsigned integers and size of left field type
-/// is less than right type, we don't need to convert field,
-/// because all integer fields are stored in Int64/UInt64.
-bool is_conversion_required_between_integers(const PrimitiveType& lhs, const 
PrimitiveType& rhs);
-
 struct ExtraInfo {
     // -1 indicates it's not a Frontend generated column
     int32_t unique_id = -1;
diff --git a/be/src/vec/data_types/get_least_supertype.cpp 
b/be/src/vec/data_types/get_least_supertype.cpp
index ea5de2c4c46..6e8e5a02e5e 100644
--- a/be/src/vec/data_types/get_least_supertype.cpp
+++ b/be/src/vec/data_types/get_least_supertype.cpp
@@ -133,6 +133,9 @@ void get_numeric_type(const PrimitiveTypeSet& types, 
DataTypePtr* type) {
             } else if (min_bit_width_of_integer <= 64) {
                 *type = std::make_shared<DataTypeInt64>();
                 return;
+            } else if (min_bit_width_of_integer <= 128) {
+                *type = std::make_shared<DataTypeInt128>();
+                return;
             } else {
                 VLOG_DEBUG << " because some of them are signed integers and 
some are unsigned "
                               "integers, but there is no signed integer type, 
that can exactly "
diff --git a/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp 
b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp
index 9e70f9baabb..5a658425f9d 100644
--- a/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp
@@ -329,6 +329,10 @@ void convert_jsonb_to_rapidjson(const JsonbValue& val, 
rapidjson::Value& target,
         }
         break;
     }
+    case JsonbType::T_Int128: {
+        
target.SetUint64(static_cast<uint64_t>(val.unpack<JsonbInt128Val>()->val()));
+        break;
+    }
     default:
         CHECK(false) << "unkown type " << static_cast<int>(val.type);
         break;
diff --git a/be/src/vec/json/json_parser.h b/be/src/vec/json/json_parser.h
index c6966ddaf35..ae5b937ccee 100644
--- a/be/src/vec/json/json_parser.h
+++ b/be/src/vec/json/json_parser.h
@@ -49,8 +49,9 @@ Field getValueAsField(const Element& element) {
         return Field::create_field<TYPE_BIGINT>(element.getInt64());
     }
     // doris only support signed integers at present
+    // use largeint to store unsigned int64
     if (element.isUInt64()) {
-        return Field::create_field<TYPE_BIGINT>(element.getInt64());
+        return 
Field::create_field<TYPE_LARGEINT>(static_cast<int128_t>(element.getUInt64()));
     }
     if (element.isDouble()) {
         return Field::create_field<TYPE_DOUBLE>(element.getDouble());
@@ -76,8 +77,9 @@ void writeValueAsJsonb(const Element& element, JsonbWriter& 
writer) {
         return;
     }
     // doris only support signed integers at present
+    // use largeint to store unsigned int64
     if (element.isUInt64()) {
-        writer.writeInt64(element.getInt64());
+        writer.writeInt128(static_cast<int128_t>(element.getUInt64()));
         return;
     }
     if (element.isDouble()) {
@@ -97,31 +99,6 @@ void writeValueAsJsonb(const Element& element, JsonbWriter& 
writer) {
     }
 }
 
-template <typename Element>
-std::string castValueAsString(const Element& element) {
-    if (element.isBool()) {
-        return element.getBool() ? "1" : "0";
-    }
-    if (element.isInt64()) {
-        return std::to_string(element.getInt64());
-    }
-    if (element.isUInt64()) {
-        return std::to_string(element.getUInt64());
-    }
-    if (element.isDouble()) {
-        return std::to_string(element.getDouble());
-    }
-    if (element.isNull()) {
-        return "";
-    }
-    return "";
-}
-
-enum class ExtractType {
-    ToString = 0,
-    // ...
-};
-
 struct ParseConfig {
     bool enable_flatten_nested = false;
 };
diff --git a/be/src/vec/json/parse2column.h b/be/src/vec/json/parse2column.h
index eea8a0ec197..e87d8c8d538 100644
--- a/be/src/vec/json/parse2column.h
+++ b/be/src/vec/json/parse2column.h
@@ -27,7 +27,6 @@
 namespace doris::vectorized {
 
 class SimdJSONParser;
-enum class ExtractType;
 template <typename ParserImpl>
 class JSONDataParser;
 template <typename T>
diff --git a/be/src/vec/json/simd_json_parser.h 
b/be/src/vec/json/simd_json_parser.h
index 1f4fc4dca42..4292d855026 100644
--- a/be/src/vec/json/simd_json_parser.h
+++ b/be/src/vec/json/simd_json_parser.h
@@ -72,6 +72,7 @@ public:
         ALWAYS_INLINE std::string_view getString() const {
             return element.get_string().value_unsafe();
         }
+        ALWAYS_INLINE UInt64 getUInt64() const { return 
element.get_uint64().value_unsafe(); }
         ALWAYS_INLINE Array getArray() const;
         ALWAYS_INLINE Object getObject() const;
 
diff --git 
a/be/test/expected_result/vec/columns/column_variant_allocated_bytes.out 
b/be/test/expected_result/vec/columns/column_variant_allocated_bytes.out
index c92d1d0e76e..7b8d8f36877 100644
--- a/be/test/expected_result/vec/columns/column_variant_allocated_bytes.out
+++ b/be/test/expected_result/vec/columns/column_variant_allocated_bytes.out
@@ -1,2 +1,2 @@
-column: variant with allocate size: 19295936
-19295936
\ No newline at end of file
+column: variant with allocate size: 19443392
+19443392
\ No newline at end of file
diff --git a/be/test/expected_result/vec/columns/column_variant_byte_size.out 
b/be/test/expected_result/vec/columns/column_variant_byte_size.out
index 31205bae301..bfd2a235fe4 100644
--- a/be/test/expected_result/vec/columns/column_variant_byte_size.out
+++ b/be/test/expected_result/vec/columns/column_variant_byte_size.out
@@ -1,2 +1,2 @@
-column: variant with byte_size: 11155317
-11155317
\ No newline at end of file
+column: variant with byte_size: 11281852
+11281852
\ No newline at end of file
diff --git 
a/be/test/expected_result/vec/columns/column_variant_update_crc_with_value.out 
b/be/test/expected_result/vec/columns/column_variant_update_crc_with_value.out
index 03d5ccbd3fd..34d82fb5631 100644
--- 
a/be/test/expected_result/vec/columns/column_variant_update_crc_with_value.out
+++ 
b/be/test/expected_result/vec/columns/column_variant_update_crc_with_value.out
@@ -1 +1 @@
-column: variant with hashes: 3573485114 with ptr: 1756
\ No newline at end of file
+column: variant with hashes: 401199387 with ptr: 1756
\ No newline at end of file
diff --git 
a/be/test/expected_result/vec/columns/column_variant_update_crc_with_value.out_with_nullmap
 
b/be/test/expected_result/vec/columns/column_variant_update_crc_with_value.out_with_nullmap
index 03d5ccbd3fd..34d82fb5631 100644
--- 
a/be/test/expected_result/vec/columns/column_variant_update_crc_with_value.out_with_nullmap
+++ 
b/be/test/expected_result/vec/columns/column_variant_update_crc_with_value.out_with_nullmap
@@ -1 +1 @@
-column: variant with hashes: 3573485114 with ptr: 1756
\ No newline at end of file
+column: variant with hashes: 401199387 with ptr: 1756
\ No newline at end of file
diff --git 
a/be/test/expected_result/vec/columns/column_variant_update_crcs_with_value.out 
b/be/test/expected_result/vec/columns/column_variant_update_crcs_with_value.out
index 27853e883d8..13d14b465cd 100644
--- 
a/be/test/expected_result/vec/columns/column_variant_update_crcs_with_value.out
+++ 
b/be/test/expected_result/vec/columns/column_variant_update_crcs_with_value.out
@@ -1 +1 @@
-column: variant with hashes: 
[1023594347,3348501307,7038117,750646757,1023594347,1285578128,750646757,648865016,750646757,1850317735,1660060187,1978118196,7038117,1660060187,1285578128,1978118196,1285578128,1978118196,1660060187,1285578128,3348501307,750646757,80012773,1186024589,1023594347,1186024589,750646757,542292976,1660060187,750646757,1285578128,1023594347,542292976,1978118196,750646757,648865016,1023594347,648865016,3348501307,1023594347,1978118196,7038117,1285578128,80012773,703
 [...]
\ No newline at end of file
+column: variant with hashes: 
[1023594347,3348501307,7038117,750646757,1023594347,1285578128,750646757,648865016,750646757,1850317735,1660060187,1978118196,7038117,1660060187,1285578128,1978118196,1285578128,1978118196,1660060187,1285578128,3348501307,750646757,80012773,1186024589,1023594347,1186024589,750646757,542292976,1660060187,750646757,1285578128,1023594347,542292976,1978118196,750646757,648865016,1023594347,648865016,3348501307,1023594347,1978118196,7038117,1285578128,80012773,703
 [...]
\ No newline at end of file
diff --git 
a/be/test/expected_result/vec/columns/column_variant_update_crcs_with_value.out_with_nullmap
 
b/be/test/expected_result/vec/columns/column_variant_update_crcs_with_value.out_with_nullmap
index 27853e883d8..13d14b465cd 100644
--- 
a/be/test/expected_result/vec/columns/column_variant_update_crcs_with_value.out_with_nullmap
+++ 
b/be/test/expected_result/vec/columns/column_variant_update_crcs_with_value.out_with_nullmap
@@ -1 +1 @@
-column: variant with hashes: 
[1023594347,3348501307,7038117,750646757,1023594347,1285578128,750646757,648865016,750646757,1850317735,1660060187,1978118196,7038117,1660060187,1285578128,1978118196,1285578128,1978118196,1660060187,1285578128,3348501307,750646757,80012773,1186024589,1023594347,1186024589,750646757,542292976,1660060187,750646757,1285578128,1023594347,542292976,1978118196,750646757,648865016,1023594347,648865016,3348501307,1023594347,1978118196,7038117,1285578128,80012773,703
 [...]
\ No newline at end of file
+column: variant with hashes: 
[1023594347,3348501307,7038117,750646757,1023594347,1285578128,750646757,648865016,750646757,1850317735,1660060187,1978118196,7038117,1660060187,1285578128,1978118196,1285578128,1978118196,1660060187,1285578128,3348501307,750646757,80012773,1186024589,1023594347,1186024589,750646757,542292976,1660060187,750646757,1285578128,1023594347,542292976,1978118196,750646757,648865016,1023594347,648865016,3348501307,1023594347,1978118196,7038117,1285578128,80012773,703
 [...]
\ No newline at end of file
diff --git 
a/be/test/expected_result/vec/columns/column_variant_update_hashes_with_value.out
 
b/be/test/expected_result/vec/columns/column_variant_update_hashes_with_value.out
index 3819c459cb0..866a0145773 100644
--- 
a/be/test/expected_result/vec/columns/column_variant_update_hashes_with_value.out
+++ 
b/be/test/expected_result/vec/columns/column_variant_update_hashes_with_value.out
@@ -1 +1 @@
-column: variant with hashes: 
[3290145166093762980,14179897596576105469,3518677861186945217,2282085295964132384,3290145166093762980,559338346485959129,2282085295964132384,15905536912678961394,2282085295964132384,7021324166002335292,18096701186305226541,102226537653930837,3518677861186945217,18096701186305226541,559338346485959129,102226537653930837,559338346485959129,102226537653930837,18096701186305226541,559338346485959129,14179897596576105469,2282085295964132384,11072762366266850873,63
 [...]
\ No newline at end of file
+column: variant with hashes: 
[3290145166093762980,14179897596576105469,3518677861186945217,2282085295964132384,3290145166093762980,559338346485959129,2282085295964132384,15905536912678961394,2282085295964132384,7021324166002335292,18096701186305226541,102226537653930837,3518677861186945217,18096701186305226541,559338346485959129,102226537653930837,559338346485959129,102226537653930837,18096701186305226541,559338346485959129,14179897596576105469,2282085295964132384,11072762366266850873,63
 [...]
\ No newline at end of file
diff --git 
a/be/test/expected_result/vec/columns/column_variant_update_hashes_with_value.out_with_nullmap
 
b/be/test/expected_result/vec/columns/column_variant_update_hashes_with_value.out_with_nullmap
index 3819c459cb0..866a0145773 100644
--- 
a/be/test/expected_result/vec/columns/column_variant_update_hashes_with_value.out_with_nullmap
+++ 
b/be/test/expected_result/vec/columns/column_variant_update_hashes_with_value.out_with_nullmap
@@ -1 +1 @@
-column: variant with hashes: 
[3290145166093762980,14179897596576105469,3518677861186945217,2282085295964132384,3290145166093762980,559338346485959129,2282085295964132384,15905536912678961394,2282085295964132384,7021324166002335292,18096701186305226541,102226537653930837,3518677861186945217,18096701186305226541,559338346485959129,102226537653930837,559338346485959129,102226537653930837,18096701186305226541,559338346485959129,14179897596576105469,2282085295964132384,11072762366266850873,63
 [...]
\ No newline at end of file
+column: variant with hashes: 
[3290145166093762980,14179897596576105469,3518677861186945217,2282085295964132384,3290145166093762980,559338346485959129,2282085295964132384,15905536912678961394,2282085295964132384,7021324166002335292,18096701186305226541,102226537653930837,3518677861186945217,18096701186305226541,559338346485959129,102226537653930837,559338346485959129,102226537653930837,18096701186305226541,559338346485959129,14179897596576105469,2282085295964132384,11072762366266850873,63
 [...]
\ No newline at end of file
diff --git 
a/be/test/expected_result/vec/columns/column_variant_update_xxHash_with_value.out
 
b/be/test/expected_result/vec/columns/column_variant_update_xxHash_with_value.out
index fc26156b1ff..b3c9e39c478 100644
--- 
a/be/test/expected_result/vec/columns/column_variant_update_xxHash_with_value.out
+++ 
b/be/test/expected_result/vec/columns/column_variant_update_xxHash_with_value.out
@@ -1 +1 @@
-column: variant with hashes: 17214775904271713257 with ptr: 1756
\ No newline at end of file
+column: variant with hashes: 12516048992315516653 with ptr: 1756
\ No newline at end of file
diff --git 
a/be/test/expected_result/vec/columns/column_variant_update_xxHash_with_value.out_with_nullmap
 
b/be/test/expected_result/vec/columns/column_variant_update_xxHash_with_value.out_with_nullmap
index fc26156b1ff..b3c9e39c478 100644
--- 
a/be/test/expected_result/vec/columns/column_variant_update_xxHash_with_value.out_with_nullmap
+++ 
b/be/test/expected_result/vec/columns/column_variant_update_xxHash_with_value.out_with_nullmap
@@ -1 +1 @@
-column: variant with hashes: 17214775904271713257 with ptr: 1756
\ No newline at end of file
+column: variant with hashes: 12516048992315516653 with ptr: 1756
\ No newline at end of file
diff --git a/be/test/vec/columns/column_variant_test.cpp 
b/be/test/vec/columns/column_variant_test.cpp
index c0eaecea5b4..2f181695265 100644
--- a/be/test/vec/columns/column_variant_test.cpp
+++ b/be/test/vec/columns/column_variant_test.cpp
@@ -224,7 +224,6 @@ TEST_F(ColumnVariantTest, test_pop_back_multiple_types) {
     subcolumn.insert(field_int16);
     EXPECT_EQ(subcolumn.size(), 2);
     EXPECT_EQ(subcolumn.data_types.size(), 2);
-    EXPECT_EQ(subcolumn.data_types[0]->get_name(), "Nullable(TINYINT)");
     EXPECT_EQ(subcolumn.data_types[1]->get_name(), "Nullable(SMALLINT)");
     EXPECT_EQ(subcolumn.get_least_common_type()->get_name(), 
"Nullable(SMALLINT)");
 
@@ -232,15 +231,12 @@ TEST_F(ColumnVariantTest, test_pop_back_multiple_types) {
     subcolumn.insert(field_int32);
     EXPECT_EQ(subcolumn.size(), 3);
     EXPECT_EQ(subcolumn.data_types.size(), 3);
-    EXPECT_EQ(subcolumn.data_types[0]->get_name(), "Nullable(TINYINT)");
-    EXPECT_EQ(subcolumn.data_types[1]->get_name(), "Nullable(SMALLINT)");
     EXPECT_EQ(subcolumn.data_types[2]->get_name(), "Nullable(INT)");
     EXPECT_EQ(subcolumn.get_least_common_type()->get_name(), "Nullable(INT)");
 
     subcolumn.pop_back(1);
     EXPECT_EQ(subcolumn.size(), 2);
     EXPECT_EQ(subcolumn.data_types.size(), 2);
-    EXPECT_EQ(subcolumn.data_types[0]->get_name(), "Nullable(TINYINT)");
     EXPECT_EQ(subcolumn.data_types[1]->get_name(), "Nullable(SMALLINT)");
     EXPECT_EQ(subcolumn.get_least_common_type()->get_name(), 
"Nullable(SMALLINT)");
 
@@ -2582,7 +2578,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field = Field::create_field<TYPE_BIGINT>(Int64(42));
         FieldInfo info;
         schema_util::get_field_info(field, &info);
-        EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_TINYINT);
+        EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_FALSE(info.have_nulls);
         EXPECT_FALSE(info.need_convert);
         EXPECT_EQ(info.num_dimensions, 0);
@@ -2593,7 +2589,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field = Field::create_field<TYPE_BIGINT>(UInt64(42));
         FieldInfo info;
         schema_util::get_field_info(field, &info);
-        EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_TINYINT);
+        EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_FALSE(info.have_nulls);
         EXPECT_FALSE(info.need_convert);
         EXPECT_EQ(info.num_dimensions, 0);
@@ -2605,7 +2601,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field1 = 
Field::create_field<TYPE_BIGINT>(Int64(std::numeric_limits<Int8>::max()));
         FieldInfo info1;
         schema_util::get_field_info(field1, &info1);
-        EXPECT_EQ(info1.scalar_type_id, PrimitiveType::TYPE_TINYINT);
+        EXPECT_EQ(info1.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_FALSE(info1.have_nulls);
         EXPECT_FALSE(info1.need_convert);
         EXPECT_EQ(info1.num_dimensions, 0);
@@ -2614,7 +2610,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field2 = 
Field::create_field<TYPE_BIGINT>(Int64(std::numeric_limits<Int16>::max()));
         FieldInfo info2;
         schema_util::get_field_info(field2, &info2);
-        EXPECT_EQ(info2.scalar_type_id, PrimitiveType::TYPE_SMALLINT);
+        EXPECT_EQ(info2.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_FALSE(info2.have_nulls);
         EXPECT_FALSE(info2.need_convert);
         EXPECT_EQ(info2.num_dimensions, 0);
@@ -2623,7 +2619,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field3 = 
Field::create_field<TYPE_BIGINT>(Int64(std::numeric_limits<Int32>::max()));
         FieldInfo info3;
         schema_util::get_field_info(field3, &info3);
-        EXPECT_EQ(info3.scalar_type_id, PrimitiveType::TYPE_INT);
+        EXPECT_EQ(info3.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_FALSE(info3.have_nulls);
         EXPECT_FALSE(info3.need_convert);
         EXPECT_EQ(info3.num_dimensions, 0);
@@ -2642,7 +2638,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field5 = 
Field::create_field<TYPE_BIGINT>(Int64(std::numeric_limits<Int8>::min()));
         FieldInfo info5;
         schema_util::get_field_info(field5, &info5);
-        EXPECT_EQ(info5.scalar_type_id, PrimitiveType::TYPE_TINYINT);
+        EXPECT_EQ(info5.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_FALSE(info5.have_nulls);
         EXPECT_FALSE(info5.need_convert);
         EXPECT_EQ(info5.num_dimensions, 0);
@@ -2651,7 +2647,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field6 = 
Field::create_field<TYPE_BIGINT>(Int64(std::numeric_limits<Int16>::min()));
         FieldInfo info6;
         schema_util::get_field_info(field6, &info6);
-        EXPECT_EQ(info6.scalar_type_id, PrimitiveType::TYPE_SMALLINT);
+        EXPECT_EQ(info6.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_FALSE(info6.have_nulls);
         EXPECT_FALSE(info6.need_convert);
         EXPECT_EQ(info6.num_dimensions, 0);
@@ -2660,7 +2656,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field7 = 
Field::create_field<TYPE_BIGINT>(Int64(std::numeric_limits<Int32>::min()));
         FieldInfo info7;
         schema_util::get_field_info(field7, &info7);
-        EXPECT_EQ(info7.scalar_type_id, PrimitiveType::TYPE_INT);
+        EXPECT_EQ(info7.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_FALSE(info7.have_nulls);
         EXPECT_FALSE(info7.need_convert);
         EXPECT_EQ(info7.num_dimensions, 0);
@@ -2679,7 +2675,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field1 = 
Field::create_field<TYPE_BIGINT>(UInt64(std::numeric_limits<UInt8>::max()));
         FieldInfo info1;
         schema_util::get_field_info(field1, &info1);
-        EXPECT_EQ(info1.scalar_type_id, PrimitiveType::TYPE_SMALLINT);
+        EXPECT_EQ(info1.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_FALSE(info1.have_nulls);
         EXPECT_FALSE(info1.need_convert);
         EXPECT_EQ(info1.num_dimensions, 0);
@@ -2688,7 +2684,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field2 = 
Field::create_field<TYPE_BIGINT>(UInt64(std::numeric_limits<UInt16>::max()));
         FieldInfo info2;
         schema_util::get_field_info(field2, &info2);
-        EXPECT_EQ(info2.scalar_type_id, PrimitiveType::TYPE_INT);
+        EXPECT_EQ(info2.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_FALSE(info2.have_nulls);
         EXPECT_FALSE(info2.need_convert);
         EXPECT_EQ(info2.num_dimensions, 0);
@@ -2751,7 +2747,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field = Field::create_field<TYPE_ARRAY>(std::move(array));
         FieldInfo info;
         schema_util::get_field_info(field, &info);
-        EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_TINYINT);
+        EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_FALSE(info.have_nulls);
         EXPECT_FALSE(info.need_convert);
         EXPECT_EQ(info.num_dimensions, 1);
@@ -2770,7 +2766,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field = Field::create_field<TYPE_ARRAY>(std::move(outer_array));
         FieldInfo info;
         schema_util::get_field_info(field, &info);
-        EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_TINYINT);
+        EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_FALSE(info.have_nulls);
         EXPECT_FALSE(info.need_convert);
         EXPECT_EQ(info.num_dimensions, 2);
@@ -2851,7 +2847,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field = Field::create_field<TYPE_ARRAY>(std::move(array));
         FieldInfo info;
         schema_util::get_field_info(field, &info);
-        EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_TINYINT)
+        EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_BIGINT)
                 << "info.scalar_type_id: " << info.scalar_type_id;
         EXPECT_FALSE(info.have_nulls);
         EXPECT_FALSE(info.need_convert);
@@ -2866,7 +2862,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
         Field field = Field::create_field<TYPE_ARRAY>(std::move(array));
         FieldInfo info;
         schema_util::get_field_info(field, &info);
-        EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_TINYINT);
+        EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_BIGINT);
         EXPECT_TRUE(info.have_nulls);
         EXPECT_FALSE(info.need_convert);
         EXPECT_EQ(info.num_dimensions, 1);
@@ -2887,7 +2883,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
     Field field = Field::create_field<TYPE_ARRAY>(std::move(outer_array));
     FieldInfo info;
     schema_util::get_field_info(field, &info);
-    EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_TINYINT);
+    EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_BIGINT);
     EXPECT_FALSE(info.have_nulls);
     EXPECT_FALSE(info.need_convert);
     EXPECT_EQ(info.num_dimensions, 2);
@@ -2908,7 +2904,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
     Field field = Field::create_field<TYPE_ARRAY>(std::move(outer_array));
     FieldInfo info;
     schema_util::get_field_info(field, &info);
-    EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_SMALLINT);
+    EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_BIGINT);
     EXPECT_FALSE(info.have_nulls);
     EXPECT_FALSE(info.need_convert);
     EXPECT_EQ(info.num_dimensions, 2);
@@ -2929,7 +2925,7 @@ TEST_F(ColumnVariantTest, get_field_info_all_types) {
     Field field = Field::create_field<TYPE_ARRAY>(std::move(outer_array));
     FieldInfo info;
     schema_util::get_field_info(field, &info);
-    EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_INT);
+    EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_BIGINT);
     EXPECT_FALSE(info.have_nulls);
     EXPECT_FALSE(info.need_convert);
     EXPECT_EQ(info.num_dimensions, 2);
@@ -2970,7 +2966,7 @@ 
outer_array.push_back(Field::create_field<TYPE_ARRAY>(Array()));
 Field field = Field::create_field<TYPE_ARRAY>(std::move(outer_array));
 FieldInfo info;
 schema_util::get_field_info(field, &info);
-EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_SMALLINT);
+EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_BIGINT);
 EXPECT_FALSE(info.have_nulls);
 EXPECT_FALSE(info.need_convert);
 EXPECT_EQ(info.num_dimensions, 2);
@@ -2991,7 +2987,7 @@ EXPECT_EQ(info.num_dimensions, 2);
     Field field = Field::create_field<TYPE_ARRAY>(std::move(outer_array));
     FieldInfo info;
     schema_util::get_field_info(field, &info);
-    EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_INT);
+    EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_BIGINT);
     EXPECT_FALSE(info.have_nulls);
     EXPECT_FALSE(info.need_convert);
     EXPECT_EQ(info.num_dimensions, 2);
@@ -3084,7 +3080,7 @@ EXPECT_EQ(info.num_dimensions, 2);
     Field field = Field::create_field<TYPE_ARRAY>(std::move(outer_array));
     FieldInfo info;
     schema_util::get_field_info(field, &info);
-    EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_TINYINT);
+    EXPECT_EQ(info.scalar_type_id, PrimitiveType::TYPE_BIGINT);
     EXPECT_TRUE(info.have_nulls);
     EXPECT_FALSE(info.need_convert);
     EXPECT_EQ(info.num_dimensions, 2);
diff --git a/be/test/vec/common/schema_util_test.cpp 
b/be/test/vec/common/schema_util_test.cpp
index 630c7347a49..92f052c1d54 100644
--- a/be/test/vec/common/schema_util_test.cpp
+++ b/be/test/vec/common/schema_util_test.cpp
@@ -599,31 +599,6 @@ TEST_F(SchemaUtilTest, TestArrayDimensions) {
     EXPECT_EQ(base_type->get_primitive_type(), PrimitiveType::TYPE_INT);
 }
 
-TEST_F(SchemaUtilTest, TestIntegerConversion) {
-    // Test conversion between integers
-    EXPECT_FALSE(schema_util::is_conversion_required_between_integers(
-            PrimitiveType::TYPE_TINYINT, PrimitiveType::TYPE_SMALLINT));
-    
EXPECT_FALSE(schema_util::is_conversion_required_between_integers(PrimitiveType::TYPE_TINYINT,
-                                                                      
PrimitiveType::TYPE_INT));
-    
EXPECT_FALSE(schema_util::is_conversion_required_between_integers(PrimitiveType::TYPE_SMALLINT,
-                                                                      
PrimitiveType::TYPE_INT));
-
-    
EXPECT_TRUE(schema_util::is_conversion_required_between_integers(PrimitiveType::TYPE_INT,
-                                                                     
PrimitiveType::TYPE_SMALLINT));
-    
EXPECT_TRUE(schema_util::is_conversion_required_between_integers(PrimitiveType::TYPE_BIGINT,
-                                                                     
PrimitiveType::TYPE_INT));
-
-    EXPECT_FALSE(schema_util::is_conversion_required_between_integers(
-            PrimitiveType::TYPE_TINYINT, PrimitiveType::TYPE_SMALLINT));
-    
EXPECT_TRUE(schema_util::is_conversion_required_between_integers(PrimitiveType::TYPE_INT,
-                                                                     
PrimitiveType::TYPE_SMALLINT));
-
-    EXPECT_FALSE(schema_util::is_conversion_required_between_integers(
-            PrimitiveType::TYPE_BOOLEAN, PrimitiveType::TYPE_SMALLINT));
-    
EXPECT_TRUE(schema_util::is_conversion_required_between_integers(PrimitiveType::TYPE_SMALLINT,
-                                                                     
PrimitiveType::TYPE_BOOLEAN));
-}
-
 TEST_F(SchemaUtilTest, TestColumnCasting) {
     // Test cast_column
     auto src_type = std::make_shared<DataTypeInt32>();
diff --git a/be/test/vec/jsonb/json_parser_test.cpp 
b/be/test/vec/jsonb/json_parser_test.cpp
index 12dae95f6fc..1924bd90cb7 100644
--- a/be/test/vec/jsonb/json_parser_test.cpp
+++ b/be/test/vec/jsonb/json_parser_test.cpp
@@ -36,21 +36,45 @@ TEST(JsonParserTest, ParseSimpleTypes) {
     ASSERT_TRUE(result.has_value());
     EXPECT_EQ(result->values.size(), 1);
 
+    auto parse_result_int = result.value();
+    EXPECT_EQ(parse_result_int.paths[0].get_path(), "");
+    EXPECT_EQ(parse_result_int.values[0].get_type(), 
doris::PrimitiveType::TYPE_BIGINT);
+
     // double
     result = parser.parse("1.23", 4, config);
     ASSERT_TRUE(result.has_value());
 
+    auto parse_result_double = result.value();
+    EXPECT_EQ(parse_result_double.paths[0].get_path(), "");
+    EXPECT_EQ(parse_result_double.values[0].get_type(), 
doris::PrimitiveType::TYPE_DOUBLE);
+
     // bool
     result = parser.parse("true", 4, config);
     ASSERT_TRUE(result.has_value());
 
+    auto parse_result_bool = result.value();
+    EXPECT_EQ(parse_result_bool.values[0].get_type(), 
doris::PrimitiveType::TYPE_BOOLEAN);
+
     // null
     result = parser.parse("null", 4, config);
     ASSERT_TRUE(result.has_value());
+    auto parse_result_null = result.value();
+    EXPECT_EQ(parse_result_null.paths[0].get_path(), "");
+    EXPECT_EQ(parse_result_null.values[0].get_type(), 
doris::PrimitiveType::TYPE_NULL);
 
     // string
     result = parser.parse("\"abc\"", 5, config);
     ASSERT_TRUE(result.has_value());
+    auto parse_result_string = result.value();
+    EXPECT_EQ(parse_result_string.paths[0].get_path(), "");
+    EXPECT_EQ(parse_result_string.values[0].get_type(), 
doris::PrimitiveType::TYPE_STRING);
+
+    // largeint
+    result = parser.parse("12345678901234567890", 20, config);
+    ASSERT_TRUE(result.has_value());
+    auto parse_result_bigint = result.value();
+    EXPECT_EQ(parse_result_bigint.paths[0].get_path(), "");
+    EXPECT_EQ(parse_result_bigint.values[0].get_type(), 
doris::PrimitiveType::TYPE_LARGEINT);
 }
 
 TEST(JsonParserTest, ParseObjectAndArray) {
@@ -60,12 +84,36 @@ TEST(JsonParserTest, ParseObjectAndArray) {
     // Object
     auto result = parser.parse(R"({"a":1,"b":2})", 13, config);
     ASSERT_TRUE(result.has_value());
-    EXPECT_EQ(result->values.size(), 2);
+    auto& parse_result_object = result.value();
+    EXPECT_EQ(parse_result_object.values.size(), 2);
+    EXPECT_EQ(parse_result_object.paths.size(), 2);
+    EXPECT_EQ(parse_result_object.values[0].get_type(), 
doris::PrimitiveType::TYPE_BIGINT);
+    EXPECT_EQ(parse_result_object.values[1].get_type(), 
doris::PrimitiveType::TYPE_BIGINT);
+    EXPECT_EQ(parse_result_object.paths[0].get_path(), "a");
+    EXPECT_EQ(parse_result_object.paths[1].get_path(), "b");
 
     // Array
     result = parser.parse("[1,2,3]", 7, config);
     ASSERT_TRUE(result.has_value());
-    EXPECT_EQ(result->values.size(), 1);
+    auto& parse_result_array = result.value();
+    EXPECT_EQ(parse_result_array.paths[0].get_path(), "");
+    EXPECT_EQ(parse_result_array.values[0].get_type(), 
doris::PrimitiveType::TYPE_ARRAY);
+
+    std::string json = R"([1, "string", null, true, 1.23, 
12345678901234567890])";
+    result = parser.parse(json.c_str(), json.size(), config);
+    ASSERT_TRUE(result.has_value());
+    auto& parse_result_array_2 = result.value();
+    EXPECT_EQ(parse_result_array_2.paths[0].get_path(), "");
+    EXPECT_EQ(parse_result_array_2.values[0].get_type(), 
doris::PrimitiveType::TYPE_ARRAY);
+    auto& array_field = 
parse_result_array_2.values[0].get<doris::vectorized::Array>();
+
+    EXPECT_EQ(array_field.size(), 6);
+    EXPECT_EQ(array_field[0].get_type(), doris::PrimitiveType::TYPE_BIGINT);
+    EXPECT_EQ(array_field[1].get_type(), doris::PrimitiveType::TYPE_STRING);
+    EXPECT_EQ(array_field[2].get_type(), doris::PrimitiveType::TYPE_NULL);
+    EXPECT_EQ(array_field[3].get_type(), doris::PrimitiveType::TYPE_BOOLEAN);
+    EXPECT_EQ(array_field[4].get_type(), doris::PrimitiveType::TYPE_DOUBLE);
+    EXPECT_EQ(array_field[5].get_type(), doris::PrimitiveType::TYPE_LARGEINT);
 }
 
 TEST(JsonParserTest, ParseMultiLevelNestedArray) {
@@ -343,4 +391,42 @@ TEST(JsonParserTest, TestHandleNewPathElseBranch) {
     // Verify nested_sizes_by_key was updated
     
EXPECT_EQ(ctx.nested_sizes_by_key.at(doris::StringRef("nested_key")).size(), 3);
     EXPECT_EQ(ctx.nested_sizes_by_key.at(doris::StringRef("nested_key"))[1], 
0);
+}
+
+TEST(JsonParserTest, ParseUInt64) {
+    JSONDataParser<SimdJSONParser> parser;
+    ParseConfig config;
+
+    std::string json = R"({"a": 18446744073709551615})";
+    auto result = parser.parse(json.c_str(), json.size(), config);
+    ASSERT_TRUE(result.has_value());
+    EXPECT_EQ(result->values.size(), 1);
+    EXPECT_EQ(result->paths.size(), 1);
+    EXPECT_EQ(result->paths[0].get_path(), "a");
+    EXPECT_EQ(result->values[0].get_type(), 
doris::PrimitiveType::TYPE_LARGEINT);
+    EXPECT_EQ(result->values[0].get<doris::vectorized::Int128>(), 
18446744073709551615ULL);
+
+    std::string array_json = R"({"a": [18446744073709551615]})";
+    result = parser.parse(array_json.c_str(), array_json.size(), config);
+    ASSERT_TRUE(result.has_value());
+    EXPECT_EQ(result->values.size(), 1);
+    EXPECT_EQ(result->paths.size(), 1);
+    EXPECT_EQ(result->paths[0].get_path(), "a");
+    EXPECT_EQ(result->values[0].get_type(), doris::PrimitiveType::TYPE_ARRAY);
+    auto& array_field = result->values[0].get<doris::vectorized::Array>();
+    EXPECT_EQ(array_field.size(), 1);
+    EXPECT_EQ(array_field[0].get_type(), doris::PrimitiveType::TYPE_LARGEINT);
+    EXPECT_EQ(array_field[0].get<doris::vectorized::Int128>(), 
18446744073709551615ULL);
+
+    std::string nested_json = R"({"a": [{"b": 18446744073709551615}]})";
+    config.enable_flatten_nested = true;
+    result = parser.parse(nested_json.c_str(), nested_json.size(), config);
+    ASSERT_TRUE(result.has_value());
+    EXPECT_EQ(result->values.size(), 1);
+    EXPECT_EQ(result->paths.size(), 1);
+    EXPECT_EQ(result->values[0].get_type(), doris::PrimitiveType::TYPE_ARRAY);
+    auto& array_field_2 = result->values[0].get<doris::vectorized::Array>();
+    EXPECT_EQ(array_field_2.size(), 1);
+    EXPECT_EQ(array_field_2[0].get_type(), 
doris::PrimitiveType::TYPE_LARGEINT);
+    EXPECT_EQ(array_field_2[0].get<doris::vectorized::Int128>(), 
18446744073709551615ULL);
 }
\ No newline at end of file
diff --git a/regression-test/data/variant_p0/desc.out 
b/regression-test/data/variant_p0/desc.out
index 9a3be9de833..06ba18e1717 100644
--- a/regression-test/data/variant_p0/desc.out
+++ b/regression-test/data/variant_p0/desc.out
@@ -2,94 +2,94 @@
 -- !sql_1 --
 k      bigint  Yes     true    \N      
 v      variant<PROPERTIES ("variant_max_subcolumns_count" = "2")>      Yes     
false   \N      NONE
-v.a    smallint        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")>      Yes     
false   \N      NONE
-v.a    smallint        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 Yes     false   \N      NONE
-v.a    smallint        Yes     false   \N      NONE
+v.a    bigint  Yes     false   \N      NONE
 v.b    json    Yes     false   \N      NONE
-v.c.c  smallint        Yes     false   \N      NONE
+v.c.c  bigint  Yes     false   \N      NONE
 v.c.e  double  Yes     false   \N      NONE
 v.xxxx text    Yes     false   \N      NONE
 
 -- !sql_6_1 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.a    smallint        Yes     false   \N      NONE
+v.a    bigint  Yes     false   \N      NONE
 v.b    json    Yes     false   \N      NONE
-v.c.c  smallint        Yes     false   \N      NONE
+v.c.c  bigint  Yes     false   \N      NONE
 v.c.e  double  Yes     false   \N      NONE
-v.ddd.aaa      tinyint Yes     false   \N      NONE
+v.ddd.aaa      bigint  Yes     false   \N      NONE
 v.ddd.mxmxm    array<json>     Yes     false   \N      NONE
-v.oooo.xxxx.xxx        tinyint Yes     false   \N      NONE
+v.oooo.xxxx.xxx        bigint  Yes     false   \N      NONE
 v.xxxx text    Yes     false   \N      NONE
 
 -- !sql_6_2 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.a    smallint        Yes     false   \N      NONE
+v.a    bigint  Yes     false   \N      NONE
 v.b    json    Yes     false   \N      NONE
-v.c.c  smallint        Yes     false   \N      NONE
+v.c.c  bigint  Yes     false   \N      NONE
 v.c.e  double  Yes     false   \N      NONE
 v.xxxx text    Yes     false   \N      NONE
 
 -- !sql_6_3 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.a    smallint        Yes     false   \N      NONE
+v.a    bigint  Yes     false   \N      NONE
 v.b    json    Yes     false   \N      NONE
-v.c.c  smallint        Yes     false   \N      NONE
+v.c.c  bigint  Yes     false   \N      NONE
 v.c.e  double  Yes     false   \N      NONE
 
 -- !sql_6 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.a    smallint        Yes     false   \N      NONE
+v.a    bigint  Yes     false   \N      NONE
 v.b    json    Yes     false   \N      NONE
-v.c.c  smallint        Yes     false   \N      NONE
+v.c.c  bigint  Yes     false   \N      NONE
 v.c.e  double  Yes     false   \N      NONE
-v.ddd.aaa      tinyint Yes     false   \N      NONE
+v.ddd.aaa      bigint  Yes     false   \N      NONE
 v.ddd.mxmxm    array<json>     Yes     false   \N      NONE
-v.oooo.xxxx.xxx        tinyint Yes     false   \N      NONE
+v.oooo.xxxx.xxx        bigint  Yes     false   \N      NONE
 v.xxxx text    Yes     false   \N      NONE
 
 -- !sql_7 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.a    smallint        Yes     false   \N      NONE
+v.a    bigint  Yes     false   \N      NONE
 v.b    json    Yes     false   \N      NONE
-v.c.c  smallint        Yes     false   \N      NONE
+v.c.c  bigint  Yes     false   \N      NONE
 v.c.e  double  Yes     false   \N      NONE
 v.xxxx text    Yes     false   \N      NONE
 
 -- !sql_7_1 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.a    smallint        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 Yes     false   \N      NONE
-v.a    smallint        Yes     false   \N      NONE
+v.a    bigint  Yes     false   \N      NONE
 v.b    json    Yes     false   \N      NONE
-v.c.c  smallint        Yes     false   \N      NONE
+v.c.c  bigint  Yes     false   \N      NONE
 v.c.e  double  Yes     false   \N      NONE
 
 -- !sql_7_3 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.a    smallint        Yes     false   \N      NONE
+v.a    bigint  Yes     false   \N      NONE
 v.b    json    Yes     false   \N      NONE
-v.c.c  smallint        Yes     false   \N      NONE
+v.c.c  bigint  Yes     false   \N      NONE
 v.c.e  double  Yes     false   \N      NONE
 v.xxxx text    Yes     false   \N      NONE
 
@@ -98,16 +98,16 @@ k   bigint  Yes     true    \N
 v1     variant Yes     false   \N      NONE
 v2     variant Yes     false   \N      NONE
 v3     variant Yes     false   \N      NONE
-v1.a   smallint        Yes     false   \N      NONE
+v1.a   bigint  Yes     false   \N      NONE
 v1.b   json    Yes     false   \N      NONE
-v1.c.c smallint        Yes     false   \N      NONE
+v1.c.c bigint  Yes     false   \N      NONE
 v1.c.e double  Yes     false   \N      NONE
-v1.oooo.xxxx.xxx       tinyint Yes     false   \N      NONE
-v2.a   smallint        Yes     false   \N      NONE
+v1.oooo.xxxx.xxx       bigint  Yes     false   \N      NONE
+v2.a   bigint  Yes     false   \N      NONE
 v2.xxxx        text    Yes     false   \N      NONE
-v3.a   smallint        Yes     false   \N      NONE
+v3.a   bigint  Yes     false   \N      NONE
 v3.b   json    Yes     false   \N      NONE
-v3.c.c smallint        Yes     false   \N      NONE
+v3.c.c bigint  Yes     false   \N      NONE
 v3.c.e double  Yes     false   \N      NONE
 
 -- !sql_9 --
@@ -117,18 +117,18 @@ v variant Yes     false   \N      NONE
 -- !sql_9_1 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.a    smallint        Yes     false   \N      NONE
+v.a    bigint  Yes     false   \N      NONE
 v.b    json    Yes     false   \N      NONE
-v.c.c  smallint        Yes     false   \N      NONE
+v.c.c  bigint  Yes     false   \N      NONE
 v.c.e  double  Yes     false   \N      NONE
-v.oooo.xxxx.xxx        tinyint Yes     false   \N      NONE
+v.oooo.xxxx.xxx        bigint  Yes     false   \N      NONE
 
 -- !sql_10 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.k1   tinyint Yes     false   \N      NONE
+v.k1   bigint  Yes     false   \N      NONE
 v.k2   text    Yes     false   \N      NONE
-v.k3   array<smallint> Yes     false   \N      NONE
+v.k3   array<bigint>   Yes     false   \N      NONE
 v.k4   double  Yes     false   \N      NONE
 v.k5   json    Yes     false   \N      NONE
 
@@ -136,60 +136,60 @@ v.k5      json    Yes     false   \N      NONE
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
 v2     variant Yes     false   \N      NONE
-v.a    smallint        Yes     false   \N      NONE
+v.a    bigint  Yes     false   \N      NONE
 v.b    json    Yes     false   \N      NONE
-v.c.c  smallint        Yes     false   \N      NONE
+v.c.c  bigint  Yes     false   \N      NONE
 v.c.e  double  Yes     false   \N      NONE
-v.k1   tinyint Yes     false   \N      NONE
+v.k1   bigint  Yes     false   \N      NONE
 v.k2   text    Yes     false   \N      NONE
-v.k3   array<smallint> Yes     false   \N      NONE
+v.k3   array<bigint>   Yes     false   \N      NONE
 v.k4   double  Yes     false   \N      NONE
 v.k5   json    Yes     false   \N      NONE
-v.oooo.xxxx.xxx        tinyint Yes     false   \N      NONE
-v2.a   smallint        Yes     false   \N      NONE
+v.oooo.xxxx.xxx        bigint  Yes     false   \N      NONE
+v2.a   bigint  Yes     false   \N      NONE
 v2.b   json    Yes     false   \N      NONE
-v2.c.c smallint        Yes     false   \N      NONE
+v2.c.c bigint  Yes     false   \N      NONE
 v2.c.e double  Yes     false   \N      NONE
-v2.oooo.xxxx.xxx       tinyint Yes     false   \N      NONE
+v2.oooo.xxxx.xxx       bigint  Yes     false   \N      NONE
 
 -- !sql_10_2 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.a    smallint        Yes     false   \N      NONE
+v.a    bigint  Yes     false   \N      NONE
 v.b    json    Yes     false   \N      NONE
-v.c.c  smallint        Yes     false   \N      NONE
+v.c.c  bigint  Yes     false   \N      NONE
 v.c.e  double  Yes     false   \N      NONE
-v.k1   tinyint Yes     false   \N      NONE
+v.k1   bigint  Yes     false   \N      NONE
 v.k2   text    Yes     false   \N      NONE
-v.k3   array<smallint> Yes     false   \N      NONE
+v.k3   array<bigint>   Yes     false   \N      NONE
 v.k4   double  Yes     false   \N      NONE
 v.k5   json    Yes     false   \N      NONE
-v.oooo.xxxx.xxx        tinyint Yes     false   \N      NONE
-v2.a   smallint        Yes     false   \N      NONE
+v.oooo.xxxx.xxx        bigint  Yes     false   \N      NONE
+v2.a   bigint  Yes     false   \N      NONE
 v2.b   json    Yes     false   \N      NONE
-v2.c.c smallint        Yes     false   \N      NONE
+v2.c.c bigint  Yes     false   \N      NONE
 v2.c.e double  Yes     false   \N      NONE
-v2.oooo.xxxx.xxx       tinyint Yes     false   \N      NONE
+v2.oooo.xxxx.xxx       bigint  Yes     false   \N      NONE
 
 -- !sql_10_3 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
 v3     variant Yes     false   \N      NONE
-v.a    smallint        Yes     false   \N      NONE
+v.a    bigint  Yes     false   \N      NONE
 v.b    json    Yes     false   \N      NONE
-v.c.c  smallint        Yes     false   \N      NONE
+v.c.c  bigint  Yes     false   \N      NONE
 v.c.e  double  Yes     false   \N      NONE
-v.k1   tinyint Yes     false   \N      NONE
+v.k1   bigint  Yes     false   \N      NONE
 v.k2   text    Yes     false   \N      NONE
-v.k3   array<smallint> Yes     false   \N      NONE
+v.k3   array<bigint>   Yes     false   \N      NONE
 v.k4   double  Yes     false   \N      NONE
 v.k5   json    Yes     false   \N      NONE
-v.oooo.xxxx.xxx        tinyint Yes     false   \N      NONE
-v3.a   smallint        Yes     false   \N      NONE
+v.oooo.xxxx.xxx        bigint  Yes     false   \N      NONE
+v3.a   bigint  Yes     false   \N      NONE
 v3.b   json    Yes     false   \N      NONE
-v3.c.c smallint        Yes     false   \N      NONE
+v3.c.c bigint  Yes     false   \N      NONE
 v3.c.e double  Yes     false   \N      NONE
-v3.oooo.xxxx.xxx       tinyint Yes     false   \N      NONE
+v3.oooo.xxxx.xxx       bigint  Yes     false   \N      NONE
 
 -- !sql_11 --
 k      bigint  Yes     true    \N      
@@ -198,7 +198,7 @@ v.!@#^&*()  text    Yes     false   \N      NONE
 v.名字   text    Yes     false   \N      NONE
 v.画像.丬文        text    Yes     false   \N      NONE
 v.画像.地址        text    Yes     false   \N      NONE
-v.金额   smallint        Yes     false   \N      NONE
+v.金额   bigint  Yes     false   \N      NONE
 
 -- !sql_12 --
 k      bigint  Yes     true    \N      
@@ -207,8 +207,8 @@ v   variant Yes     false   \N      NONE
 -- !sql15 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.a    tinyint Yes     false   \N      NONE
-v.b    tinyint Yes     false   \N      NONE
-v.c    tinyint Yes     false   \N      NONE
-v.d    tinyint 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
+v.d    bigint  Yes     false   \N      NONE
 
diff --git a/regression-test/data/variant_p0/nested.out 
b/regression-test/data/variant_p0/nested.out
index 6c3ff0802bc..a6274256c31 100644
--- a/regression-test/data/variant_p0/nested.out
+++ b/regression-test/data/variant_p0/nested.out
@@ -5,28 +5,28 @@ v     variant<PROPERTIES ("variant_max_subcolumns_count" = 
"3")>      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
-v.nested.axxxb array<tinyint>  Yes     false   \N      NONE
+v.nested.axxxb array<bigint>   Yes     false   \N      NONE
 v.nested.ba    array<text>     Yes     false   \N      NONE
 v.nested.baaa  array<text>     Yes     false   \N      NONE
-v.nested.ddsss array<smallint> Yes     false   \N      NONE
+v.nested.ddsss array<bigint>   Yes     false   \N      NONE
 v.nested.mmm   array<text>     Yes     false   \N      NONE
 v.nested.nested.a      array<text>     Yes     false   \N      NONE
 v.nested.nested.aaa    array<text>     Yes     false   \N      NONE
 v.nested.nested.ax1111 array<text>     Yes     false   \N      NONE
-v.nested.nested.axxxb  array<tinyint>  Yes     false   \N      NONE
+v.nested.nested.axxxb  array<bigint>   Yes     false   \N      NONE
 v.nested.nested.ba     array<text>     Yes     false   \N      NONE
-v.nested.nested.ddsss  array<smallint> Yes     false   \N      NONE
-v.nested.nested.xx     array<tinyint>  Yes     false   \N      NONE
-v.nested.nested.xxxy111        array<tinyint>  Yes     false   \N      NONE
+v.nested.nested.ddsss  array<bigint>   Yes     false   \N      NONE
+v.nested.nested.xx     array<bigint>   Yes     false   \N      NONE
+v.nested.nested.xxxy111        array<bigint>   Yes     false   \N      NONE
 v.nested.nested.yyyxxxx        array<text>     Yes     false   \N      NONE
-v.nested.xx    array<tinyint>  Yes     false   \N      NONE
-v.nested.xxxy111       array<tinyint>  Yes     false   \N      NONE
+v.nested.xx    array<bigint>   Yes     false   \N      NONE
+v.nested.xxxy111       array<bigint>   Yes     false   \N      NONE
 v.nested.yyy   array<text>     Yes     false   \N      NONE
 v.nested.yyyxxxx       array<text>     Yes     false   \N      NONE
 v.nested.zzz11 array<text>     Yes     false   \N      NONE
-v.not nested   smallint        Yes     false   \N      NONE
-v.not nested2.llll     tinyint Yes     false   \N      NONE
-v.xx   tinyint Yes     false   \N      NONE
+v.not nested   bigint  Yes     false   \N      NONE
+v.not nested2.llll     bigint  Yes     false   \N      NONE
+v.xx   bigint  Yes     false   \N      NONE
 
 -- !sql --
 1      {"xx":10}
diff --git a/regression-test/data/variant_p0/nested/nested_in_top_array.out 
b/regression-test/data/variant_p0/nested/nested_in_top_array.out
index 64e6134b797..995bfe36832 100644
--- a/regression-test/data/variant_p0/nested/nested_in_top_array.out
+++ b/regression-test/data/variant_p0/nested/nested_in_top_array.out
@@ -45,7 +45,7 @@
 \N     \N      \N
 
 -- !sql_18 --
-[1]    ['1']   [1.1]
+[1]    ["1"]   [1.1]
 
 -- !sql_19 --
 \N     \N      \N
@@ -111,8 +111,8 @@
 \N     \N      \N
 
 -- !sql_18 --
-[1]    ['1']   [1.1]
-['2.5']        [123.1] \N
+["1"]  [""1""] [1.1]
+[""2.5""]      ["123.1"]       \N
 
 -- !sql_19 --
 \N     \N      \N
@@ -194,8 +194,8 @@
 \N     \N      \N
 
 -- !sql_18 --
-[1]    ['1']   [1.1]
-['2.5']        [123.1] \N
+[1]    [""1""] [1.1]
+["2.5"]        ["123.1"]       \N
 {"b":[2],"c":[1]}      \N      \N
 
 -- !sql_19 --
@@ -294,10 +294,10 @@
 \N     \N      \N
 
 -- !sql_18 --
-[1]    ['1']   [1.1]
-['2.5']        [123.1] \N
+[1]    [""1""] [1.1]
+["2.5"]        ["123.1"]       \N
 {"b":[2],"c":[1]}      \N      \N
-{"c":[1]}      ['1']   {"a":[2]}
+{"c":[1]}      [""1""] {"a":[2]}
 
 -- !sql_19 --
 \N     \N      \N
@@ -411,11 +411,11 @@
 \N     \N      \N
 
 -- !sql_18 --
-[1]    ['1']   [1.1]
-['2.5']        [123.1] \N
+[1]    [""1""] [1.1]
+["2.5"]        ["123.1"]       \N
 {"b":[2],"c":[1]}      \N      \N
-{"c":[1]}      ['1']   {"a":[2]}
-[1]    [1, 2, 3]       \N
+{"c":[1]}      [""1""] {"a":[2]}
+[1]    ["1", "2", "3"] \N
 
 -- !sql_19 --
 \N     \N      \N
@@ -530,11 +530,11 @@
 \N     \N      \N
 
 -- !sql_18 --
-[1]    ["1"]   [1.1]
-["2.5"]        [123.1] {}
+[1]    [""1""] [1.1]
+["2.5"]        ["123.1"]       {}
 {"b":[2],"c":[1]}      \N      {}
-{"c":[1]}      ["1"]   {"a":[2]}
-[1]    [1, 2, 3]       {}
+{"c":[1]}      [""1""] {"a":[2]}
+[1]    ["1", "2", "3"] {}
 
 -- !sql_19 --
 \N     \N      \N
diff --git a/regression-test/data/variant_p0/nested2.out 
b/regression-test/data/variant_p0/nested2.out
index 357f76927e7..85bd5d26516 100644
--- a/regression-test/data/variant_p0/nested2.out
+++ b/regression-test/data/variant_p0/nested2.out
@@ -2,7 +2,7 @@
 -- !sql_desc_1 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.nested.a     array<tinyint>  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
 
@@ -51,7 +51,7 @@ v.nested.c    array<double>   Yes     false   \N      NONE
 -- !sql_desc_2 --
 k      bigint  Yes     true    \N      
 v      variant Yes     false   \N      NONE
-v.nested.a     array<double>   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
 
diff --git 
a/regression-test/data/variant_p0/predefine/test_prdefine_insert_into_select.out
 
b/regression-test/data/variant_p0/predefine/test_prdefine_insert_into_select.out
index 8bc90795e1b..a8327f4fa90 100644
--- 
a/regression-test/data/variant_p0/predefine/test_prdefine_insert_into_select.out
+++ 
b/regression-test/data/variant_p0/predefine/test_prdefine_insert_into_select.out
@@ -5,9 +5,9 @@
 1      
{"a":"2025-04-16","b":123.123456789012,"c":"2025-04-17T09:09:09Z","d":123,"e":"2025-04-19","f":"2025-04-20","g":"2025-04-21","h":"2025-04-22","i":"2025-04-23","j":"2025-04-24","k":"2025-04-25","l":"2025-04-26","m":"2025-04-27","n":"2025-04-28","o":"2025-04-29","p":"2025-04-30"}
 
 -- !sql --
+{"a":"string","b":"double","c":"string","d":"bigint","e":"string","f":"string","g":"string","h":"string","i":"string","j":"string","k":"string","l":"string","m":"string","n":"string","o":"string","p":"string"}
 
{"a":"string","b":"double","c":"string","d":"string","e":"string","f":"string","g":"string","h":"string","i":"string","j":"string","k":"string","l":"string","m":"string","n":"string","o":"string","p":"string"}
 
{"a":"string","b":"double","c":"string","d":"string","e":"string","f":"string","g":"string","h":"string","i":"string","j":"string","k":"string","l":"string","m":"string","n":"string","o":"string","p":"string"}
-{"a":"string","b":"double","c":"string","d":"tinyint","e":"string","f":"string","g":"string","h":"string","i":"string","j":"string","k":"string","l":"string","m":"string","n":"string","o":"string","p":"string"}
 
 -- !sql --
 1      {"a":"2025-04-16","b":123.123456789012,"c":"2025-04-17 
17:09:09","d":"123","e":"2025-04-19","f":"2025-04-20","g":"2025-04-21","h":"2025-04-22","i":"2025-04-23","j":"2025-04-24","k":"2025-04-25","l":"2025-04-26","m":"2025-04-27","n":"2025-04-28","o":"2025-04-29","p":"2025-04-30"}
@@ -15,9 +15,9 @@
 1      
{"a":"2025-04-16","b":123.123456789012,"c":"2025-04-17T09:09:09Z","d":123,"e":"2025-04-19","f":"2025-04-20","g":"2025-04-21","h":"2025-04-22","i":"2025-04-23","j":"2025-04-24","k":"2025-04-25","l":"2025-04-26","m":"2025-04-27","n":"2025-04-28","o":"2025-04-29","p":"2025-04-30"}
 
 -- !sql --
+{"a":"datev2","b":"decimal128i","c":"string","d":"bigint","e":"string","f":"string","g":"string","h":"string","i":"string","j":"string","k":"string","l":"string","m":"string","n":"string","o":"string","p":"string"}
 
{"a":"datev2","b":"decimal128i","c":"string","d":"string","e":"string","f":"string","g":"string","h":"string","i":"string","j":"string","k":"string","l":"string","m":"string","n":"string","o":"string","p":"string"}
 
{"a":"datev2","b":"decimal128i","c":"string","d":"string","e":"string","f":"string","g":"string","h":"string","i":"string","j":"string","k":"string","l":"string","m":"string","n":"string","o":"string","p":"string"}
-{"a":"datev2","b":"decimal128i","c":"string","d":"tinyint","e":"string","f":"string","g":"string","h":"string","i":"string","j":"string","k":"string","l":"string","m":"string","n":"string","o":"string","p":"string"}
 
 -- !sql --
 2
diff --git a/regression-test/data/variant_p0/predefine/test_predefine_ddl.out 
b/regression-test/data/variant_p0/predefine/test_predefine_ddl.out
index a65c3ec1fb5..c4f22c79ac1 100644
--- a/regression-test/data/variant_p0/predefine/test_predefine_ddl.out
+++ b/regression-test/data/variant_p0/predefine/test_predefine_ddl.out
@@ -1,11 +1,11 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
 -- !sql --
 id     bigint  Yes     true    \N      
-var    variant<PROPERTIES ("variant_max_subcolumns_count" = "10")>     Yes     
false   \N      NONE
+var    variant<PROPERTIES ("variant_max_subcolumns_count" = 
"10","variant_sparse_hash_shard_count" = "20")>    Yes     false   \N      NONE
 
 -- !sql --
 id     bigint  Yes     true    \N      
-var    variant<PROPERTIES ("variant_max_subcolumns_count" = "10")>     Yes     
false   \N      NONE
-var2   variant<PROPERTIES ("variant_max_subcolumns_count" = "15")>     Yes     
false   \N      NONE
+var    variant<PROPERTIES ("variant_max_subcolumns_count" = 
"10","variant_sparse_hash_shard_count" = "20")>    Yes     false   \N      NONE
+var2   variant<PROPERTIES ("variant_max_subcolumns_count" = 
"15","variant_sparse_hash_shard_count" = "20")>    Yes     false   \N      NONE
 var3   variant Yes     false   \N      NONE
 
diff --git a/regression-test/data/variant_p0/predefine/variant_hirachinal.out 
b/regression-test/data/variant_p0/predefine/variant_hirachinal.out
index a3b4f28e286..e5ab29c3d46 100644
--- a/regression-test/data/variant_p0/predefine/variant_hirachinal.out
+++ b/regression-test/data/variant_p0/predefine/variant_hirachinal.out
@@ -21,11 +21,11 @@
 
 -- !sql1 --
 12345
-[1, 2, 3]
+[1,2,3]
 {"c":456,"d":"null","e":7.111}
 
 -- !sql2 --
 12345
-[1, 2, 3]
+[1,2,3]
 {"c":456,"d":"null","e":7.111}
 
diff --git a/regression-test/data/variant_p0/predefine/variant_with_mow.out 
b/regression-test/data/variant_p0/predefine/variant_with_mow.out
index fde3e01fb3e..668ff6a8586 100644
--- a/regression-test/data/variant_p0/predefine/variant_with_mow.out
+++ b/regression-test/data/variant_p0/predefine/variant_with_mow.out
@@ -17,5 +17,5 @@
 944935237      2       1       1       true    1741682404960657985     
1741682404960657985     0       
{"a":34,"b":"44","c":54,"d":64,"e":74,"f":84,"g":94,"h":104,"i":114,"j":124}
 
 -- !sql --
-{"a":"int","b":"string","c":"largeint","d":"tinyint","e":"tinyint","f":"tinyint","g":"tinyint","h":"tinyint","i":"smallint","j":"smallint"}
+{"a":"int","b":"string","c":"largeint","d":"bigint","e":"bigint","f":"bigint","g":"bigint","h":"bigint","i":"bigint","j":"bigint"}
 
diff --git a/regression-test/data/variant_p0/test_types_in_variant.out 
b/regression-test/data/variant_p0/test_types_in_variant.out
new file mode 100644
index 00000000000..c215c3eda41
--- /dev/null
+++ b/regression-test/data/variant_p0/test_types_in_variant.out
@@ -0,0 +1,121 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !sql_scalar --
+id     int     Yes     true    \N      
+var    variant Yes     false   \N      NONE
+var.a  bigint  Yes     false   \N      NONE
+var.b  double  Yes     false   \N      NONE
+var.c  text    Yes     false   \N      NONE
+var.d  boolean Yes     false   \N      NONE
+var.f  largeint        Yes     false   \N      NONE
+
+-- !sql --
+1      {"a":1,"b":1.1,"c":"string","d":1,"f":18446744073709551615}
+2      {"g":[1, 2, 3],"h":[1.1, 2.2],"i":["string", "string2"],"j":[1, 
0],"l":[18446744073709551615, 18446744073709551605]}
+
+-- !sql_array --
+id     int     Yes     true    \N      
+var    variant Yes     false   \N      NONE
+var.a  bigint  Yes     false   \N      NONE
+var.b  double  Yes     false   \N      NONE
+var.c  text    Yes     false   \N      NONE
+var.d  boolean Yes     false   \N      NONE
+var.f  largeint        Yes     false   \N      NONE
+var.g  array<bigint>   Yes     false   \N      NONE
+var.h  array<double>   Yes     false   \N      NONE
+var.i  array<text>     Yes     false   \N      NONE
+var.j  array<boolean>  Yes     false   \N      NONE
+var.l  array<largeint> Yes     false   \N      NONE
+
+-- !sql --
+1      {"a":1,"b":1.1,"c":"string","d":1,"f":18446744073709551615}
+2      {"g":[1, 2, 3],"h":[1.1, 2.2],"i":["string", "string2"],"j":[1, 
0],"l":[18446744073709551615, 18446744073709551605]}
+3      {"m":[1, 18446744073709551605]}
+
+-- !sql_array_largeint --
+id     int     Yes     true    \N      
+var    variant Yes     false   \N      NONE
+var.a  bigint  Yes     false   \N      NONE
+var.b  double  Yes     false   \N      NONE
+var.c  text    Yes     false   \N      NONE
+var.d  boolean Yes     false   \N      NONE
+var.f  largeint        Yes     false   \N      NONE
+var.g  array<bigint>   Yes     false   \N      NONE
+var.h  array<double>   Yes     false   \N      NONE
+var.i  array<text>     Yes     false   \N      NONE
+var.j  array<boolean>  Yes     false   \N      NONE
+var.l  array<largeint> Yes     false   \N      NONE
+var.m  array<largeint> Yes     false   \N      NONE
+
+-- !sql --
+1      {"a":1,"b":1.1,"c":"string","d":1,"f":18446744073709551615}
+2      {"g":[1, 2, 3],"h":[1.1, 2.2],"i":["string", "string2"],"j":[1, 
0],"l":[18446744073709551615, 18446744073709551605]}
+3      {"m":[1, 18446744073709551605]}
+4      {"n":[2, "string", null, true, 1.1, 18446744073709551615]}
+
+-- !sql_array_json --
+id     int     Yes     true    \N      
+var    variant Yes     false   \N      NONE
+var.a  bigint  Yes     false   \N      NONE
+var.b  double  Yes     false   \N      NONE
+var.c  text    Yes     false   \N      NONE
+var.d  boolean Yes     false   \N      NONE
+var.f  largeint        Yes     false   \N      NONE
+var.g  array<bigint>   Yes     false   \N      NONE
+var.h  array<double>   Yes     false   \N      NONE
+var.i  array<text>     Yes     false   \N      NONE
+var.j  array<boolean>  Yes     false   \N      NONE
+var.l  array<largeint> Yes     false   \N      NONE
+var.m  array<largeint> Yes     false   \N      NONE
+var.n  array<json>     Yes     false   \N      NONE
+
+-- !sql --
+1      {"a":1,"b":1.1,"c":"string","d":1,"f":18446744073709551615}
+2      {"g":[1, 2, 3],"h":[1.1, 2.2],"i":["string", "string2"],"j":[1, 
0],"l":[18446744073709551615, 18446744073709551605]}
+3      {"m":[1, 18446744073709551605]}
+4      {"n":[2, "string", null, true, 1.1, 18446744073709551615]}
+5      {"o":[18446744073709551615,["string",null]]}
+
+-- !sql_json --
+id     int     Yes     true    \N      
+var    variant Yes     false   \N      NONE
+var.a  bigint  Yes     false   \N      NONE
+var.b  double  Yes     false   \N      NONE
+var.c  text    Yes     false   \N      NONE
+var.d  boolean Yes     false   \N      NONE
+var.f  largeint        Yes     false   \N      NONE
+var.g  array<bigint>   Yes     false   \N      NONE
+var.h  array<double>   Yes     false   \N      NONE
+var.i  array<text>     Yes     false   \N      NONE
+var.j  array<boolean>  Yes     false   \N      NONE
+var.l  array<largeint> Yes     false   \N      NONE
+var.m  array<largeint> Yes     false   \N      NONE
+var.n  array<json>     Yes     false   \N      NONE
+var.o  json    Yes     false   \N      NONE
+
+-- !sql --
+1      {"a":[{"b":18446744073709551615}]}
+
+-- !sql_array_largeint --
+id     int     Yes     true    \N      
+var    variant Yes     false   \N      NONE
+var.a.b        array<largeint> Yes     false   \N      NONE
+
+-- !sql --
+1      {"a":[{"b":18446744073709551615}]}
+2      {"a":[{"b":1}]}
+
+-- !sql_array_largeint --
+id     int     Yes     true    \N      
+var    variant Yes     false   \N      NONE
+var.a.b        array<largeint> Yes     false   \N      NONE
+
+-- !sql --
+1      {"a":[{"b":18446744073709551615}]}
+2      {"a":[{"b":1}]}
+3      {"a":[{"b":1.1}]}
+
+-- !sql_array_json --
+id     int     Yes     true    \N      
+var    variant Yes     false   \N      NONE
+var.a.b        array<json>     Yes     false   \N      NONE
+
diff --git a/regression-test/data/variant_p0/tpch/sql/q01_trans.out 
b/regression-test/data/variant_p0/tpch/sql/q01_trans.out
index c5d260caf13..301aa0df649 100644
--- a/regression-test/data/variant_p0/tpch/sql/q01_trans.out
+++ b/regression-test/data/variant_p0/tpch/sql/q01_trans.out
@@ -1,7 +1,7 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
 -- !q01_trans --
-A      F       3774200.0       5.320753880689995E9     5.054096266682795E9     
5.256751331449231E9     25.537587116854997      36002.123829014105      
0.05014459706338475     147790
-N      F       95257.0 1.3373779584000006E8    1.2713237265119994E8    
1.3228629122944497E8    25.30066401062417       35521.32691633468       
0.04939442231075703     3765
-N      O       7459297.0       1.0512270008900036E10   9.986238338384706E9     
1.0385578376585476E10   25.545537671232875      36000.92468801382       
0.05009595890410998     292000
-R      F       3785523.0       5.337950526470003E9     5.071818532942003E9     
5.274405503049376E9     25.5259438574251        35994.02921403095       
0.04998927856182775     148301
+A      F       3774200.0       5.320753880689977E9     5.054096266682804E9     
5.256751331449211E9     25.537587116854997      36002.12382901398       
0.050144597063415716    147790
+N      F       95257.0 1.3373779583999993E8    1.2713237265119982E8    
1.3228629122944513E8    25.30066401062417       35521.32691633464       
0.049394422310757       3765
+N      O       7459297.0       1.051227000889986E10    9.98623833838472E9      
1.0385578376585447E10   25.545537671232875      36000.92468801322       
0.05009595890416299     292000
+R      F       3785523.0       5.337950526470014E9     5.071818532942053E9     
5.27440550304943E9      25.5259438574251        35994.02921403101       
0.049989278561858454    148301
 
diff --git a/regression-test/data/variant_p0/tpch/sql/q05_trans.out 
b/regression-test/data/variant_p0/tpch/sql/q05_trans.out
index 7eb16fd3e96..53ad07b7e6b 100644
--- a/regression-test/data/variant_p0/tpch/sql/q05_trans.out
+++ b/regression-test/data/variant_p0/tpch/sql/q05_trans.out
@@ -1,7 +1,7 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
 -- !q05_trans --
 CHINA  7822103.0
-INDIA  6376121.508500004
+INDIA  6376121.508500003
 JAPAN  6000077.218400001
 INDONESIA      5580475.402700002
 VIETNAM        4497840.546600001
diff --git a/regression-test/data/variant_p0/tpch/sql/q06_trans.out 
b/regression-test/data/variant_p0/tpch/sql/q06_trans.out
index 174241a7cd2..0ec07a8e4d1 100644
--- a/regression-test/data/variant_p0/tpch/sql/q06_trans.out
+++ b/regression-test/data/variant_p0/tpch/sql/q06_trans.out
@@ -1,4 +1,4 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
 -- !q06_trans --
-1.1803420253399998E7
+1.1803420253400004E7
 
diff --git a/regression-test/data/variant_p0/tpch/sql/q08_trans.out 
b/regression-test/data/variant_p0/tpch/sql/q08_trans.out
index b248362fce4..bf9abf8d22d 100644
--- a/regression-test/data/variant_p0/tpch/sql/q08_trans.out
+++ b/regression-test/data/variant_p0/tpch/sql/q08_trans.out
@@ -1,5 +1,5 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
 -- !q08_trans --
-1995   0.028648741305617544
-1996   0.01825027910796215
+1995   0.028648741305617537
+1996   0.018250279107962144
 
diff --git a/regression-test/data/variant_p0/tpch/sql/q09_trans.out 
b/regression-test/data/variant_p0/tpch/sql/q09_trans.out
index 807b50ef4e7..f14bf75451a 100644
--- a/regression-test/data/variant_p0/tpch/sql/q09_trans.out
+++ b/regression-test/data/variant_p0/tpch/sql/q09_trans.out
@@ -1,178 +1,178 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
 -- !q09_trans --
-ALGERIA        1998    2321785.3682000004
-ALGERIA        1997    3685016.8589
-ALGERIA        1996    4276597.4252999965
-ALGERIA        1995    4418370.4153999975
-ALGERIA        1994    3864849.952099998
-ALGERIA        1993    3541051.386499998
-ALGERIA        1992    4310013.348199998
-ARGENTINA      1998    2685983.8005
+ALGERIA        1998    2321785.3681999994
+ALGERIA        1997    3685016.8589000003
+ALGERIA        1996    4276597.4253
+ALGERIA        1995    4418370.4154
+ALGERIA        1994    3864849.9521
+ALGERIA        1993    3541051.3865000014
+ALGERIA        1992    4310013.348199999
+ARGENTINA      1998    2685983.8005000004
 ARGENTINA      1997    4242147.8124
-ARGENTINA      1996    3907867.0103000016
-ARGENTINA      1995    4605921.501099999
-ARGENTINA      1994    3542096.1564
-ARGENTINA      1993    3949965.9387999987
-ARGENTINA      1992    4521180.4695
+ARGENTINA      1996    3907867.0103000007
+ARGENTINA      1995    4605921.501100001
+ARGENTINA      1994    3542096.1564000007
+ARGENTINA      1993    3949965.9388000006
+ARGENTINA      1992    4521180.469500001
 BRAZIL 1998    2778730.393099999
-BRAZIL 1997    4642037.468700003
+BRAZIL 1997    4642037.468700002
 BRAZIL 1996    4530304.603400001
-BRAZIL 1995    4502344.865700001
-BRAZIL 1994    4875806.501500003
+BRAZIL 1995    4502344.865699999
+BRAZIL 1994    4875806.5015
 BRAZIL 1993    4687478.6531
 BRAZIL 1992    5035200.046399999
 CANADA 1998    2194509.0465
-CANADA 1997    3482197.9520999985
-CANADA 1996    3712231.281399999
-CANADA 1995    4014814.847599998
+CANADA 1997    3482197.9521000013
+CANADA 1996    3712231.2813999983
+CANADA 1995    4014814.8475999995
 CANADA 1994    4145304.485499999
-CANADA 1993    3787069.604499998
-CANADA 1992    4168009.420099999
-CHINA  1998    3398578.0001000008
-CHINA  1997    6358959.3338
-CHINA  1996    6435158.322900003
-CHINA  1995    6174776.211300001
-CHINA  1994    6385751.081199998
-CHINA  1993    5765034.119399997
-CHINA  1992    6324034.237900005
+CANADA 1993    3787069.6044999985
+CANADA 1992    4168009.4200999998
+CHINA  1998    3398578.0001000003
+CHINA  1997    6358959.333799999
+CHINA  1996    6435158.322899999
+CHINA  1995    6174776.2113
+CHINA  1994    6385751.081199999
+CHINA  1993    5765034.119400001
+CHINA  1992    6324034.237899998
 EGYPT  1998    2333148.3334000004
-EGYPT  1997    3661244.2730999994
-EGYPT  1996    3765371.2367999996
-EGYPT  1995    4094744.292499998
-EGYPT  1994    3566508.081800001
-EGYPT  1993    3725283.7747000013
-EGYPT  1992    3373762.333499999
-ETHIOPIA       1998    1953927.2682
-ETHIOPIA       1997    3285786.3266000007
-ETHIOPIA       1996    3525028.7952
-ETHIOPIA       1995    3781674.8910999987
-ETHIOPIA       1994    3037409.435999999
+EGYPT  1997    3661244.2731
+EGYPT  1996    3765371.2368000015
+EGYPT  1995    4094744.292499999
+EGYPT  1994    3566508.081799999
+EGYPT  1993    3725283.7747000004
+EGYPT  1992    3373762.3334999983
+ETHIOPIA       1998    1953927.2682000003
+ETHIOPIA       1997    3285786.3266
+ETHIOPIA       1996    3525028.795199999
+ETHIOPIA       1995    3781674.8911000006
+ETHIOPIA       1994    3037409.4360000007
 ETHIOPIA       1993    3008978.2677000007
-ETHIOPIA       1992    2721203.235500001
-FRANCE 1998    2604373.8804999986
-FRANCE 1997    3982872.0488000023
-FRANCE 1996    3622479.2412999994
+ETHIOPIA       1992    2721203.2354999995
+FRANCE 1998    2604373.8805000014
+FRANCE 1997    3982872.0488
+FRANCE 1996    3622479.2413000013
 FRANCE 1995    4479939.702
-FRANCE 1994    3531013.1981000025
-FRANCE 1993    4086437.3101999997
-FRANCE 1992    3637792.1333
-GERMANY        1998    3291023.2964999974
-GERMANY        1997    5139337.344300003
+FRANCE 1994    3531013.1981
+FRANCE 1993    4086437.310200001
+FRANCE 1992    3637792.1332999994
+GERMANY        1998    3291023.2964999997
+GERMANY        1997    5139337.344299995
 GERMANY        1996    4799810.457699999
-GERMANY        1995    5405785.797800004
-GERMANY        1994    4555556.459199997
-GERMANY        1993    4428195.101900002
-GERMANY        1992    4656148.420400001
-INDIA  1998    2591288.187399999
+GERMANY        1995    5405785.797800001
+GERMANY        1994    4555556.4591999985
+GERMANY        1993    4428195.101900001
+GERMANY        1992    4656148.420399998
+INDIA  1998    2591288.1873999997
 INDIA  1997    5159562.7033
-INDIA  1996    5307258.304900003
-INDIA  1995    5148208.790199999
-INDIA  1994    5164001.958200001
-INDIA  1993    4321398.438800003
-INDIA  1992    5297703.693499999
-INDONESIA      1998    3094900.159700001
-INDONESIA      1997    5719773.035799999
-INDONESIA      1996    6037238.599300002
-INDONESIA      1995    5266783.489899999
-INDONESIA      1994    5470762.872900001
-INDONESIA      1993    6189826.661299997
-INDONESIA      1992    4414623.154899998
-IRAN   1998    3214864.120900001
-IRAN   1997    3688049.0690999986
-IRAN   1996    3621649.2246999983
-IRAN   1995    4420783.4205
-IRAN   1994    4373984.652300001
-IRAN   1993    3731301.7814000007
+INDIA  1996    5307258.304899999
+INDIA  1995    5148208.7902
+INDIA  1994    5164001.958199998
+INDIA  1993    4321398.438800001
+INDIA  1992    5297703.693500002
+INDONESIA      1998    3094900.1597000016
+INDONESIA      1997    5719773.035800001
+INDONESIA      1996    6037238.599299999
+INDONESIA      1995    5266783.4898999985
+INDONESIA      1994    5470762.872899999
+INDONESIA      1993    6189826.661299998
+INDONESIA      1992    4414623.154899999
+IRAN   1998    3214864.120899999
+IRAN   1997    3688049.0691
+IRAN   1996    3621649.2247
+IRAN   1995    4420783.420500001
+IRAN   1994    4373984.6523
+IRAN   1993    3731301.7813999997
 IRAN   1992    4417133.366199998
 IRAQ   1998    2338859.4098999994
-IRAQ   1997    3622681.5642999993
-IRAQ   1996    4762291.872199997
-IRAQ   1995    4558092.735900002
-IRAQ   1994    4951604.169899996
-IRAQ   1993    3830077.991100002
-IRAQ   1992    3938636.4873999986
+IRAQ   1997    3622681.5643000007
+IRAQ   1996    4762291.872199998
+IRAQ   1995    4558092.735899999
+IRAQ   1994    4951604.169899999
+IRAQ   1993    3830077.9910999998
+IRAQ   1992    3938636.487400001
 JAPAN  1998    1849535.0802000004
-JAPAN  1997    4068688.8536999994
-JAPAN  1996    4044774.7597000017
-JAPAN  1995    4793005.802699999
+JAPAN  1997    4068688.8537000003
+JAPAN  1996    4044774.7597
+JAPAN  1995    4793005.802700002
 JAPAN  1994    4114717.056800001
-JAPAN  1993    3614468.7485000007
-JAPAN  1992    4266694.470000001
-JORDAN 1998    1811488.0718999994
+JAPAN  1993    3614468.7485
+JAPAN  1992    4266694.47
+JORDAN 1998    1811488.0719000003
 JORDAN 1997    2951297.867800001
 JORDAN 1996    3302528.3067000005
-JORDAN 1995    3221813.9990000012
-JORDAN 1994    2417892.092100001
-JORDAN 1993    3107641.7661000015
-JORDAN 1992    3316379.0585000003
-KENYA  1998    2579075.4189999984
-KENYA  1997    2929194.231699999
-KENYA  1996    3569129.5618999996
-KENYA  1995    3542889.108699999
-KENYA  1994    3983095.399400002
-KENYA  1993    3713988.970799999
-KENYA  1992    3304641.8340000007
-MOROCCO        1998    1815334.818000001
-MOROCCO        1997    3693214.8447000002
+JORDAN 1995    3221813.998999999
+JORDAN 1994    2417892.0921
+JORDAN 1993    3107641.7660999987
+JORDAN 1992    3316379.0584999993
+KENYA  1998    2579075.419
+KENYA  1997    2929194.2317
+KENYA  1996    3569129.5619
+KENYA  1995    3542889.108700001
+KENYA  1994    3983095.3993999995
+KENYA  1993    3713988.9708000016
+KENYA  1992    3304641.8340000017
+MOROCCO        1998    1815334.8180000004
+MOROCCO        1997    3693214.8447
 MOROCCO        1996    4116175.923
-MOROCCO        1995    3515127.140199998
-MOROCCO        1994    4003072.111999998
-MOROCCO        1993    3599199.6679000016
-MOROCCO        1992    3958335.4223999996
-MOZAMBIQUE     1998    1620428.7346
-MOZAMBIQUE     1997    2802166.647299999
-MOZAMBIQUE     1996    2409955.1754999985
-MOZAMBIQUE     1995    2771602.6274
-MOZAMBIQUE     1994    2548226.215799999
-MOZAMBIQUE     1993    2843748.905299998
-MOZAMBIQUE     1992    2556501.0943000014
-PERU   1998    2036430.3602
-PERU   1997    4064142.409099999
-PERU   1996    4068678.5671000006
-PERU   1995    4657694.841199998
-PERU   1994    4731959.465500002
-PERU   1993    4144006.660999999
-PERU   1992    3754635.007800001
-ROMANIA        1998    1992773.6811
+MOROCCO        1995    3515127.1401999993
+MOROCCO        1994    4003072.111999999
+MOROCCO        1993    3599199.6679000002
+MOROCCO        1992    3958335.4224
+MOZAMBIQUE     1998    1620428.7345999996
+MOZAMBIQUE     1997    2802166.6473000012
+MOZAMBIQUE     1996    2409955.1755
+MOZAMBIQUE     1995    2771602.6274000006
+MOZAMBIQUE     1994    2548226.2158000004
+MOZAMBIQUE     1993    2843748.9052999993
+MOZAMBIQUE     1992    2556501.094299999
+PERU   1998    2036430.360199999
+PERU   1997    4064142.409100001
+PERU   1996    4068678.5671
+PERU   1995    4657694.8412
+PERU   1994    4731959.465499998
+PERU   1993    4144006.661
+PERU   1992    3754635.0078000003
+ROMANIA        1998    1992773.6810999997
 ROMANIA        1997    2854639.868
-ROMANIA        1996    3139337.3029000005
-ROMANIA        1995    3222153.3776
-ROMANIA        1994    3222844.319000001
-ROMANIA        1993    3488994.0287999976
-ROMANIA        1992    3029274.4420000007
-RUSSIA 1998    2339865.6635000003
-RUSSIA 1997    4153619.5424000006
+ROMANIA        1996    3139337.3029
+ROMANIA        1995    3222153.3775999993
+ROMANIA        1994    3222844.319
+ROMANIA        1993    3488994.0288
+ROMANIA        1992    3029274.441999999
+RUSSIA 1998    2339865.6635000007
+RUSSIA 1997    4153619.5424
 RUSSIA 1996    3772067.4041000023
-RUSSIA 1995    4704988.860700001
+RUSSIA 1995    4704988.8607
 RUSSIA 1994    4479082.8694
-RUSSIA 1993    4767719.979100001
+RUSSIA 1993    4767719.9791
 RUSSIA 1992    4533465.559
-SAUDI ARABIA   1998    3386948.9564000014
-SAUDI ARABIA   1997    5425980.3373
+SAUDI ARABIA   1998    3386948.956399999
+SAUDI ARABIA   1997    5425980.337299998
 SAUDI ARABIA   1996    5227607.167700001
-SAUDI ARABIA   1995    4506731.641100001
-SAUDI ARABIA   1994    4698658.742499998
+SAUDI ARABIA   1995    4506731.6411000015
+SAUDI ARABIA   1994    4698658.742500001
 SAUDI ARABIA   1993    5493626.528499995
-SAUDI ARABIA   1992    4573560.014999997
-UNITED KINGDOM 1998    2252021.5136999995
-UNITED KINGDOM 1997    4343926.802599999
-UNITED KINGDOM 1996    4189476.3064999986
-UNITED KINGDOM 1995    4469569.8829
-UNITED KINGDOM 1994    4410094.626399997
-UNITED KINGDOM 1993    4054677.104999997
+SAUDI ARABIA   1992    4573560.014999998
+UNITED KINGDOM 1998    2252021.5137
+UNITED KINGDOM 1997    4343926.8026
+UNITED KINGDOM 1996    4189476.3065
+UNITED KINGDOM 1995    4469569.882899998
+UNITED KINGDOM 1994    4410094.6263999995
+UNITED KINGDOM 1993    4054677.105000002
 UNITED KINGDOM 1992    3978688.8831000007
-UNITED STATES  1998    2238771.558099999
-UNITED STATES  1997    4135581.5733999996
-UNITED STATES  1996    3624013.266
-UNITED STATES  1995    3892244.517199999
-UNITED STATES  1994    3289224.113800001
-UNITED STATES  1993    3626170.2027999996
-UNITED STATES  1992    3993973.499699999
+UNITED STATES  1998    2238771.5580999996
+UNITED STATES  1997    4135581.5733999982
+UNITED STATES  1996    3624013.2659999984
+UNITED STATES  1995    3892244.517200001
+UNITED STATES  1994    3289224.1137999995
+UNITED STATES  1993    3626170.202799999
+UNITED STATES  1992    3993973.499700001
 VIETNAM        1998    1924313.4862000004
 VIETNAM        1997    3436195.370900001
-VIETNAM        1996    4017288.8926999997
-VIETNAM        1995    3644054.137200001
-VIETNAM        1994    4141277.6664999984
-VIETNAM        1993    2556114.1693
-VIETNAM        1992    4090524.4905000003
+VIETNAM        1996    4017288.8927000016
+VIETNAM        1995    3644054.1371999998
+VIETNAM        1994    4141277.6665000003
+VIETNAM        1993    2556114.1693000006
+VIETNAM        1992    4090524.4904999994
 
diff --git a/regression-test/data/variant_p0/tpch/sql/q10_trans.out 
b/regression-test/data/variant_p0/tpch/sql/q10_trans.out
index d99b59521e3..e92c9999959 100644
--- a/regression-test/data/variant_p0/tpch/sql/q10_trans.out
+++ b/regression-test/data/variant_p0/tpch/sql/q10_trans.out
@@ -1,11 +1,11 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
 -- !q10_trans --
-8242   Customer#000008242      622786.7296999999       6322.09 ETHIOPIA        
P2n4nJhy,UqSo2s43YfSvYJDZ6lk    15-792-676-1184 slyly regular packages haggle 
carefully ironic ideas. courts are furiously. furiously unusual theodolites 
cajole. i
+8242   Customer#000008242      622786.7297     6322.09 ETHIOPIA        
P2n4nJhy,UqSo2s43YfSvYJDZ6lk    15-792-676-1184 slyly regular packages haggle 
carefully ironic ideas. courts are furiously. furiously unusual theodolites 
cajole. i
 7714   Customer#000007714      557400.3053     9799.98 IRAN    SnnIGB,SkmnWpX3 
20-922-418-6024 arhorses according to the blithely express re
-11032  Customer#000011032      512500.9641     8496.93 UNITED KINGDOM  
WIKHC7K3Cn7156iNOyfVG3cZ7YqkgsR,Ly      33-102-772-3533 posits-- furiously 
ironic accounts are again
+11032  Customer#000011032      512500.9640999999       8496.93 UNITED KINGDOM  
WIKHC7K3Cn7156iNOyfVG3cZ7YqkgsR,Ly      33-102-772-3533 posits-- furiously 
ironic accounts are again
 2455   Customer#000002455      481592.40530000004      2070.99 GERMANY 
RVn1ZSRtLqPlJLIZxvpmsbgC02      17-946-225-9977 al asymptotes. finally ironic 
accounts cajole furiously. permanently unusual theodolites aro
 12106  Customer#000012106      479414.21330000006      5342.11 UNITED STATES   
wth3twOmu6vy    34-905-346-4472 ly after the blithely regular foxes. accounts 
haggle carefully alongside of the blithely even ideas.
-8530   Customer#000008530      457855.9467     9734.95 MOROCCO 
GMQyte94oDM7eD7exnkj 4hH9yq3    25-736-932-5850 slyly asymptotes. quickly final 
deposits in
+8530   Customer#000008530      457855.94670000003      9734.95 MOROCCO 
GMQyte94oDM7eD7exnkj 4hH9yq3    25-736-932-5850 slyly asymptotes. quickly final 
deposits in
 13984  Customer#000013984      446316.5104000001       3482.28 IRAN    
qZXwuapCHvxbX   20-981-264-2952 y unusual courts could wake furiously
 1966   Customer#000001966      444059.03819999995      1937.72 ALGERIA jPv1 
UHra5JLALR5Isci5u0636RoAu7t vH     10-973-269-8886 the blithely even accounts. 
final deposits cajole around the blithely final packages. 
 11026  Customer#000011026      417913.4142     7738.76 ALGERIA 
XorIktoJOAEJkpNNMx      10-184-163-4632 ly even dolphins eat along the blithely 
even instructions. express attainments cajole slyly. busy dolphins in
@@ -14,10 +14,10 @@
 14398  Customer#000014398      408575.36000000004      -602.24 UNITED STATES   
GWRCgIPHajtU21vICVvbJJerFu2cUk  34-814-111-5424 s. blithely even accounts 
cajole blithely. even foxes doubt-- 
 1465   Customer#000001465      405055.34569999995      9365.93 INDIA   
tDRaTC7UgFbBX7VF6cVXYQA0        18-807-487-1074 s lose blithely ironic, regular 
packages. regular, final foxes haggle c
 12595  Customer#000012595      401402.23909999995      -6.92   INDIA   
LmeaX5cR,w9NqKugl yRm98 18-186-132-3352 o the busy accounts. blithely special 
gifts maintain a
-961    Customer#000000961      401198.17370000004      6963.68 JAPAN   
5,81YDLFuRR47KKzv8GXdmi3zyP37PlPn       22-989-463-6089 e final requests: 
busily final accounts believe a
+961    Customer#000000961      401198.1737     6963.68 JAPAN   
5,81YDLFuRR47KKzv8GXdmi3zyP37PlPn       22-989-463-6089 e final requests: 
busily final accounts believe a
 14299  Customer#000014299      400968.3751     6595.97 RUSSIA  
7lFczTya0iM1bhEWT       32-156-618-1224  carefully regular requests. quickly 
ironic accounts against the ru
 623    Customer#000000623      399883.42569999996      7887.6  INDONESIA       
HXiFb9oWlgqZXrJPUCEJ6zZIPxAM4m6 19-113-202-7085  requests. dolphins above the 
busily regular dependencies cajole after
 9151   Customer#000009151      396562.0295     5691.95 IRAQ    
7gIdRdaxB91EVdyx8DyPjShpMD      21-834-147-4906 ajole fluffily. furiously 
regular accounts are special, silent account
 14819  Customer#000014819      396271.10360000003      7308.39 FRANCE  
w8StIbymUXmLCcUag6sx6LUIp8E3pA,Ux       16-769-398-7926 ss, final asymptotes 
use furiously slyly ironic dependencies. special, express dugouts according to 
the dep
-13478  Customer#000013478      395513.13580000005      -778.11 KENYA   
9VIsvIeZrJpC6OOdYheMC2vdtq8Ai0Rt        24-983-202-8240 r theodolites. slyly 
unusual pinto beans sleep fluffily against the asymptotes. quickly r
+13478  Customer#000013478      395513.1358     -778.11 KENYA   
9VIsvIeZrJpC6OOdYheMC2vdtq8Ai0Rt        24-983-202-8240 r theodolites. slyly 
unusual pinto beans sleep fluffily against the asymptotes. quickly r
 
diff --git 
a/regression-test/suites/fault_injection_p0/test_variant_bloom_filter.groovy 
b/regression-test/suites/fault_injection_p0/test_variant_bloom_filter.groovy
index 63f1d4e79f2..fa20bbbe072 100644
--- a/regression-test/suites/fault_injection_p0/test_variant_bloom_filter.groovy
+++ b/regression-test/suites/fault_injection_p0/test_variant_bloom_filter.groovy
@@ -121,7 +121,7 @@ suite("test_variant_bloom_filter", "nonConcurrent") {
         
GetDebugPoint().enableDebugPointForAllBEs("bloom_filter_must_filter_data")
 
         // number
-        qt_sql1 """ select cast(v['repo']['id'] as int) from ${index_table} 
where cast(v['repo']['id'] as int) = 20291263; """
+        qt_sql1 """ select cast(v['repo']['id'] as bigint) from ${index_table} 
where cast(v['repo']['id'] as bigint) = 20291263; """
 
         // string
         qt_sql2 """ select cast(v['repo']['name'] as text) from ${index_table} 
where cast(v['repo']['name'] as text) = "ridget/dotfiles"; """
diff --git 
a/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy 
b/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy
index 99ec6d84088..7f8a00b5dd3 100644
--- a/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy
+++ b/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy
@@ -157,7 +157,7 @@ suite("test_predefine_ddl", "p0") {
             INDEX idx_ab (var) USING INVERTED PROPERTIES("field_pattern"="ab", 
"parser"="unicode", "support_phrase" = "true") COMMENT ''
         ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`)
         BUCKETS 1 PROPERTIES ( "replication_allocation" = 
"tag.location.default: 1", "disable_auto_compaction" = "true")"""
-        exception("""Duplicate field name ab in variant variant<MATCH_NAME 
'ab':int,MATCH_NAME 'ab':text,PROPERTIES ("variant_max_subcolumns_count" = 
"10","variant_enable_typed_paths_to_sparse" = "true")>""")
+        exception("""Duplicate field name ab in variant""")
     }
 
     test {
@@ -314,6 +314,7 @@ suite("test_predefine_ddl", "p0") {
     sql "DROP TABLE IF EXISTS ${tableName}"
     sql "set default_variant_max_subcolumns_count = 10"
     sql "set default_variant_enable_typed_paths_to_sparse = false"
+    sql "set default_variant_sparse_hash_shard_count = 20"
     sql """CREATE TABLE ${tableName} (
         `id` bigint NULL,
         `var` variant NULL
diff --git 
a/regression-test/suites/variant_p0/predefine/variant_hirachinal.groovy 
b/regression-test/suites/variant_p0/predefine/variant_hirachinal.groovy
index f131984d026..8edb50af80c 100644
--- a/regression-test/suites/variant_p0/predefine/variant_hirachinal.groovy
+++ b/regression-test/suites/variant_p0/predefine/variant_hirachinal.groovy
@@ -18,12 +18,11 @@
 suite("regression_test_variant_predefine_hirachinal", "variant_type"){
     def table_name = "var_rs"
     sql "DROP TABLE IF EXISTS ${table_name}"
-    int count = new Random().nextInt(10)
 
     sql """
             CREATE TABLE IF NOT EXISTS ${table_name} (
                 k bigint,
-                v variant<'a' : largeint, 'c.d' : text, 
properties("variant_max_subcolumns_count" = "${count}")>
+                v variant<'a' : largeint, 'c.d' : text, 
properties("variant_max_subcolumns_count" = "0")>
             )
             DUPLICATE KEY(`k`)
             DISTRIBUTED BY HASH(k) BUCKETS 1
@@ -31,7 +30,7 @@ suite("regression_test_variant_predefine_hirachinal", 
"variant_type"){
         """
     sql """insert into ${table_name} values (-3, '{"a" : 1, "b" : 1.5, "c" : 
[1, 2, 3]}')"""
     sql """insert into  ${table_name} select * from (select -2, '{"a": 11245, 
"b" : [123, {"xx" : 1}], "c" : {"c" : 456, "d" : "null", "e" : 7.111}}'  as 
json_str
-            union  all select -1, '{"a": 1123}' as json_str union all select 
*, '{"a" : 1234, "xxxx" : "kaana"}' as json_str from numbers("number" = 
"4096"))t order by 1 limit 4096 ;"""
+            union  all select -1, '{"a": 1123}' as json_str union all select 
*, '{"a" : 1234, "xxxx" : "kaana"}' as json_str from numbers("number" = 
"4096"))t order by 1 limit 4098 ;"""
     qt_sql "select * from ${table_name} order by k limit 10"
     qt_sql "select cast(v['c'] as string) from ${table_name} where k = -3 or k 
= -2 order by k"
     qt_sql "select v['b'] from ${table_name} where k = -3 or k = -2"
diff --git a/regression-test/suites/variant_p0/test_types_in_variant.groovy 
b/regression-test/suites/variant_p0/test_types_in_variant.groovy
new file mode 100644
index 00000000000..9b635be6290
--- /dev/null
+++ b/regression-test/suites/variant_p0/test_types_in_variant.groovy
@@ -0,0 +1,103 @@
+// 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.
+
+suite("regression_test_variant_types", "var_view") {
+
+    def table_name = "test_variant_types"
+    sql "drop table if exists ${table_name}"
+    
+    sql """
+        create table ${table_name} (
+            id int,
+            var variant<properties("variant_max_subcolumns_count" = "0")>
+        ) engine = olap
+        duplicate key (id)
+        distributed by hash(id) buckets 1
+        properties ("replication_num" = "1")
+    """
+
+    sql """
+        insert into ${table_name} (id, var) values (1, '{"a": 1, "b": 1.1, 
"c": "string", "d": true, "e": null, "f": 18446744073709551615}');
+    """
+
+    sql """
+        select * from ${table_name};
+    """
+
+    sql """set describe_extend_variant_column = true"""
+
+    qt_sql_scalar "desc ${table_name}"
+    
+    sql """ insert into ${table_name} (id, var) values (2, '{"g": [1, 2, 3], 
"h": [1.1, 2.2], "i": ["string", "string2"], "j": [true, false], "l": 
[18446744073709551615, 18446744073709551605]}'); """
+    
+    qt_sql "select * from ${table_name} order by id"
+
+    qt_sql_array "desc ${table_name}"
+
+    sql """ insert into ${table_name} (id, var) values (3, '{"m": [1, 
18446744073709551605]}'); """
+
+    qt_sql "select * from ${table_name} order by id"
+
+    qt_sql_array_largeint "desc ${table_name}"
+
+    sql """ insert into ${table_name} (id, var) values (4, '{"n": [2, 
"string", null, true, 1.1, 18446744073709551615]}'); """
+    
+    qt_sql "select * from ${table_name} order by id"
+
+    qt_sql_array_json "desc ${table_name}"
+    
+    sql """ insert into ${table_name} (id, var) values (5, '{"o": 
[18446744073709551615, ["string", null]]}'); """
+    
+    qt_sql "select * from ${table_name} order by id"
+
+    qt_sql_json "desc ${table_name}"
+
+     sql "drop table if exists ${table_name}"
+
+     sql """ set enable_variant_flatten_nested = true """
+    
+    sql """
+        create table ${table_name} (
+            id int,
+            var variant<properties("variant_max_subcolumns_count" = "0")>
+        ) engine = olap
+        duplicate key (id)
+        distributed by hash(id) buckets 1
+        properties ("replication_num" = "1", "variant_enable_flatten_nested" = 
"true")
+    """
+
+    sql """ set enable_variant_flatten_nested = false """
+
+    sql """ insert into ${table_name} (id, var) values (1, '{"a": [{"b" : 
18446744073709551615}]}'); """
+
+    qt_sql "select * from ${table_name} order by id"
+
+    qt_sql_array_largeint "desc ${table_name}"
+    
+    sql """ insert into ${table_name} (id, var) values (2, '{"a": [{"b" : 
true}]}'); """
+
+    qt_sql "select * from ${table_name} order by id"
+
+    qt_sql_array_largeint "desc ${table_name}"
+
+    sql """ insert into ${table_name} (id, var) values (3, '{"a": [{"b" : 
1.1}]}'); """
+
+
+    qt_sql "select * from ${table_name} order by id"
+
+    qt_sql_array_json "desc ${table_name}"
+}
\ No newline at end of file
diff --git a/regression-test/suites/variant_p0/test_variant_is_null_expr.groovy 
b/regression-test/suites/variant_p0/test_variant_is_null_expr.groovy
index 2c7ba11f580..00cfd64922e 100644
--- a/regression-test/suites/variant_p0/test_variant_is_null_expr.groovy
+++ b/regression-test/suites/variant_p0/test_variant_is_null_expr.groovy
@@ -66,15 +66,15 @@ suite("test_variant_is_null_expr", "p0, nonConcurrent") {
     queryAndCheck (" select * from ${testTable} where v['int1'] is not null or 
v['string2'] is null; ", 1)
     queryAndCheck (" select * from ${testTable} where v['int1'] is not null or 
v['string2'] = 'bb'; ", 1)
     queryAndCheck (" select * from ${testTable} where v['int1'] is null or 
v['string2'] = 'bb'; ", 1)
-    queryAndCheck (" select * from ${testTable} where v['string2'] is not null 
or cast(v['int3'] as tinyint) = 3; ", 1)
+    queryAndCheck (" select * from ${testTable} where v['string2'] is not null 
or cast(v['int3'] as bigint) = 3; ", 1)
 
-    queryAndCheck (" select * from ${testTable} where cast(v['int1'] as 
tinyint) is not null or cast(v['string2'] as string) = 'bb'; ", 1)
-    queryAndCheck (" select * from ${testTable} where cast(v['int1'] as 
tinyint) is null or cast(v['string2'] as string) = 'bb'; ", 1)
-    queryAndCheck (" select * from ${testTable} where cast(v['string2'] as 
string) is not null or cast(v['int3'] as tinyint) = 3; ", 1)
+    queryAndCheck (" select * from ${testTable} where cast(v['int1'] as 
bigint) is not null or cast(v['string2'] as string) = 'bb'; ", 1)
+    queryAndCheck (" select * from ${testTable} where cast(v['int1'] as 
bigint) is null or cast(v['string2'] as string) = 'bb'; ", 1)
+    queryAndCheck (" select * from ${testTable} where cast(v['string2'] as 
string) is not null or cast(v['int3'] as bigint) = 3; ", 1)
 
     queryAndCheck (" select * from ${testTable} where (v['int1'] is not null 
and v['string2'] is null) or (v['int1'] is null and v['string2'] = 'bb'); ", 1)
     queryAndCheck (" select * from ${testTable} where (v['int1'] is null and 
v['string2'] = 'cc') or (v['int3'] is not null and v['string2'] = 'bb'); ", 3)
 
-    queryAndCheck (" select * from ${testTable} where (cast(v['int1'] as 
tinyint) is not null and cast(v['string2'] as string) is null) or 
(cast(v['int1'] as tinyint) is null and cast(v['string2'] as string) = 'bb'); 
", 1)
-    queryAndCheck (" select * from ${testTable} where (cast(v['int1'] as 
tinyint) is null and cast(v['string2'] as string) = 'cc') or (cast(v['int3'] as 
tinyint) is not null and cast(v['string2'] as string) = 'bb'); ", 3)
+    queryAndCheck (" select * from ${testTable} where (cast(v['int1'] as 
bigint) is not null and cast(v['string2'] as string) is null) or 
(cast(v['int1'] as bigint) is null and cast(v['string2'] as string) = 'bb'); ", 
1)
+    queryAndCheck (" select * from ${testTable} where (cast(v['int1'] as 
bigint) is null and cast(v['string2'] as string) = 'cc') or (cast(v['int3'] as 
bigint) is not null and cast(v['string2'] as string) = 'bb'); ", 3)
 }
diff --git a/regression-test/suites/variant_p0/variant_hirachinal.groovy 
b/regression-test/suites/variant_p0/variant_hirachinal.groovy
index 8ec3fde007c..fc7662a5a88 100644
--- a/regression-test/suites/variant_p0/variant_hirachinal.groovy
+++ b/regression-test/suites/variant_p0/variant_hirachinal.groovy
@@ -33,7 +33,7 @@ suite("regression_test_variant_hirachinal", "variant_type"){
     sql """
             CREATE TABLE IF NOT EXISTS ${table_name} (
                 k bigint,
-                v variant
+                v variant<properties("variant_max_subcolumns_count" = "0")>
             )
             DUPLICATE KEY(`k`)
             DISTRIBUTED BY HASH(k) BUCKETS 1
@@ -41,7 +41,7 @@ suite("regression_test_variant_hirachinal", "variant_type"){
         """
     sql """insert into ${table_name} values (-3, '{"a" : 1, "b" : 1.5, "c" : 
[1, 2, 3]}')"""
     sql """insert into  ${table_name} select * from (select -2, '{"a": 11245, 
"b" : [123, {"xx" : 1}], "c" : {"c" : 456, "d" : "null", "e" : 7.111}}'  as 
json_str
-            union  all select -1, '{"a": 1123}' as json_str union all select 
*, '{"a" : 1234, "xxxx" : "kaana"}' as json_str from numbers("number" = 
"4096"))t order by 1 limit 4096 ;"""
+            union  all select -1, '{"a": 1123}' as json_str union all select 
*, '{"a" : 1234, "xxxx" : "kaana"}' as json_str from numbers("number" = 
"4096"))t order by 1 limit 4098 ;"""
     qt_sql "select * from ${table_name} order by k limit 10"
     qt_sql "select cast(v['c'] as string) from ${table_name} where k = -3 or k 
= -2 order by k"
     qt_sql "select v['b'] from ${table_name} where k = -3 or k = -2"


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to