This is an automated email from the ASF dual-hosted git repository. airborne pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push: new 1909c454e04 [Pick 2.0](inverted index) fix wrong opt for pk no need read data (#36633) 1909c454e04 is described below commit 1909c454e04a851c2d12429933b215b70c9eb61d Author: airborne12 <airborn...@gmail.com> AuthorDate: Fri Jun 21 00:57:00 2024 +0800 [Pick 2.0](inverted index) fix wrong opt for pk no need read data (#36633) ## Proposed changes Pick from #36618 --- be/src/olap/rowset/segment_v2/segment_iterator.cpp | 3 + .../test_pk_no_need_read_data.out | 13 +++++ .../test_pk_no_need_read_data.groovy | 66 ++++++++++++++++++++++ 3 files changed, 82 insertions(+) diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp b/be/src/olap/rowset/segment_v2/segment_iterator.cpp index 977ca340ff8..d57f24ef5ca 100644 --- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp +++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp @@ -2555,6 +2555,9 @@ bool SegmentIterator::_no_need_read_key_data(ColumnId cid, vectorized::MutableCo if (cids.contains(cid)) { return false; } + if (_column_pred_in_remaining_vconjunct.contains(_opts.tablet_schema->column(cid).name())) { + return false; + } if (column->is_nullable()) { auto* nullable_col_ptr = reinterpret_cast<vectorized::ColumnNullable*>(column.get()); diff --git a/regression-test/data/inverted_index_p0/test_pk_no_need_read_data.out b/regression-test/data/inverted_index_p0/test_pk_no_need_read_data.out new file mode 100644 index 00000000000..b38181b1845 --- /dev/null +++ b/regression-test/data/inverted_index_p0/test_pk_no_need_read_data.out @@ -0,0 +1,13 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !select_0 -- +1 + +-- !select_1 -- +1 + +-- !select_2 -- +1 + +-- !select_3 -- +1 + 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 new file mode 100644 index 00000000000..4aa969debda --- /dev/null +++ b/regression-test/suites/inverted_index_p0/test_pk_no_need_read_data.groovy @@ -0,0 +1,66 @@ +// 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. +suite("test_pk_no_need_read_data", "p0"){ + def table1 = "test_pk_no_need_read_data" + + sql "drop table if exists ${table1}" + + sql """ + CREATE TABLE IF NOT EXISTS `${table1}` ( + `date` date NULL COMMENT "", + `city` varchar(20) NULL COMMENT "", + `addr` varchar(20) NULL COMMENT "", + `name` varchar(20) NULL COMMENT "", + `compy` varchar(20) NULL COMMENT "", + `n` int NULL COMMENT "", + INDEX idx_city(city) USING INVERTED, + INDEX idx_addr(addr) USING INVERTED PROPERTIES("parser"="english"), + INDEX idx_n(n) USING INVERTED + ) ENGINE=OLAP + DUPLICATE KEY(`date`) + COMMENT "OLAP" + DISTRIBUTED BY HASH(`date`) BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1", + "in_memory" = "false", + "storage_format" = "V2" + ) + """ + + sql """insert into ${table1} values + ('2017-10-01',null,'addr qie3','yy','lj',100), + ('2018-10-01',null,'hehe',null,'lala',200), + ('2019-10-01','beijing','addr xuanwu','wugui',null,300), + ('2020-10-01','beijing','addr fengtai','fengtai1','fengtai2',null), + ('2021-10-01','beijing','addr chaoyang','wangjing','donghuqu',500), + ('2022-10-01','shanghai','hehe',null,'haha',null), + ('2023-10-01','tengxun','qie','addr gg','lj',null), + ('2024-10-01','tengxun2','qie',null,'lj',800) + """ + + // case1: enable count on index + sql "set enable_count_on_index_pushdown = true" + + qt_select_0 "SELECT COUNT() FROM ${table1} WHERE date='2017-10-01'" + qt_select_1 "SELECT COUNT() FROM ${table1} WHERE year(date)='2017'" + + // case1: 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