eldenmoon commented on code in PR #49040:
URL: https://github.com/apache/doris/pull/49040#discussion_r2196688865
##########
be/src/olap/rowset/segment_v2/segment.cpp:
##########
@@ -897,63 +964,118 @@ Status Segment::new_column_iterator(const TabletColumn&
tablet_column,
return new_column_iterator_with_path(tablet_column, iter, opt);
}
// init default iterator
- if (!_column_readers.contains(tablet_column.unique_id())) {
+ if (!_column_uid_to_footer_ordinal.contains(tablet_column.unique_id())) {
RETURN_IF_ERROR(new_default_iterator(tablet_column, iter));
return Status::OK();
}
// init iterator by unique id
+ std::shared_ptr<ColumnReader> reader;
+ RETURN_IF_ERROR(_get_column_reader(tablet_column, &reader));
ColumnIterator* it;
- RETURN_IF_ERROR(
- _column_readers.at(tablet_column.unique_id())->new_iterator(&it,
&tablet_column));
+ RETURN_IF_ERROR(reader->new_iterator(&it, &tablet_column));
iter->reset(it);
if (config::enable_column_type_check && !tablet_column.is_agg_state_type()
&&
- tablet_column.type() !=
_column_readers.at(tablet_column.unique_id())->get_meta_type()) {
+ tablet_column.type() != reader->get_meta_type()) {
LOG(WARNING) << "different type between schema and column reader,"
<< " column schema name: " << tablet_column.name()
<< " column schema type: " << int(tablet_column.type())
- << " column reader meta type: "
- <<
int(_column_readers.at(tablet_column.unique_id())->get_meta_type());
+ << " column reader meta type: " <<
int(reader->get_meta_type());
return Status::InternalError("different type between schema and column
reader");
}
return Status::OK();
}
-Status Segment::new_column_iterator(int32_t unique_id, const
StorageReadOptions* opt,
- std::unique_ptr<ColumnIterator>* iter) {
- RETURN_IF_ERROR(_create_column_readers_once(opt->stats));
- ColumnIterator* it;
- TabletColumn tablet_column = _tablet_schema->column_by_uid(unique_id);
- RETURN_IF_ERROR(_column_readers.at(unique_id)->new_iterator(&it,
&tablet_column));
- iter->reset(it);
+Status Segment::_get_column_reader(vectorized::PathInDataRef relative_path,
uint32_t col_uid,
+ std::shared_ptr<ColumnReader>*
column_reader) {
+ if (!_tablet_schema->has_column_unique_id(col_uid)) {
+ *column_reader = nullptr;
Review Comment:
返回NotFound比较合理
--
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]