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

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


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new 90db2c4fd47 branch-4.0: (fix)[variant] enhance VARIANT bloom filter & 
inverted index validation #59921 (#60056)
90db2c4fd47 is described below

commit 90db2c4fd47956a560ad7e59bfe97e08e915d6d8
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Jan 20 23:51:41 2026 +0800

    branch-4.0: (fix)[variant] enhance VARIANT bloom filter & inverted index 
validation #59921 (#60056)
    
    Cherry-picked from #59921
    
    Co-authored-by: Gary <[email protected]>
---
 be/src/vec/common/schema_util.cpp                  |  34 ++-
 be/src/vec/common/schema_util.h                    |   3 +
 .../trees/plans/commands/info/CreateTableInfo.java |  10 +
 .../trees/plans/CreateTableCommandTest.java        |  33 +++
 .../test_variant_bf_skip_unsupported_subcolumn.out |   5 +
 .../predefine/test_predefine_type_index.groovy     |   4 +-
 ...ant_field_pattern_invalid_inverted_index.groovy | 242 +++++++++++++++++++++
 .../test_array_contains_with_inverted_index.groovy |   2 +-
 ...st_variant_bf_skip_unsupported_subcolumn.groovy |  39 ++++
 9 files changed, 364 insertions(+), 8 deletions(-)

diff --git a/be/src/vec/common/schema_util.cpp 
b/be/src/vec/common/schema_util.cpp
index c77079b8644..27e3c3ec7f4 100644
--- a/be/src/vec/common/schema_util.cpp
+++ b/be/src/vec/common/schema_util.cpp
@@ -393,6 +393,34 @@ Status update_least_common_schema(const 
std::vector<TabletSchemaSPtr>& schemas,
                                         typed_columns, path_set);
 }
 
