This is an automated email from the ASF dual-hosted git repository.
hello-stephen 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 6b8d128b25e [regression-test](variant) remove unstable
test_variant_arrayInvertedIdx_profile (#64608)
6b8d128b25e is described below
commit 6b8d128b25e3ef11bfd7a623f24192e8aa08ce05
Author: Dongyang Li <[email protected]>
AuthorDate: Tue Jun 30 14:33:41 2026 +0800
[regression-test](variant) remove unstable
test_variant_arrayInvertedIdx_profile (#64608)
## Proposed changes
Remove
`regression-test/suites/variant_p0/with_index/test_array_inverted_index_profile.groovy`
and its data file.
This case has been tracked as a flaky/unstable case for a while. Per dev
team's analysis and conclusion, the profile-fetching path this test
depends on is unstable, and the relevant logic should be covered by unit
tests going forward instead of this profile-dependent regression test.
---
.../test_array_inverted_index_profile.out | 45 ------
.../test_array_inverted_index_profile.groovy | 165 ---------------------
2 files changed, 210 deletions(-)
diff --git
a/regression-test/data/variant_p0/with_index/test_array_inverted_index_profile.out
b/regression-test/data/variant_p0/with_index/test_array_inverted_index_profile.out
deleted file mode 100644
index 5b2b843c252..00000000000
---
a/regression-test/data/variant_p0/with_index/test_array_inverted_index_profile.out
+++ /dev/null
@@ -1,45 +0,0 @@
--- This file is automatically generated. You should know what you did if you
want to edit this
--- !sql1 --
-7
-
--- !sql2 --
-2019-01-01 d93d942d985a8fb7547c72dada8d332f ["v", "w", "x", "y",
"z"]
-
--- !sql3 --
-2017-01-01 d93d942d985a8fb7547c72dada8d332e ["m", "n", "o", "p",
"q", "r", "s", "t", "u"]
-
--- !sql4 --
-
--- !sql5 --
-2017-01-01 6afef581285b6608bf80d5a4e46cf839 ["a", "b", "c"]
-2017-01-01 8fcb57ae675f0af4d613d9e6c0e8a2a3 \N
-2017-01-01 8fcb57ae675f0af4d613d9e6c0e8a2a4 \N
-2017-01-01 8fcb57ae675f0af4d613d9e6c0e8a2a6 \N
-2017-01-01 d93d942d985a8fb7547c72dada8d332d ["d", "e", "f", "g",
"h", "i", "j", "k", "l"]
-2017-01-01 d93d942d985a8fb7547c72dada8d332e ["m", "n", "o", "p",
"q", "r", "s", "t", "u"]
-
--- !sql6 --
-2017-01-01 6afef581285b6608bf80d5a4e46cf839 ["a", "b", "c"]
-2017-01-01 d93d942d985a8fb7547c72dada8d332d ["d", "e", "f", "g",
"h", "i", "j", "k", "l"]
-2019-01-01 d93d942d985a8fb7547c72dada8d332f ["v", "w", "x", "y",
"z"]
-
--- !sql7 --
-2017-01-01 6afef581285b6608bf80d5a4e46cf839 ["a", "b", "c"]
-2017-01-01 d93d942d985a8fb7547c72dada8d332d ["d", "e", "f", "g",
"h", "i", "j", "k", "l"]
-
--- !sql8 --
-2019-01-01 d93d942d985a8fb7547c72dada8d332f ["v", "w", "x", "y",
"z"]
-
--- !sql9 --
-2017-01-01 6afef581285b6608bf80d5a4e46cf839 ["a", "b", "c"]
-2017-01-01 8fcb57ae675f0af4d613d9e6c0e8a2a3 \N
-2017-01-01 8fcb57ae675f0af4d613d9e6c0e8a2a4 \N
-2017-01-01 8fcb57ae675f0af4d613d9e6c0e8a2a6 \N
-2017-01-01 d93d942d985a8fb7547c72dada8d332d ["d", "e", "f", "g",
"h", "i", "j", "k", "l"]
-2017-01-01 d93d942d985a8fb7547c72dada8d332e ["m", "n", "o", "p",
"q", "r", "s", "t", "u"]
-2019-01-01 d93d942d985a8fb7547c72dada8d332f ["v", "w", "x", "y",
"z"]
-
--- !sql10 --
-2017-01-01 d93d942d985a8fb7547c72dada8d332e ["m", "n", "o", "p",
"q", "r", "s", "t", "u"]
-2019-01-01 d93d942d985a8fb7547c72dada8d332f ["v", "w", "x", "y",
"z"]
-
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
deleted file mode 100644
index 597f0906085..00000000000
---
a/regression-test/suites/variant_p0/with_index/test_array_inverted_index_profile.groovy
+++ /dev/null
@@ -1,165 +0,0 @@
-// 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.
-
-import groovy.json.JsonSlurper
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-suite("test_variant_arrayInvertedIdx_profile", "p0,nonConcurrent"){
- // prepare test table
- def indexTblName = "var_arr_idx"
- def httpGet = { url ->
- def dst = 'http://' + context.config.feHttpAddress
- def conn = new URL(dst + url).openConnection()
- conn.setRequestMethod("GET")
- def encoding =
Base64.getEncoder().encodeToString((context.config.feHttpUser + ":" +
- (context.config.feHttpPassword == null ? "" :
context.config.feHttpPassword)).getBytes("UTF-8"))
- conn.setRequestProperty("Authorization", "Basic ${encoding}")
- return conn.getInputStream().getText()
- }
-
- def getProfileList = {
- def dst = 'http://' + context.config.feHttpAddress
- def conn = new URL(dst + "/rest/v1/query_profile").openConnection()
- conn.setRequestMethod("GET")
- def encoding =
Base64.getEncoder().encodeToString((context.config.feHttpUser + ":" +
- (context.config.feHttpPassword == null ? "" :
context.config.feHttpPassword)).getBytes("UTF-8"))
- conn.setRequestProperty("Authorization", "Basic ${encoding}")
- return conn.getInputStream().getText()
- }
-
- def getProfile = { id ->
- def dst = 'http://' + context.config.feHttpAddress
- def conn = new URL(dst +
"/api/profile/text/?query_id=$id").openConnection()
- conn.setRequestMethod("GET")
- def encoding =
Base64.getEncoder().encodeToString((context.config.feHttpUser + ":" +
- (context.config.feHttpPassword == null ? "" :
context.config.feHttpPassword)).getBytes("UTF-8"))
- conn.setRequestProperty("Authorization", "Basic ${encoding}")
- return conn.getInputStream().getText()
- }
-
- // Fetch profile text by token with small retries for robustness
- def getProfileWithToken = { token ->
- String profileId = ""
- int attempts = 0
- while (attempts < 10 && (profileId == null || profileId == "")) {
- List profileData = new
JsonSlurper().parseText(getProfileList()).data.rows
- for (def profileItem in profileData) {
- if (profileItem["Sql Statement"].toString().contains(token)) {
- profileId = profileItem["Profile ID"].toString()
- break
- }
- }
- if (profileId == null || profileId == "") {
- Thread.sleep(300)
- }
- attempts++
- }
- assertTrue(profileId != null && profileId != "")
- // ensure profile text is fully ready
- Thread.sleep(800)
- return getProfile(profileId).toString()
- }
-
- // Pin enable_segment_limit_pushdown to keep inverted-index pushdown
stable under fuzzy testing
- sql """ set enable_segment_limit_pushdown = true; """
- sql """ set enable_profile = true;"""
- sql """ set profile_level = 2;"""
- setFeConfigTemporary([enable_inverted_index_v1_for_variant: true]) {
-
- sql "DROP TABLE IF EXISTS ${indexTblName}"
- def storageFormat = new Random().nextBoolean() ? "V1" : "V2"
- if (storageFormat == "V1" && isCloudMode()) {
- return;
- }
- // create 1 replica table
- sql """
- CREATE TABLE IF NOT EXISTS `${indexTblName}` (
- `apply_date` date NULL COMMENT '',
- `id` varchar(60) NOT NULL 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'
- DISTRIBUTED BY HASH(`id`) BUCKETS 1
- PROPERTIES (
- "replication_allocation" = "tag.location.default: 1",
- "is_being_synced" = "false",
- "storage_format" = "V2",
- "light_schema_change" = "true",
- "disable_auto_compaction" = "false",
- "inverted_index_storage_format" = "$storageFormat"
- );
- """
-
- sql """ INSERT INTO `var_arr_idx` (`apply_date`, `id`, `inventors`)
VALUES
- ('2017-01-01', '6afef581285b6608bf80d5a4e46cf839',
'{"inventors":["a", "b", "c"]}'),
- ('2017-01-01', '8fcb57ae675f0af4d613d9e6c0e8a2a3',
'{"inventors":[]}'),
- ('2017-01-01', 'd93d942d985a8fb7547c72dada8d332d', '{"inventors":
["d", "e", "f", "g", "h", "i", "j", "k", "l"]}'),
- ('2017-01-01', '8fcb57ae675f0af4d613d9e6c0e8a2a4', NULL),
- ('2017-01-01', 'd93d942d985a8fb7547c72dada8d332e', '{"inventors":
["m", "n", "o", "p", "q", "r", "s", "t", "u"]}'),
- ('2017-01-01', '8fcb57ae675f0af4d613d9e6c0e8a2a6', '{"inventors":
[null,null,null]}'),
- ('2019-01-01', 'd93d942d985a8fb7547c72dada8d332f', '{"inventors":
["v", "w", "x", "y", "z"]}'); """
-
-
- qt_sql1 """ select count() from ${indexTblName}"""
- def checkpoints_name = "array_func.array_contains"
- try {
- GetDebugPoint().enableDebugPointForAllBEs(checkpoints_name,
[result_bitmap: 1])
- order_qt_sql2 "select apply_date,id, inventors['inventors'] from
var_arr_idx where array_contains(cast(inventors['inventors'] as array<text>),
'w') order by id;"
- } finally {
- GetDebugPoint().disableDebugPointForAllBEs(checkpoints_name)
- }
-
- int randomInt = new Random().nextInt(10)
-
- if (randomInt % 2) {
- def t1 = UUID.randomUUID().toString()
- sql """
- select apply_date,id, "${t1}", inventors['inventors'] from
var_arr_idx where array_contains(cast(inventors['inventors'] as array<text>),
'w') order by id
- """
- def p1 = getProfileWithToken(t1)
- logger.info("p1: {}", p1)
- assertTrue(p1.contains("RowsInvertedIndexFiltered: 6"))
- } else {
- def t2 = UUID.randomUUID().toString()
- sql """
- select apply_date,id, "${t2}", inventors['inventors'] from
var_arr_idx where array_contains(cast(inventors['inventors'] as array<text>),
's') and apply_date = '2017-01-01' order by id
- """
- def p2 = getProfileWithToken(t2)
- logger.info("p2: {}", p2)
- assertTrue(p2.contains("RowsInvertedIndexFiltered: 5"))
- }
-
- try {
- GetDebugPoint().enableDebugPointForAllBEs(checkpoints_name,
[result_bitmap: 1])
- order_qt_sql3 """ select apply_date,id, inventors['inventors']
from var_arr_idx where array_contains(cast(inventors['inventors'] as
array<text>), 's') and apply_date = '2017-01-01' order by id; """
- } finally {
- GetDebugPoint().disableDebugPointForAllBEs(checkpoints_name)
- }
- // and apply_date will be vectorized filter left is 6 rows for
inverted index
- order_qt_sql4 """ select apply_date,id, inventors['inventors'] from
var_arr_idx where array_contains(cast(inventors['inventors'] as array<text>),
's') and apply_date = '2019-01-01' order by id; """
-
- order_qt_sql5 """ select apply_date,id, inventors['inventors'] from
var_arr_idx where array_contains(cast(inventors['inventors'] as array<text>),
's') or apply_date = '2017-01-01' order by id; """
- order_qt_sql6 """ select apply_date,id, inventors['inventors'] from
var_arr_idx where !array_contains(cast(inventors['inventors'] as array<text>),
's') order by id; """
- order_qt_sql7 """ select apply_date,id, inventors['inventors'] from
var_arr_idx where !array_contains(cast(inventors['inventors'] as array<text>),
's') and apply_date = '2017-01-01' order by id; """
- order_qt_sql8 """ select apply_date,id, inventors['inventors'] from
var_arr_idx where !array_contains(cast(inventors['inventors'] as array<text>),
's') and apply_date = '2019-01-01' order by id; """
- order_qt_sql9 """ select apply_date,id, inventors['inventors'] from
var_arr_idx where !array_contains(cast(inventors['inventors'] as array<text>),
's') or apply_date = '2017-01-01' order by id; """
- order_qt_sql10 """ select apply_date,id, inventors['inventors'] from
var_arr_idx where (array_contains(cast(inventors['inventors'] as array<text>),
's') and apply_date = '2017-01-01') or apply_date = '2019-01-01' order by id;
"""
- }
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]