This is an automated email from the ASF dual-hosted git repository.
airborne pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new c9397814117 [Pick 2.1](inverted index) fix wrong no need read data
when need_remaining_after_evaluate (#36684)
c9397814117 is described below
commit c9397814117efbb6d54cfbb69bddeea3a2b9f5b3
Author: airborne12 <[email protected]>
AuthorDate: Fri Jun 21 22:01:39 2024 +0800
[Pick 2.1](inverted index) fix wrong no need read data when
need_remaining_after_evaluate (#36684)
When using an equal predicate on a column that applies an inverted index
with a parser, it requires remaining_after_evaluate. In this situation,
we cannot optimize the column without reading the data.
## Proposed changes
From (#36637)
---
be/src/olap/rowset/segment_v2/segment_iterator.cpp | 1 +
.../data/inverted_index_p0/test_need_read_data.out | 6 ++++
.../inverted_index_p0/test_need_read_data.groovy | 33 +++++++++++++++++++++-
3 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
index 614604494ae..d6a3ae6fdd2 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -1093,6 +1093,7 @@ Status
SegmentIterator::_apply_inverted_index_on_column_predicate(
if (need_remaining_after_evaluate) {
remaining_predicates.emplace_back(pred);
+ _need_read_data_indices[pred->column_id()] = true;
return Status::OK();
}
diff --git a/regression-test/data/inverted_index_p0/test_need_read_data.out
b/regression-test/data/inverted_index_p0/test_need_read_data.out
index d4ea5870e3e..fdfe790afdb 100644
--- a/regression-test/data/inverted_index_p0/test_need_read_data.out
+++ b/regression-test/data/inverted_index_p0/test_need_read_data.out
@@ -13,3 +13,9 @@
4 8
1 9
+-- !sql1 --
+1
+
+-- !sql2 --
+2024-06-17T15:16:49 tengxun2
+
diff --git
a/regression-test/suites/inverted_index_p0/test_need_read_data.groovy
b/regression-test/suites/inverted_index_p0/test_need_read_data.groovy
index 86993d81e03..694b7856be7 100644
--- a/regression-test/suites/inverted_index_p0/test_need_read_data.groovy
+++ b/regression-test/suites/inverted_index_p0/test_need_read_data.groovy
@@ -79,4 +79,35 @@ suite("test_need_read_data", "p0"){
} finally {
//try_sql("DROP TABLE IF EXISTS ${testTable}")
}
-}
\ No newline at end of file
+
+ def indexTbName2 = "test_need_read_data_2"
+
+ sql "DROP TABLE IF EXISTS ${indexTbName2}"
+
+ sql """
+ create table ${indexTbName2} (
+ a datetime not null,
+ b varchar not null,
+ INDEX idx_inverted_b (`b`) USING INVERTED PROPERTIES("parser" =
"unicode", "support_phrase" = "true") COMMENT ''
+ ) ENGINE=OLAP
+ DUPLICATE KEY(`a`)
+ COMMENT ''
+ DISTRIBUTED BY HASH(`a`) BUCKETS 1
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1"
+ );
+ """
+ sql """insert into ${indexTbName2} values
+ ('2024-06-03 15:16:49.266678','shanghai'),
+ ('2024-06-02 15:16:49.266678','shenzhen'),
+ ('2024-06-01 15:16:49.266678','beijing'),
+ ('2024-06-13 15:16:49.266678','beijing'),
+ ('2024-06-14 15:16:49.266678','beijing'),
+ ('2024-06-15 15:16:49.266678','shanghai'),
+ ('2024-06-16 15:16:49.266678','tengxun'),
+ ('2024-06-17 15:16:49.266678','tengxun2')
+ """
+
+ qt_sql1 """ select COUNT(1) from ${indexTbName2} WHERE a >=
'2024-06-15 00:00:00' AND b = 'tengxun2' and `b` match 'tengxun2' ;
"""
+ qt_sql2 """ select * from ${indexTbName2} WHERE a >= '2024-06-15
00:00:00' AND b = 'tengxun2' and `b` match 'tengxun2' ; """
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]