This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 2abbc9f921 [Fix](multi-catalog) Fix parquet bugs of #19758 'replace
the single pointer with an array of 'conjuncts' in ExecNode'. (#20191)
2abbc9f921 is described below
commit 2abbc9f9212d1d3579756d106dcb5647f73ccb0d
Author: Qi Chen <[email protected]>
AuthorDate: Tue May 30 09:55:12 2023 +0800
[Fix](multi-catalog) Fix parquet bugs of #19758 'replace the single pointer
with an array of 'conjuncts' in ExecNode'. (#20191)
Fix some parquet reader bugs which introduced by #19758 'replace the single
pointer with an array of 'conjuncts' in ExecNode'.
---
be/src/vec/exec/format/parquet/vparquet_group_reader.cpp | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
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 f04f46c9a2..b50dc1d0e0 100644
--- a/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp
+++ b/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp
@@ -444,7 +444,7 @@ Status RowGroupReader::_do_lazy_read(Block* block, size_t
batch_size, size_t* re
VExprContextSPtrs filter_contexts;
for (auto& conjunct : _filter_conjuncts) {
- filter_contexts.emplace_back(conjunct.get());
+ filter_contexts.emplace_back(conjunct);
}
RETURN_IF_ERROR(VExprContext::execute_conjuncts(filter_contexts,
&filters, block,
&result_filter,
&can_filter_all));
@@ -770,8 +770,7 @@ Status RowGroupReader::_rewrite_dict_predicates() {
auto iter = _slot_id_to_filter_conjuncts->find(slot_id);
if (iter != _slot_id_to_filter_conjuncts->end()) {
for (auto& ctx : iter->second) {
- ctxs.emplace_back(ctx.get());
- _filter_conjuncts.push_back(ctx);
+ ctxs.push_back(ctx);
}
} else {
std::stringstream msg;
@@ -804,6 +803,9 @@ Status RowGroupReader::_rewrite_dict_predicates() {
// About Performance: if dict_column size is too large, it will
generate a large IN filter.
if (dict_column->size() > MAX_DICT_CODE_PREDICATE_TO_REWRITE) {
it = _dict_filter_cols.erase(it);
+ for (auto& ctx : ctxs) {
+ _filter_conjuncts.push_back(ctx);
+ }
continue;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]