This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch dev-1.1.2
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/dev-1.1.2 by this push:
new 7ba5fb3572 [bugfix](index) index page should not be bitshuffle decoded
(#12252)
7ba5fb3572 is described below
commit 7ba5fb3572a017478d4e3bc99fa80cd3ff4ec684
Author: TengJianPing <[email protected]>
AuthorDate: Thu Sep 1 12:36:36 2022 +0800
[bugfix](index) index page should not be bitshuffle decoded (#12252)
---
be/src/olap/rowset/segment_v2/indexed_column_reader.cpp | 7 ++++---
be/src/olap/rowset/segment_v2/indexed_column_reader.h | 2 +-
be/src/olap/rowset/segment_v2/page_io.cpp | 2 +-
be/src/olap/rowset/segment_v2/page_io.h | 3 +++
4 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/be/src/olap/rowset/segment_v2/indexed_column_reader.cpp
b/be/src/olap/rowset/segment_v2/indexed_column_reader.cpp
index ec484cdc76..e509fe3830 100644
--- a/be/src/olap/rowset/segment_v2/indexed_column_reader.cpp
+++ b/be/src/olap/rowset/segment_v2/indexed_column_reader.cpp
@@ -74,14 +74,14 @@ Status
IndexedColumnReader::load_index_page(fs::ReadableBlock* rblock, const Pag
std::unique_ptr<BlockCompressionCodec> local_compress_codec;
RETURN_IF_ERROR(get_block_compression_codec(_meta.compression(),
local_compress_codec));
RETURN_IF_ERROR(read_page(rblock, PagePointer(pp), handle, &body, &footer,
INDEX_PAGE,
- local_compress_codec.get()));
+ local_compress_codec.get(), false));
RETURN_IF_ERROR(reader->parse(body, footer.index_page_footer()));
return Status::OK();
}
Status IndexedColumnReader::read_page(fs::ReadableBlock* rblock, const
PagePointer& pp,
PageHandle* handle, Slice* body,
PageFooterPB* footer,
- PageTypePB type, BlockCompressionCodec*
codec) const {
+ PageTypePB type, BlockCompressionCodec*
codec, bool pre_decode) const {
PageReadOptions opts;
opts.rblock = rblock;
opts.page_pointer = pp;
@@ -92,6 +92,7 @@ Status IndexedColumnReader::read_page(fs::ReadableBlock*
rblock, const PagePoint
opts.kept_in_memory = _kept_in_memory;
opts.type = type;
opts.encoding_info = _encoding_info;
+ opts.pre_decode = pre_decode;
return PageIO::read_and_decompress_page(opts, handle, body, footer);
}
@@ -107,7 +108,7 @@ Status IndexedColumnIterator::_read_data_page(const
PagePointer& pp) {
Slice body;
PageFooterPB footer;
RETURN_IF_ERROR(_reader->read_page(_rblock.get(), pp, &handle, &body,
&footer, DATA_PAGE,
- _compress_codec.get()));
+ _compress_codec.get(), true));
// parse data page
// note that page_index is not used in IndexedColumnIterator, so we pass 0
return ParsedPage::create(std::move(handle), body,
footer.data_page_footer(),
diff --git a/be/src/olap/rowset/segment_v2/indexed_column_reader.h
b/be/src/olap/rowset/segment_v2/indexed_column_reader.h
index 1317d71e8c..72844ad7f6 100644
--- a/be/src/olap/rowset/segment_v2/indexed_column_reader.h
+++ b/be/src/olap/rowset/segment_v2/indexed_column_reader.h
@@ -53,7 +53,7 @@ public:
// read a page specified by `pp' from `file' into `handle'
Status read_page(fs::ReadableBlock* rblock, const PagePointer& pp,
PageHandle* handle,
Slice* body, PageFooterPB* footer, PageTypePB type,
- BlockCompressionCodec* codec) const;
+ BlockCompressionCodec* codec, bool pre_decode) const;
int64_t num_values() const { return _num_values; }
const EncodingInfo* encoding_info() const { return _encoding_info; }
diff --git a/be/src/olap/rowset/segment_v2/page_io.cpp
b/be/src/olap/rowset/segment_v2/page_io.cpp
index efb9532f3d..04dec41ee3 100644
--- a/be/src/olap/rowset/segment_v2/page_io.cpp
+++ b/be/src/olap/rowset/segment_v2/page_io.cpp
@@ -193,7 +193,7 @@ Status PageIO::read_and_decompress_page(const
PageReadOptions& opts, PageHandle*
opts.stats->uncompressed_bytes_read += body_size;
}
- if (opts.encoding_info) {
+ if (opts.pre_decode && opts.encoding_info) {
auto* pre_decoder = opts.encoding_info->get_data_page_pre_decoder();
if (pre_decoder) {
RETURN_IF_ERROR(pre_decoder->decode(
diff --git a/be/src/olap/rowset/segment_v2/page_io.h
b/be/src/olap/rowset/segment_v2/page_io.h
index ee7d457afb..d54494710c 100644
--- a/be/src/olap/rowset/segment_v2/page_io.h
+++ b/be/src/olap/rowset/segment_v2/page_io.h
@@ -62,6 +62,9 @@ struct PageReadOptions {
const EncodingInfo* encoding_info = nullptr;
+ // index_page should not be pre-decoded
+ bool pre_decode = true;
+
void sanity_check() const {
CHECK_NOTNULL(rblock);
CHECK_NOTNULL(stats);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]