Skip to content

Commit 6b05244

Browse files
authored
Merge pull request ClickHouse#87909 from ClickHouse/backport/25.8/87817
Backport ClickHouse#87817 to 25.8: Fix several skip indices bugs
2 parents 132c9bd + e7ad3a7 commit 6b05244

File tree

6 files changed

+20
-1
lines changed

6 files changed

+20
-1
lines changed

src/Storages/MergeTree/MergeTreeIndexReader.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ void MergeTreeIndexReader::read(size_t mark, size_t current_granule_num, MergeTr
134134
stream->seekToMark(mark);
135135

136136
granules->deserializeBinary(current_granule_num, *stream->getDataBuffer(), version);
137+
stream_mark = mark + 1;
137138
}
138139

139140
}

src/Storages/MergeTree/MergeTreeIndexSet.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,10 @@ void MergeTreeIndexGranuleSet::deserializeBinary(ReadBuffer & istr, MergeTreeInd
104104
UInt64 rows_to_read = 0;
105105
readBinary(rows_to_read, istr);
106106
if (rows_to_read == 0)
107+
{
108+
block.clear();
107109
return;
110+
}
108111

109112
ISerialization::DeserializeBinaryBulkSettings settings;
110113
settings.getter = [&](ISerialization::SubstreamPath) -> ReadBuffer * { return &istr; };
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
22
22
22
3+
22

tests/queries/0_stateless/03246_skipping_index_70108.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ $CLICKHOUSE_LOCAL -m "
1414
ORDER BY c0;
1515
INSERT INTO t SELECT * FROM file('$CURDIR/data_i70108/repro.tsv.zstd');
1616
17-
SELECT count() FROM t WHERE c1 = 'dedenk1d4q' SETTINGS use_skip_indexes=1;
17+
SELECT count() FROM t WHERE c1 = 'dedenk1d4q' SETTINGS use_skip_indexes=1, secondary_indices_enable_bulk_filtering=0;
18+
SELECT count() FROM t WHERE c1 = 'dedenk1d4q' SETTINGS use_skip_indexes=1, secondary_indices_enable_bulk_filtering=1;
1819
SELECT count() FROM t WHERE c1 = 'dedenk1d4q' SETTINGS use_skip_indexes=0;
1920
"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
0
2+
0
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
DROP TABLE IF EXISTS tbulk;
2+
CREATE TABLE tbulk (
3+
g UInt64, s Int32, k Int64, x UInt64,
4+
INDEX gset g TYPE set (0) GRANULARITY 100
5+
)
6+
engine=MergeTree
7+
order by (x, k, s)
8+
as select number%3, 1, 4, number%10 from numbers(1e6);
9+
10+
select count(x) from tbulk where g = 1 and k = 1 settings secondary_indices_enable_bulk_filtering=0;
11+
select count(x) from tbulk where g = 1 and k = 1 settings secondary_indices_enable_bulk_filtering=1;

0 commit comments

Comments
 (0)