This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch branch-1.2-lts in repository https://gitbox.apache.org/repos/asf/doris.git
commit 683262c3c18b836bb21a78a0a7398e9ef0993d9c Author: Ashin Gau <ashin...@users.noreply.github.com> AuthorDate: Mon Dec 26 22:49:35 2022 +0800 [fix](multi-catalog) throw NPE when reading data after EOF (#15358) 1. Fix 1 bug: Throw null pointer exception when reading data after the reader reaches the end of file, so should return directly when `_do_lazy_read` read no data. 2. Optimize code: Remove unused parameters. 3. Fix regression test --- be/src/vec/exec/format/parquet/vparquet_column_reader.cpp | 1 - be/src/vec/exec/format/parquet/vparquet_column_reader.h | 4 ++-- be/src/vec/exec/format/parquet/vparquet_group_reader.cpp | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/be/src/vec/exec/format/parquet/vparquet_column_reader.cpp b/be/src/vec/exec/format/parquet/vparquet_column_reader.cpp index 75f43b4730..79760f82a6 100644 --- a/be/src/vec/exec/format/parquet/vparquet_column_reader.cpp +++ b/be/src/vec/exec/format/parquet/vparquet_column_reader.cpp @@ -27,7 +27,6 @@ namespace doris::vectorized { Status ParquetColumnReader::create(FileReader* file, FieldSchema* field, - const ParquetReadColumn& column, const tparquet::RowGroup& row_group, const std::vector<RowRange>& row_ranges, cctz::time_zone* ctz, std::unique_ptr<ParquetColumnReader>& reader, diff --git a/be/src/vec/exec/format/parquet/vparquet_column_reader.h b/be/src/vec/exec/format/parquet/vparquet_column_reader.h index de0ec185b9..f8d8085df8 100644 --- a/be/src/vec/exec/format/parquet/vparquet_column_reader.h +++ b/be/src/vec/exec/format/parquet/vparquet_column_reader.h @@ -107,7 +107,7 @@ public: virtual Status read_column_data(ColumnPtr& doris_column, DataTypePtr& type, ColumnSelectVector& select_vector, size_t batch_size, size_t* read_rows, bool* eof) = 0; - static Status create(FileReader* file, FieldSchema* field, const ParquetReadColumn& column, + static Status create(FileReader* file, FieldSchema* field, const tparquet::RowGroup& row_group, const std::vector<RowRange>& row_ranges, cctz::time_zone* ctz, std::unique_ptr<ParquetColumnReader>& reader, size_t max_buf_size); @@ -190,4 +190,4 @@ private: level_t _EMPTY_ARRAY = -1; level_t _NULL_ARRAY = -1; }; -}; // namespace doris::vectorized \ No newline at end of file +}; // namespace doris::vectorized diff --git a/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp b/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp index 24441896a9..e3f841f1b1 100644 --- a/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp +++ b/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp @@ -57,7 +57,7 @@ Status RowGroupReader::init(const FieldDescriptor& schema, std::vector<RowRange> for (auto& read_col : _read_columns) { auto field = const_cast<FieldSchema*>(schema.get_column(read_col._file_slot_name)); std::unique_ptr<ParquetColumnReader> reader; - RETURN_IF_ERROR(ParquetColumnReader::create(_file_reader, field, read_col, _row_group_meta, + RETURN_IF_ERROR(ParquetColumnReader::create(_file_reader, field, _row_group_meta, _read_ranges, _ctz, reader, max_buf_size)); auto col_iter = col_offsets.find(read_col._parquet_col_id); if (col_iter != col_offsets.end()) { @@ -233,6 +233,7 @@ Status RowGroupReader::_do_lazy_read(Block* block, size_t batch_size, size_t* re DCHECK_EQ(pre_read_rows + _cached_filtered_rows, 0); *read_rows = 0; *batch_eof = true; + return Status::OK(); } ColumnSelectVector& select_vector = *select_vector_ptr; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org