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

eldenmoon pushed a commit to branch variant-sparse
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/variant-sparse by this push:
     new ec8d6166f87 [Fix](Variant) fix and make case stable (#50259)
ec8d6166f87 is described below

commit ec8d6166f8715293581ad653e156b0bf37cbcbf0
Author: lihangyu <lihan...@selectdb.com>
AuthorDate: Tue Apr 22 11:52:37 2025 +0800

    [Fix](Variant) fix and make case stable (#50259)
    
    1. fix empty key in sparse column
    2. fix stack use after free in `inverted_index`
    3. make some case stable
---
 .../segment_v2/variant_column_writer_impl.cpp      |   3 --
 be/src/olap/tablet_schema.cpp                      |   7 ++--
 be/src/vec/columns/column_object.cpp               |  11 +++--
 be/src/vec/common/schema_util.cpp                  |   1 -
 regression-test/data/variant_p0/desc.out           | Bin 5529 -> 5887 bytes
 .../predefine/test_predefine_type_index.out        | Bin 2988 -> 3018 bytes
 .../data/variant_p0/test_sub_path_pruning.out      | Bin 5871 -> 5873 bytes
 ...est_variant_compaction_with_sparse_limit.groovy |   7 +++-
 .../suites/variant_p0/column_name.groovy           |   2 +-
 .../suites/variant_p0/column_size_limit.groovy     |   2 +-
 .../predefine/test_predefine_pattern.groovy        |   2 +-
 .../predefine/test_predefine_type_index.groovy     |  45 +++++++++++++++++++++
 .../variant_p0/with_index/bloom_filter.groovy      |  28 ++++++++-----
 .../suites/variant_p0/with_index/load.groovy       |  13 +-----
 .../test_array_contains_with_inverted_index.groovy |   9 +++--
 .../with_index/test_array_index_write.groovy       |   8 ++--
 .../test_array_inverted_index_profile.groovy       |   7 ++--
 17 files changed, 96 insertions(+), 49 deletions(-)

diff --git a/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp 
b/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp
index 30e098b5b60..c0edc586ac5 100644
--- a/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp
+++ b/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp
@@ -204,9 +204,6 @@ Status 
VariantColumnWriterImpl::_get_subcolumn_paths_from_stats(std::set<std::st
                 it->second += size;
             }
             for (const auto& [path, size] : 
source_statistics->sparse_column_non_null_size) {
-                if (path.empty()) {
-                    CHECK(false);
-                }
                 auto it = path_to_total_number_of_non_null_values.find(path);
                 if (it == path_to_total_number_of_non_null_values.end()) {
                     it = path_to_total_number_of_non_null_values.emplace(path, 
0).first;
diff --git a/be/src/olap/tablet_schema.cpp b/be/src/olap/tablet_schema.cpp
index e4d31a28aa3..5e5f4b47580 100644
--- a/be/src/olap/tablet_schema.cpp
+++ b/be/src/olap/tablet_schema.cpp
@@ -1522,15 +1522,16 @@ const TabletIndex* TabletSchema::inverted_index(const 
TabletColumn& col) const {
     }
     // variant's typed column has it's own index
     else if (col.is_extracted_column()) {
-        const auto& path = col.path_info_ptr()->copy_pop_front().get_path();
+        std::string relative_path = 
col.path_info_ptr()->copy_pop_front().get_path();
         if (_path_set_info_map.find(col_unique_id) == 
_path_set_info_map.end()) {
             return nullptr;
         }
         const auto& path_set_info = _path_set_info_map.at(col_unique_id);
-        if (path_set_info.typed_path_set.find(path) == 
path_set_info.typed_path_set.end()) {
+        if (path_set_info.typed_path_set.find(relative_path) ==
+            path_set_info.typed_path_set.end()) {
             return nullptr;
         }
-        return path_set_info.typed_path_set.at(path).index.get();
+        return path_set_info.typed_path_set.at(relative_path).index.get();
     }
     return nullptr;
 }
diff --git a/be/src/vec/columns/column_object.cpp 
b/be/src/vec/columns/column_object.cpp
index 72e8ffd3544..788d60870d8 100644
--- a/be/src/vec/columns/column_object.cpp
+++ b/be/src/vec/columns/column_object.cpp
@@ -1912,7 +1912,7 @@ Status ColumnObject::pick_subcolumns_to_sparse_column(
             continue;
         }
         if (typed_paths.find(entry->path.get_path()) != typed_paths.end()) {
-            LOG(INFO) << "pick " << entry->path.get_path() << " as typed 
column";
+            VLOG_DEBUG << "pick " << entry->path.get_path() << " as typed 
column";
             new_subcolumns.add(entry->path, entry->data);
             continue;
         }
@@ -1931,7 +1931,7 @@ Status ColumnObject::pick_subcolumns_to_sparse_column(
     // 3. pick config::variant_max_subcolumns_count selected subcolumns
     for (size_t i = 0; i < std::min(size_t(_max_subcolumns_count), 
sorted_by_size.size()); ++i) {
         // if too many null values, then consider it as sparse column
-        if ((double)sorted_by_size[i].second < (double)num_rows * 0.95) {
+        if ((double)sorted_by_size[i].second < (double)num_rows * 0.99) {
             continue;
         }
         selected_path.insert(sorted_by_size[i].first);
@@ -1939,12 +1939,15 @@ Status ColumnObject::pick_subcolumns_to_sparse_column(
     std::map<std::string_view, Subcolumn> remaing_subcolumns;
     // add selected subcolumns to new_subcolumns, otherwise add to 
remaining_subcolumns
     for (auto&& entry : subcolumns) {
+        if (entry->data.is_root) {
+            continue;
+        }
         if (selected_path.find(entry->path.get_path()) != selected_path.end()) 
{
             new_subcolumns.add(entry->path, entry->data);
-            LOG(INFO) << "pick " << entry->path.get_path() << " as sub column";
+            VLOG_DEBUG << "pick " << entry->path.get_path() << " as sub 
column";
         } else if (none_null_value_sizes.find(entry->path.get_path()) !=
                    none_null_value_sizes.end()) {
-            LOG(INFO) << "pick " << entry->path.get_path() << " as sparse 
column";
+            VLOG_DEBUG << "pick " << entry->path.get_path() << " as sparse 
column";
             remaing_subcolumns.emplace(entry->path.get_path(), entry->data);
         }
     }
diff --git a/be/src/vec/common/schema_util.cpp 
b/be/src/vec/common/schema_util.cpp
index 740f4854b97..c2f1022c4a3 100644
--- a/be/src/vec/common/schema_util.cpp
+++ b/be/src/vec/common/schema_util.cpp
@@ -692,7 +692,6 @@ Status collect_path_stats(
             }
 
             for (const auto& [path, size] : 
source_stats->sparse_column_non_null_size) {
-                CHECK(!path.empty());
                 uid_to_path_stats[column->unique_id()][path] += size;
             }
 
diff --git a/regression-test/data/variant_p0/desc.out 
b/regression-test/data/variant_p0/desc.out
index b6afa3f2101..1eff52e4484 100644
Binary files a/regression-test/data/variant_p0/desc.out and 
b/regression-test/data/variant_p0/desc.out differ
diff --git 
a/regression-test/data/variant_p0/predefine/test_predefine_type_index.out 
b/regression-test/data/variant_p0/predefine/test_predefine_type_index.out
index 16079931dcf..cffe89f0a28 100644
Binary files 
a/regression-test/data/variant_p0/predefine/test_predefine_type_index.out and 
b/regression-test/data/variant_p0/predefine/test_predefine_type_index.out differ
diff --git a/regression-test/data/variant_p0/test_sub_path_pruning.out 
b/regression-test/data/variant_p0/test_sub_path_pruning.out
index 54570025f52..175361603c8 100644
Binary files a/regression-test/data/variant_p0/test_sub_path_pruning.out and 
b/regression-test/data/variant_p0/test_sub_path_pruning.out differ
diff --git 
a/regression-test/suites/fault_injection_p0/test_variant_compaction_with_sparse_limit.groovy
 
b/regression-test/suites/fault_injection_p0/test_variant_compaction_with_sparse_limit.groovy
index 4cc336a2034..7bd4fd215f1 100644
--- 
a/regression-test/suites/fault_injection_p0/test_variant_compaction_with_sparse_limit.groovy
+++ 
b/regression-test/suites/fault_injection_p0/test_variant_compaction_with_sparse_limit.groovy
@@ -46,6 +46,10 @@ suite("test_compaction_variant_with_sparse_limit", 
"nonConcurrent") {
         }
 
         set_be_config("variant_max_sparse_column_statistics_size", "2")
+        int max_subcolumns_count = Math.floor(Math.random() * 5) 
+        if (max_subcolumns_count == 1) {
+            max_subcolumns_count = 0
+        }
         def create_table = { tableName, buckets="auto", key_type="DUPLICATE" ->
             sql "DROP TABLE IF EXISTS ${tableName}"
             def var_def = "variant"
@@ -59,10 +63,9 @@ suite("test_compaction_variant_with_sparse_limit", 
"nonConcurrent") {
                 )
                 ${key_type} KEY(`k`)
                 DISTRIBUTED BY HASH(k) BUCKETS ${buckets}
-                properties("replication_num" = "1", "disable_auto_compaction" 
= "true");
+                properties("replication_num" = "1", "disable_auto_compaction" 
= "true", "variant_max_subcolumns_count" = "${max_subcolumns_count}");
             """
         }
-
         def key_types = ["DUPLICATE", "UNIQUE", "AGGREGATE"]
         // def key_types = ["AGGREGATE"]
         for (int i = 0; i < key_types.size(); i++) {
diff --git a/regression-test/suites/variant_p0/column_name.groovy 
b/regression-test/suites/variant_p0/column_name.groovy
index 75c913181f8..4e8e7d044c6 100644
--- a/regression-test/suites/variant_p0/column_name.groovy
+++ b/regression-test/suites/variant_p0/column_name.groovy
@@ -18,7 +18,7 @@
 suite("regression_test_variant_column_name", "variant_type"){
     def table_name = "var_column_name"
     sql "DROP TABLE IF EXISTS ${table_name}"
-    int max_subcolumns_count = Math.floor(Math.random() * (3 - 1 + 1)) + 1
+    int max_subcolumns_count = Math.floor(Math.random() * 4) + 1
     sql """
         CREATE TABLE IF NOT EXISTS ${table_name} (
             k bigint,
diff --git a/regression-test/suites/variant_p0/column_size_limit.groovy 
b/regression-test/suites/variant_p0/column_size_limit.groovy
index 5e9d05b558e..153cb1a2b1e 100644
--- a/regression-test/suites/variant_p0/column_size_limit.groovy
+++ b/regression-test/suites/variant_p0/column_size_limit.groovy
@@ -26,7 +26,7 @@ suite("regression_test_variant_column_limit"){
         )
         DUPLICATE KEY(`k`)
         DISTRIBUTED BY HASH(k) BUCKETS 1
-        properties("replication_num" = "1", "disable_auto_compaction" = 
"false");
+        properties("replication_num" = "1", "disable_auto_compaction" = 
"false", "variant_max_subcolumns_count" = "0");
     """
     def jsonBuilder = new JsonBuilder()
     def root = jsonBuilder {
diff --git 
a/regression-test/suites/variant_p0/predefine/test_predefine_pattern.groovy 
b/regression-test/suites/variant_p0/predefine/test_predefine_pattern.groovy
index de63e71de0e..f729e24e133 100644
--- a/regression-test/suites/variant_p0/predefine/test_predefine_pattern.groovy
+++ b/regression-test/suites/variant_p0/predefine/test_predefine_pattern.groovy
@@ -91,7 +91,7 @@ suite("test_variant_predefine_base", "p0"){
     qt_sql """ select count() from ${tableName} where cast(var['a']['*'] as 
string) match '789' """
     qt_sql """ select count() from ${tableName} where cast(var['a']['b1'] as 
string) match '789' """
     qt_sql """ select count() from ${tableName} where cast(var['a']['bxc'] as 
string) match '789' """
-    qt_sql """ select count() from ${tableName} where cast(var['a']['c2323'] 
as string) match '789' """
+qt_sql """ select count() from ${tableName} where cast(var['a']['c2323'] as 
string) match '789' """
     
     trigger_and_wait_compaction(tableName, "full")
 
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 3675dabe5cf..5bbb9698a77 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
@@ -61,4 +61,49 @@ suite("test_variant_predefine_index_type", "p0"){
     qt_sql """ select count() from ${tableName} where cast(var['path']['int'] 
as int) = 789 """
     qt_sql """ select count() from ${tableName} where 
cast(var['path']['decimal'] as DECIMAL(15, 12)) = 789.789123456789 """
     qt_sql """ select count() from ${tableName} where var['path']['string'] 
match 'hello' """
+
+    // object table
+    sql "DROP TABLE IF EXISTS objects"
+    sql """
+         CREATE TABLE `objects` (
+          `id` int NOT NULL,
+          `overflow_properties` variant<
+            MATCH_NAME 'color' : text,
+            MATCH_NAME 'tags' : array<string>
+          > 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")
+        ) ENGINE=OLAP
+        DUPLICATE KEY(`id`)
+        DISTRIBUTED BY RANDOM BUCKETS 1
+        PROPERTIES (
+        "replication_allocation" = "tag.location.default: 1",
+        "min_load_replica_num" = "-1",
+        "is_being_synced" = "false",
+        "storage_medium" = "hdd",
+        "storage_format" = "V2",
+        "inverted_index_storage_format" = "V2",
+        "light_schema_change" = "true",
+        "enable_single_replica_compaction" = "false",
+        "group_commit_interval_ms" = "10000",
+        "group_commit_data_bytes" = "134217728",
+        "variant_max_subcolumns_count" = "10",
+        "disable_auto_compaction" = "true"
+        );
+    """ 
+    for (int i = 0; i < 10; i++) {
+        sql """
+            INSERT INTO objects (id, overflow_properties)
+            VALUES 
+        (6, '{"color":"Bright Red","description":"A bright red circular object 
with a metallic shine","shape":"Large 
Circle","tags":["metallic","reflective"]}'),
+        (7, '{"color":"Deep Blue","description":"Opaque square made of plastic 
in deep blue","shape":"Small Square","tags":["opaque","plastic"]}'),
+        (8, '{"color":"Green","description":"Tall green triangle carved from 
wood","shape":"Tall Triangle","tags":["matte","wood"]}'),
+        (9, '{"color":"Reddish Orange","description":"Glossy ceramic hexagon 
with reddish orange tint","shape":"Flat Hexagon","tags":["glossy","ceramic"]}'),
+            (10, '{"color":"Yellow","description":"Shiny yellow circular 
badge","shape":"Wide Circle","tags":["shiny","plastic"]}');    
+        """
+    }
+    trigger_and_wait_compaction(tableName, "cumulative")
+    sql "set enable_match_without_inverted_index = false"
+    qt_sql "select count() from objects where (overflow_properties['color'] 
MATCH_PHRASE 'Blue')"    
+    qt_sql "select count() from objects where 
(array_contains(cast(overflow_properties['tags'] as array<string>), 
'plastic'))"    
 }
\ No newline at end of file
diff --git a/regression-test/suites/variant_p0/with_index/bloom_filter.groovy 
b/regression-test/suites/variant_p0/with_index/bloom_filter.groovy
index 592318d4fcb..328c65f04df 100644
--- a/regression-test/suites/variant_p0/with_index/bloom_filter.groovy
+++ b/regression-test/suites/variant_p0/with_index/bloom_filter.groovy
@@ -25,25 +25,31 @@ suite("regression_test_variant_with_bf", 
"nonConcurrent,p0"){
         )
         DUPLICATE KEY(`k`)
         DISTRIBUTED BY HASH(k) BUCKETS 1
-        properties("replication_num" = "1", "bloom_filter_columns" = "v");
+        properties("replication_num" = "1", "bloom_filter_columns" = "v", 
"bloom_filter_fpp" = "0.0001", "variant_max_subcolumns_count" = "10");
     """
-    sql """insert into ${table_name} values (1, '{"a" : 123456}')"""
-    sql """insert into ${table_name} values (2, '{"a" : 789111}')"""
-    sql """insert into ${table_name} values (3, '{"a" : 789111}')"""
+    sql """insert into var_with_bloom_filter values (1, '{"a" : 123456}')"""
+    sql """insert into var_with_bloom_filter values (2, '{"a" : 789111}')"""
+    sql """insert into var_with_bloom_filter values (3, '{"a" : 789111}')"""
     
 
-    sql """insert into ${table_name} values (1, '{"b" : "xxxxxxx"}')"""
-    sql """insert into ${table_name} values (2, '{"b" : "yyyyyyy"}')"""
-    sql """insert into ${table_name} values (3, '{"b" : "zzzzzzz"}')"""
+    sql """insert into var_with_bloom_filter values (1, '{"b" : "xxxxxxx"}')"""
+    sql """insert into var_with_bloom_filter values (2, '{"b" : "yyyyyyy"}')"""
+    sql """insert into var_with_bloom_filter values (3, '{"b" : "zzzzzzz"}')"""
 
-    sql """insert into ${table_name} values (1, '{"b" : "xxxxxxx"}')"""
-    sql """insert into ${table_name} values (2, '{"b" : "yyyyyyy"}')"""
-    sql """insert into ${table_name} values (3, '{"b" : "zzzzzzz"}')"""
+    sql """insert into var_with_bloom_filter values (1, '{"b" : "xxxxxxx"}')"""
+    sql """insert into var_with_bloom_filter values (2, '{"b" : "yyyyyyy"}')"""
+    sql """insert into var_with_bloom_filter values (3, '{"b" : "zzzzzzz"}')"""
+
+    // for (int i = 0; i < 10; i++) {
+    //     sql """insert into var_with_bloom_filter values (${i}, '{"b" : 
"xxxxxxx ${i}"}')"""
+    //     sql """insert into var_with_bloom_filter values (${i}, '{"b" : 
"yyyyyyy ${i}"}')"""
+    //     sql """insert into var_with_bloom_filter values (${i}, '{"b" : 
"zzzzzzz ${i}"}')"""
+    // }
     // trigger_and_wait_compaction("var_with_bloom_filter", "full")
     // try {
     //     
GetDebugPoint().enableDebugPointForAllBEs("bloom_filter_must_filter_data")
     //     sql """ set enable_inverted_index_query = false """ 
-    //     sql "select * from  var_with_bloom_filter where cast(v['a'] as int) 
= 789111"
+    //     sql "select * from  var_with_bloom_filter where v['b'] = 'xxxxxxx 
1'"
     // } finally {
     //     
GetDebugPoint().disableDebugPointForAllBEs("bloom_filter_must_filter_data")
     // }
diff --git a/regression-test/suites/variant_p0/with_index/load.groovy 
b/regression-test/suites/variant_p0/with_index/load.groovy
index 2882bd5efea..57a6a7b4c38 100644
--- a/regression-test/suites/variant_p0/with_index/load.groovy
+++ b/regression-test/suites/variant_p0/with_index/load.groovy
@@ -15,18 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-suite("regression_test_variant_with_index", "nonConcurrent"){
-    def set_be_config = { key, value ->
-        String backend_id;
-        def backendId_to_backendIP = [:]
-        def backendId_to_backendHttpPort = [:]
-        getBackendIpHttpPort(backendId_to_backendIP, 
backendId_to_backendHttpPort);
-
-        backend_id = backendId_to_backendIP.keySet()[0]
-        def (code, out, err) = 
update_be_config(backendId_to_backendIP.get(backend_id), 
backendId_to_backendHttpPort.get(backend_id), key, value)
-        logger.info("update config: code=" + code + ", out=" + out + ", err=" 
+ err)
-    }
-
+suite("regression_test_variant_with_index"){
     def timeout = 60000
     def delta_time = 1000
     def alter_res = "null"
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 ea5cf37e3de..c732d4a4b1f 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
@@ -32,8 +32,10 @@ suite("test_array_contains_with_inverted_index") {
        CREATE TABLE IF NOT EXISTS `${indexTblName}` (
       `apply_date` date NULL COMMENT '',
       `id` varchar(60) NOT NULL COMMENT '',
-      `inventors` variant NULL COMMENT '',
-      INDEX index_inverted_inventors(inventors) USING INVERTED  COMMENT ''
+      `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 ''
     ) ENGINE=OLAP
     DUPLICATE KEY(`apply_date`, `id`)
     COMMENT 'OLAP'
@@ -45,7 +47,8 @@ suite("test_array_contains_with_inverted_index") {
     "light_schema_change" = "true",
     "disable_auto_compaction" = "false",
     "enable_single_replica_compaction" = "false",
-    "inverted_index_storage_format" = "$storageFormat"
+    "inverted_index_storage_format" = "$storageFormat",
+    "variant_max_subcolumns_count" = "10"
     );
     """
 
diff --git 
a/regression-test/suites/variant_p0/with_index/test_array_index_write.groovy 
b/regression-test/suites/variant_p0/with_index/test_array_index_write.groovy
index ba37537a8cc..9322babbf3b 100644
--- a/regression-test/suites/variant_p0/with_index/test_array_index_write.groovy
+++ b/regression-test/suites/variant_p0/with_index/test_array_index_write.groovy
@@ -20,10 +20,10 @@ suite("test_array_index_write", "nonConcurrent"){
     def create_variant_index_table = { testTablex, parser ->
         def stmt = "CREATE TABLE IF NOT EXISTS " + testTablex + "(\n" +
                    "  k1 INT NULL,\n" +
-                   "  c_arr VARIANT NULL COMMENT '',\n"
+                   "  c_arr VARIANT<'c_arr' : array<text>> NULL COMMENT '',\n"
                    
-        String strTmp = parser == "" ? "INDEX index_inverted_c_arr(c_arr) 
USING INVERTED COMMENT 'c_arr index',\n" :
-                            "INDEX index_inverted_c_arr(c_arr) USING INVERTED 
PROPERTIES( \"parser\"=\" " + parser + "\") COMMENT 'c_arr index',\n"
+        String strTmp = parser == "" ? "INDEX index_inverted_c_arr(c_arr) 
USING INVERTED PROPERTIES( \"field_pattern\"=\"c_arr\") COMMENT 'c_arr 
index',\n" :
+                            "INDEX index_inverted_c_arr(c_arr) USING INVERTED 
PROPERTIES( \"field_pattern\"=\"c_arr\", \"parser\"=\" " + parser + "\") 
COMMENT 'c_arr index',\n"
                             
         stmt += strTmp
         stmt = stmt.substring(0, stmt.length()-2)
@@ -32,7 +32,7 @@ suite("test_array_index_write", "nonConcurrent"){
                 "DUPLICATE KEY(`k1`)\n" +
                 "COMMENT 'OLAP'\n" +
                 "DISTRIBUTED BY HASH(`k1`) BUCKETS 10\n" +
-                "PROPERTIES(\"replication_num\" = \"1\", 
\"inverted_index_storage_format\" = \"$storageFormat\");"
+                "PROPERTIES(\"replication_num\" = \"1\", 
\"inverted_index_storage_format\" = \"$storageFormat\", 
\"variant_max_subcolumns_count\" = \"10\");"
         return stmt
     }
 
diff --git 
a/regression-test/suites/variant_p0/with_index/test_array_inverted_index_profile.groovy
 
b/regression-test/suites/variant_p0/with_index/test_array_inverted_index_profile.groovy
index 8174a71060a..70b10d9b60f 100644
--- 
a/regression-test/suites/variant_p0/with_index/test_array_inverted_index_profile.groovy
+++ 
b/regression-test/suites/variant_p0/with_index/test_array_inverted_index_profile.groovy
@@ -19,7 +19,7 @@ import groovy.json.JsonSlurper
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-suite("test_variant_arrayInvertedIdx_profile", "nonConcurrent"){
+suite("test_variant_arrayInvertedIdx_profile", "p0,nonConcurrent"){
     // prepare test table
     def indexTblName = "var_arr_idx"
     def httpGet = { url ->
@@ -74,8 +74,8 @@ suite("test_variant_arrayInvertedIdx_profile", 
"nonConcurrent"){
        CREATE TABLE IF NOT EXISTS `${indexTblName}` (
       `apply_date` date NULL COMMENT '',
       `id` varchar(60) NOT NULL COMMENT '',
-      `inventors` variant NULL COMMENT '',
-      INDEX index_inverted_inventors(inventors) USING INVERTED  COMMENT ''
+      `inventors` variant<'inventors' : array<text>> NULL COMMENT '',
+      INDEX index_inverted_inventors(inventors) USING INVERTED PROPERTIES( 
"field_pattern" = "inventors") COMMENT ''
     ) ENGINE=OLAP
     DUPLICATE KEY(`apply_date`, `id`)
     COMMENT 'OLAP'
@@ -87,6 +87,7 @@ suite("test_variant_arrayInvertedIdx_profile", 
"nonConcurrent"){
     "light_schema_change" = "true",
     "disable_auto_compaction" = "false",
     "enable_single_replica_compaction" = "false",
+    "variant_max_subcolumns_count" = "10",
     "inverted_index_storage_format" = "$storageFormat"
     );
     """


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to