yiguolei commented on code in PR #66472:
URL: https://github.com/apache/doris/pull/66472#discussion_r3765560896
##########
be/src/storage/segment/segment_iterator.cpp:
##########
@@ -2175,75 +1981,57 @@ bool SegmentIterator::_prune_column(ColumnId cid,
MutableColumnPtr& column,
}
bool SegmentIterator::_can_skip_reading_extra_column(ColumnId cid) {
- if (!_opts.extra_columns.contains(cid) || _is_pred_column.empty()) {
+ if (!_opts.extra_columns.contains(cid)) {
return false;
}
- DCHECK_EQ(_is_pred_column.size(), _is_common_expr_column.size());
- DCHECK_LT(cid, _is_pred_column.size());
// extra_columns is only an optimization hint. The real value is still
// required when the column participates in expression materialization or
// any predicate path.
- return !_virtual_column_exprs.contains(cid) && !_has_delete_predicate(cid)
&&
- !_is_pred_column[cid] && !_is_common_expr_column[cid];
-}
-
-Status SegmentIterator::_read_columns(const std::vector<ColumnId>& column_ids,
- MutableColumns& column_block, size_t
nrows) {
- for (auto cid : column_ids) {
- auto& column = column_block[cid];
- size_t rows_read = nrows;
- if (_prune_column(cid, column, rows_read)) {
- continue;
- }
- RETURN_IF_ERROR(_column_iterators[cid]->next_batch(&rows_read,
column));
- if (nrows != rows_read) {
- return Status::Error<ErrorCode::INTERNAL_ERROR>("nrows({}) !=
rows_read({})", nrows,
- rows_read);
- }
- }
- return Status::OK();
+ return !_virtual_column_exprs.contains(cid) &&
!_column_states[cid].is_predicate() &&
+ !_column_states[cid].is_common_expr;
}
Status SegmentIterator::_init_current_block(Block* block,
std::vector<MutableColumnPtr>&
current_columns,
uint32_t nrows_read_limit) {
- block->clear_column_data(_schema->num_column_ids());
+ block->clear_column_data(cast_set<int64_t>(_schema->num_block_columns()));
- for (size_t i = 0; i < _schema->num_column_ids(); i++) {
- auto cid = _schema->column_id(i);
- const auto* column_desc = _schema->column(cid);
+ for (ColumnId i = 0; i < _schema->num_read_columns(); i++) {
+ if (!_is_active_read_column(i)) {
Review Comment:
什么时候这个 active 是false?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]