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

yiguolei 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 4f8ff321ea7 branch-2.1: [fix](inverted index) fix wrong read data for 
primary key #47841 (#48207)
4f8ff321ea7 is described below

commit 4f8ff321ea7541fff221e4212c9bcac6f686cb18
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Feb 25 21:15:03 2025 +0800

    branch-2.1: [fix](inverted index) fix wrong read data for primary key 
#47841 (#48207)
    
    Cherry-picked from #47841
    
    Co-authored-by: airborne12 <jiang...@selectdb.com>
---
 be/src/olap/rowset/segment_v2/segment_iterator.cpp         | 14 +++++++++++++-
 .../inverted_index_p0/test_pk_no_need_read_data.groovy     | 13 ++++++++-----
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp 
b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
index 52e0ecd5d20..7e64c25999a 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -2475,7 +2475,19 @@ bool SegmentIterator::_no_need_read_key_data(ColumnId 
cid, vectorized::MutableCo
         return false;
     }
 
-    if (!_check_all_conditions_passed_inverted_index_for_column(cid)) {
+    // seek_schema is set when get_row_ranges_by_keys, it is null when there 
is no primary key range
+    // in this case, we need to read data
+    if (!_seek_schema) {
+        return false;
+    }
+    // check if the column is in the seek_schema
+    if (std::none_of(_seek_schema->columns().begin(), 
_seek_schema->columns().end(),
+                     [&](const Field* col) {
+                         return (col && 
_opts.tablet_schema->field_index(col->unique_id()) == cid);
+                     })) {
+        return false;
+    }
+    if (!_check_all_conditions_passed_inverted_index_for_column(cid, true)) {
         return false;
     }
 
diff --git 
a/regression-test/suites/inverted_index_p0/test_pk_no_need_read_data.groovy 
b/regression-test/suites/inverted_index_p0/test_pk_no_need_read_data.groovy
index b8cf3f4c0b5..284446b4a4c 100644
--- a/regression-test/suites/inverted_index_p0/test_pk_no_need_read_data.groovy
+++ b/regression-test/suites/inverted_index_p0/test_pk_no_need_read_data.groovy
@@ -14,7 +14,7 @@
 // KIND, either express or implied.  See the License for the
 // specific language governing permissions and limitations
 // under the License.
-suite("test_pk_no_need_read_data", "p0"){
+suite("test_pk_no_need_read_data", "nonConcurrent"){
     def table1 = "test_pk_no_need_read_data"
 
     sql "drop table if exists ${table1}"
@@ -56,12 +56,15 @@ suite("test_pk_no_need_read_data", "p0"){
     sql "set enable_count_on_index_pushdown = true"
     sql """ set enable_common_expr_pushdown = true """
 
-    qt_select_0 "SELECT COUNT() FROM ${table1} WHERE date='2017-10-01'"
+    try {
+        
GetDebugPoint().enableDebugPointForAllBEs("segment_iterator._read_columns_by_index")
+        qt_select_0 "SELECT COUNT() FROM ${table1} WHERE date='2017-10-01'"
+    } finally {
+        
GetDebugPoint().disableDebugPointForAllBEs("segment_iterator._read_columns_by_index")
+    }
     qt_select_1 "SELECT COUNT() FROM ${table1} WHERE year(date)='2017'"
-
-    // case1: disable count on index
+    // case2: disable count on index
     sql "set enable_count_on_index_pushdown = false"
-
     qt_select_2 "SELECT COUNT() FROM ${table1} WHERE date='2017-10-01'"
     qt_select_3 "SELECT COUNT() FROM ${table1} WHERE year(date)='2017'"
 }
\ No newline at end of file


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

Reply via email to