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]

Reply via email to