+// Keep variant subcolumn BF support aligned with FE DDL checks.
+bool is_bf_supported_by_fe_for_variant_subcolumn(FieldType type) {
+    switch (type) {
+    case FieldType::OLAP_FIELD_TYPE_SMALLINT:
+    case FieldType::OLAP_FIELD_TYPE_INT:
+    case FieldType::OLAP_FIELD_TYPE_BIGINT:
+    case FieldType::OLAP_FIELD_TYPE_LARGEINT:
+    case FieldType::OLAP_FIELD_TYPE_CHAR:
+    case FieldType::OLAP_FIELD_TYPE_VARCHAR:
+    case FieldType::OLAP_FIELD_TYPE_STRING:
+    case FieldType::OLAP_FIELD_TYPE_DATE:
+    case FieldType::OLAP_FIELD_TYPE_DATETIME:
+    case FieldType::OLAP_FIELD_TYPE_DATEV2:
+    case FieldType::OLAP_FIELD_TYPE_DATETIMEV2:
+    case FieldType::OLAP_FIELD_TYPE_TIMESTAMPTZ:
+    case FieldType::OLAP_FIELD_TYPE_DECIMAL:
+    case FieldType::OLAP_FIELD_TYPE_DECIMAL32:
+    case FieldType::OLAP_FIELD_TYPE_DECIMAL64:
+    case FieldType::OLAP_FIELD_TYPE_DECIMAL128I:
+    case FieldType::OLAP_FIELD_TYPE_DECIMAL256:
+    case FieldType::OLAP_FIELD_TYPE_IPV4:
+    case FieldType::OLAP_FIELD_TYPE_IPV6:
+        return true;
+    default:
+        return false;
+    }
+}
+
 void inherit_column_attributes(const TabletColumn& source, TabletColumn& 
target,
                                TabletSchemaSPtr* target_schema) {
     if (!target.is_extracted_column()) {
@@ -401,11 +429,7 @@ void inherit_column_attributes(const TabletColumn& source, 
TabletColumn& target,
     target.set_aggregation_method(source.aggregation());
 
     // 1. bloom filter
-    if (target.type() != FieldType::OLAP_FIELD_TYPE_TINYINT &&
-        target.type() != FieldType::OLAP_FIELD_TYPE_ARRAY &&
-        target.type() != FieldType::OLAP_FIELD_TYPE_DOUBLE &&
-        target.type() != FieldType::OLAP_FIELD_TYPE_FLOAT) {
-        // above types are not supported in bf
+    if (is_bf_supported_by_fe_for_variant_subcolumn(target.type())) {
         target.set_is_bf_column(source.is_bf_column());
     }
 
diff --git a/be/src/vec/common/schema_util.h b/be/src/vec/common/schema_util.h
index ef59caaaf5a..8e738ee3c10 100644
--- a/be/src/vec/common/schema_util.h
+++ b/be/src/vec/common/schema_util.h
@@ -121,6 +121,9 @@ void inherit_column_attributes(TabletSchemaSPtr& schema);
 void inherit_column_attributes(const TabletColumn& source, TabletColumn& 
target,
                                TabletSchemaSPtr* target_schema = nullptr);
 
+// Align variant subcolumn BF inheritance with FE BF-supported types.
+bool is_bf_supported_by_fe_for_variant_subcolumn(FieldType type);
+
 // get sorted subcolumns of variant
 vectorized::ColumnVariant::Subcolumns get_sorted_subcolumns(
         const vectorized::ColumnVariant::Subcolumns& subcolumns);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java
index 53bd7f773f4..c897a216268 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java
@@ -1383,6 +1383,16 @@ public class CreateTableInfo {
                                             + fieldPattern + " is not 
supported for inverted index"
                                             + " of column: " + 
column.getName());
                                 }
+
+                                // keep variant subcolumn checks aligned with 
ordinary column rules
+                                try {
+                                    
InvertedIndexUtil.checkInvertedIndexParser(column.getName(),
+                                            
field.getDataType().toCatalogDataType().getPrimitiveType(),
+                                            indexDef.getProperties(), 
invertedIndexFileStorageFormat);
+                                } catch (Exception ex) {
+                                    throw new AnalysisException("invalid 
INVERTED index: field pattern: "
+                                            + fieldPattern + ", " + 
ex.getMessage(), ex);
+                                }
                                 
fieldPatternToIndexDef.computeIfAbsent(fieldPattern, k -> new ArrayList<>())
                                                                                
                     .add(indexDef);
                                 fieldPatternToDataType.put(fieldPattern, 
field.getDataType());
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/CreateTableCommandTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/CreateTableCommandTest.java
index 9a83840474a..07a702b2308 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/CreateTableCommandTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/CreateTableCommandTest.java
@@ -1087,6 +1087,39 @@ public class CreateTableCommandTest extends 
TestWithFeService {
         return command.getCreateMTMVInfo();
     }
 
+    @Test
+    public void testVariantFieldPatternDictCompressionValidation() {
+        String invalidSql = "create table test.tbl_variant_dict_invalid\n"
+                + "(k1 int, v variant<\n"
+                + "    MATCH_NAME 'metrics.score' : int\n"
+                + "> null,\n"
+                + "INDEX idx_v (v) USING INVERTED PROPERTIES(\n"
+                + "    \"field_pattern\" = \"metrics.score\",\n"
+                + "    \"dict_compression\" = \"true\"\n"
+                + "))\n"
+                + "duplicate key(k1)\n"
+                + "distributed by hash(k1) buckets 1\n"
+                + "properties('replication_num' = '1', 
'inverted_index_storage_format' = 'V3');";
+
+        AnalysisException ex = 
Assertions.assertThrows(AnalysisException.class, () -> createTable(invalidSql));
+        Assertions.assertTrue(ex.getMessage().contains("invalid INVERTED 
index: field pattern: metrics.score"));
+        Assertions.assertTrue(ex.getMessage().contains("dict_compression can 
only be set for StringType columns"));
+
+        String validSql = "create table test.tbl_variant_dict_valid\n"
+                + "(k1 int, v variant<\n"
+                + "    MATCH_NAME 'metrics.score' : string\n"
+                + "> null,\n"
+                + "INDEX idx_v (v) USING INVERTED PROPERTIES(\n"
+                + "    \"field_pattern\" = \"metrics.score\",\n"
+                + "    \"dict_compression\" = \"true\"\n"
+                + "))\n"
+                + "duplicate key(k1)\n"
+                + "distributed by hash(k1) buckets 1\n"
+                + "properties('replication_num' = '1', 
'inverted_index_storage_format' = 'V3');";
+
+        Assertions.assertDoesNotThrow(() -> createTable(validSql));
+    }
+
     @Test
     public void testMTMVRejectVarbinary() throws Exception {
         String mv = "CREATE MATERIALIZED VIEW mv_vb\n"
diff --git 
a/regression-test/data/variant_p0/with_index/test_variant_bf_skip_unsupported_subcolumn.out
 
b/regression-test/data/variant_p0/with_index/test_variant_bf_skip_unsupported_subcolumn.out
new file mode 100644
index 00000000000..f16b97f85d1
--- /dev/null
+++ 
b/regression-test/data/variant_p0/with_index/test_variant_bf_skip_unsupported_subcolumn.out
@@ -0,0 +1,5 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !sql --
+1.23
+4.56
+
diff --git 
a/regression-test/suites/variant_p0/predefine/test_predefine_type_index.groovy 
b/regression-test/suites/variant_p0/predefine/test_predefine_type_index.groovy
index 667313f8f84..7558d4ba3a2 100644
--- 
a/regression-test/suites/variant_p0/predefine/test_predefine_type_index.groovy
+++ 
b/regression-test/suites/variant_p0/predefine/test_predefine_type_index.groovy
@@ -31,7 +31,7 @@ suite("test_variant_predefine_index_type", "p0"){
             MATCH_NAME 'path.string' : string,
             properties("variant_max_subcolumns_count" = "10")
         > NULL,
-        INDEX idx_a_b (var) USING INVERTED 
PROPERTIES("field_pattern"="path.int", "parser"="unicode", "support_phrase" = 
"true") COMMENT '',
+        INDEX idx_a_b (var) USING INVERTED 
PROPERTIES("field_pattern"="path.int", "support_phrase" = "true") COMMENT '',
         INDEX idx_a_c (var) USING INVERTED 
PROPERTIES("field_pattern"="path.decimal") COMMENT '',
         INDEX idx_a_d (var) USING INVERTED 
PROPERTIES("field_pattern"="path.string", "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")"""
@@ -75,7 +75,7 @@ suite("test_variant_predefine_index_type", "p0"){
             properties("variant_max_subcolumns_count" = "10")
           > NULL,
           INDEX idx1 (`overflow_properties`) USING INVERTED PROPERTIES( 
"field_pattern" = "color", "support_phrase" = "true", "parser" = "english", 
"lower_case" = "true"),
-          INDEX idx2 (`overflow_properties`) USING INVERTED PROPERTIES( 
"field_pattern" = "tags", "support_phrase" = "true", "parser" = "english", 
"lower_case" = "true")
+          INDEX idx2 (`overflow_properties`) USING INVERTED PROPERTIES( 
"field_pattern" = "tags", "support_phrase" = "true", "lower_case" = "true")
         ) ENGINE=OLAP
         DUPLICATE KEY(`id`)
         DISTRIBUTED BY RANDOM BUCKETS 1
diff --git 
a/regression-test/suites/variant_p0/predefine/test_variant_field_pattern_invalid_inverted_index.groovy
 
b/regression-test/suites/variant_p0/predefine/test_variant_field_pattern_invalid_inverted_index.groovy
new file mode 100644
index 00000000000..95d7282a4f4
--- /dev/null
+++ 
b/regression-test/suites/variant_p0/predefine/test_variant_field_pattern_invalid_inverted_index.groovy
@@ -0,0 +1,242 @@
+// 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("test_variant_field_pattern_invalid_inverted_index", "p0") {
+    def tableName = "test_variant_field_pattern_invalid_inverted_index"
+
+    sql "DROP TABLE IF EXISTS ${tableName}"
+    test {
+        sql """
+            CREATE TABLE ${tableName} (
+                `id` bigint NULL,
+                `var` variant<
+                    MATCH_NAME 'settings.enabled*' : boolean
+                > NULL,
+                INDEX idx_enabled (var) USING INVERTED PROPERTIES(
+                    "field_pattern" = "settings.enabled*",
+                    "analyzer" = "unicode"
+                ) COMMENT ''
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES ("replication_allocation" = "tag.location.default: 1")
+        """
+        exception("invalid INVERTED index: field pattern: settings.enabled*")
+    }
+
+    sql "DROP TABLE IF EXISTS ${tableName}"
+    test {
+        sql """
+            CREATE TABLE ${tableName} (
+                `id` bigint NULL,
+                `var` variant<
+                    MATCH_NAME 'settings.tags' : array<string>
+                > NULL,
+                INDEX idx_tags (var) USING INVERTED PROPERTIES(
+                    "field_pattern" = "settings.tags",
+                    "normalizer" = "lowercase"
+                ) COMMENT ''
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES ("replication_allocation" = "tag.location.default: 1")
+        """
+        exception("invalid INVERTED index: field pattern: settings.tags")
+    }
+
+    sql "DROP TABLE IF EXISTS ${tableName}"
+    test {
+        sql """
+            CREATE TABLE ${tableName} (
+                `id` bigint NULL,
+                `var` variant<
+                    MATCH_NAME 'metrics.count' : int
+                > NULL,
+                INDEX idx_count (var) USING INVERTED PROPERTIES(
+                    "field_pattern" = "metrics.count",
+                    "parser" = "english"
+                ) COMMENT ''
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES ("replication_allocation" = "tag.location.default: 1")
+        """
+        exception("invalid INVERTED index: field pattern: metrics.count")
+    }
+
+    sql "DROP TABLE IF EXISTS ${tableName}"
+    test {
+        sql """
+            CREATE TABLE ${tableName} (
+                `id` bigint NULL,
+                `var` variant<
+                    MATCH_NAME 'metrics.score' : int
+                > NULL,
+                INDEX idx_score (var) USING INVERTED PROPERTIES(
+                    "field_pattern" = "metrics.score",
+                    "dict_compression" = "true"
+                ) COMMENT ''
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES ("replication_allocation" = "tag.location.default: 1")
+        """
+        exception("invalid INVERTED index: field pattern: metrics.score")
+    }
+
+    sql "DROP TABLE IF EXISTS ${tableName}"
+    test {
+        sql """
+            CREATE TABLE ${tableName} (
+                `id` bigint NULL,
+                `var` variant<
+                    MATCH_NAME 'metrics.price' : decimal(10, 2)
+                > NULL,
+                INDEX idx_price (var) USING INVERTED PROPERTIES(
+                    "field_pattern" = "metrics.price",
+                    "analyzer" = "standard"
+                ) COMMENT ''
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES ("replication_allocation" = "tag.location.default: 1")
+        """
+        exception("invalid INVERTED index: field pattern: metrics.price")
+    }
+
+    sql "DROP TABLE IF EXISTS ${tableName}"
+    test {
+        sql """
+            CREATE TABLE ${tableName} (
+                `id` bigint NULL,
+                `var` variant<
+                    MATCH_NAME 'metrics.day' : date
+                > NULL,
+                INDEX idx_day (var) USING INVERTED PROPERTIES(
+                    "field_pattern" = "metrics.day",
+                    "parser" = "english"
+                ) COMMENT ''
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES ("replication_allocation" = "tag.location.default: 1")
+        """
+        exception("invalid INVERTED index: field pattern: metrics.day")
+    }
+
+    sql "DROP TABLE IF EXISTS ${tableName}"
+    test {
+        sql """
+            CREATE TABLE ${tableName} (
+                `id` bigint NULL,
+                `var` variant<
+                    MATCH_NAME 'settings.tags_parser' : array<string>
+                > NULL,
+                INDEX idx_tags_parser (var) USING INVERTED PROPERTIES(
+                    "field_pattern" = "settings.tags_parser",
+                    "parser" = "english"
+                ) COMMENT ''
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES ("replication_allocation" = "tag.location.default: 1")
+        """
+        exception("INVERTED index with parser: english is not supported for 
array column")
+    }
+
+    sql "DROP TABLE IF EXISTS ${tableName}"
+    test {
+        sql """
+            CREATE TABLE ${tableName} (
+                `id` bigint NULL,
+                `var` variant<
+                    MATCH_NAME 'labels.name' : string
+                > NULL,
+                INDEX idx_name (var) USING INVERTED PROPERTIES(
+                    "field_pattern" = "labels.name",
+                    "analyzer" = "unicode",
+                    "parser" = "english"
+                ) COMMENT ''
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES ("replication_allocation" = "tag.location.default: 1")
+        """
+        exception("Cannot specify more than one of 'analyzer', 'parser', or 
'normalizer' properties.")
+    }
+
+    sql "DROP TABLE IF EXISTS ${tableName}"
+    test {
+        sql """
+            CREATE TABLE ${tableName} (
+                `id` bigint NULL,
+                `var` variant<
+                    MATCH_NAME 'labels.desc' : string
+                > NULL,
+                INDEX idx_desc (var) USING INVERTED PROPERTIES(
+                    "field_pattern" = "labels.desc",
+                    "parser" = "unknown"
+                ) COMMENT ''
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES ("replication_allocation" = "tag.location.default: 1")
+        """
+        exception("Invalid inverted index 'parser' value: unknown")
+    }
+
+    sql "DROP TABLE IF EXISTS ${tableName}"
+    test {
+        sql """
+            CREATE TABLE ${tableName} (
+                `id` bigint NULL,
+                `var` variant<
+                    MATCH_NAME 'labels.detail' : string
+                > NULL,
+                INDEX idx_detail (var) USING INVERTED PROPERTIES(
+                    "field_pattern" = "labels.detail",
+                    "parser" = "english",
+                    "parser_mode" = "fine_grained"
+                ) COMMENT ''
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES ("replication_allocation" = "tag.location.default: 1")
+        """
+        exception("parser_mode is only available for chinese and ik parser")
+    }
+
+    sql "DROP TABLE IF EXISTS ${tableName}"
+    test {
+        sql """
+            CREATE TABLE ${tableName} (
+                `id` bigint NULL,
+                `var` variant<
+                    MATCH_NAME 'labels.code' : string
+                > NULL,
+                INDEX idx_code (var) USING INVERTED PROPERTIES(
+                    "field_pattern" = "labels.code",
+                    "dict_compression" = "maybe"
+                ) COMMENT ''
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES ("replication_allocation" = "tag.location.default: 1")
+        """
+        exception("Invalid inverted index 'dict_compression' value: maybe")
+    }
+}
diff --git 
a/regression-test/suites/variant_p0/with_index/test_array_contains_with_inverted_index.groovy
 
b/regression-test/suites/variant_p0/with_index/test_array_contains_with_inverted_index.groovy
index a725400c328..27aa9f4c4dd 100644
--- 
a/regression-test/suites/variant_p0/with_index/test_array_contains_with_inverted_index.groovy
+++ 
b/regression-test/suites/variant_p0/with_index/test_array_contains_with_inverted_index.groovy
@@ -38,7 +38,7 @@ suite("test_array_contains_with_inverted_index") {
       `inventors` variant<
         MATCH_NAME 'inventors' : array<text>
     > NULL COMMENT '',
-      INDEX index_inverted_inventors(inventors) USING INVERTED PROPERTIES( 
"field_pattern" = "inventors", "support_phrase" = "true", "parser" = "english", 
"lower_case" = "true") COMMENT ''
+      INDEX index_inverted_inventors(inventors) USING INVERTED PROPERTIES( 
"field_pattern" = "inventors", "support_phrase" = "true", "lower_case" = 
"true") COMMENT ''
     ) ENGINE=OLAP
     DUPLICATE KEY(`apply_date`, `id`)
     COMMENT 'OLAP'
diff --git 
a/regression-test/suites/variant_p0/with_index/test_variant_bf_skip_unsupported_subcolumn.groovy
 
b/regression-test/suites/variant_p0/with_index/test_variant_bf_skip_unsupported_subcolumn.groovy
new file mode 100644
index 00000000000..e4ee75a5082
--- /dev/null
+++ 
b/regression-test/suites/variant_p0/with_index/test_variant_bf_skip_unsupported_subcolumn.groovy
@@ -0,0 +1,39 @@
+// 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("test_variant_bf_skip_unsupported_subcolumn", "p0") {
+    def tableName = "variant_bf_skip_unsupported_subcolumn"
+    sql "DROP TABLE IF EXISTS ${tableName}"
+    sql """
+        CREATE TABLE ${tableName} (
+            k bigint,
+            v variant<'m.d' : double, properties(
+                "variant_max_subcolumns_count" = "0",
+                "variant_enable_typed_paths_to_sparse" = "false")>
+        )
+        DUPLICATE KEY(`k`)
+        DISTRIBUTED BY HASH(k) BUCKETS 1
+        PROPERTIES(
+            "replication_num" = "1",
+            "bloom_filter_columns" = "v",
+            "storage_format" = "V3"
+        );
+    """
+    sql """INSERT INTO ${tableName} VALUES (1, '{"m":{"d":1.23}}')"""
+    sql """INSERT INTO ${tableName} VALUES (2, '{"m":{"d":4.56}}')"""
+    qt_sql """select cast(v['m']['d'] as double) from ${tableName} order by 
k"""
+}


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

Reply via email to