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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]