github-actions[bot] commented on code in PR #26749:
URL: https://github.com/apache/doris/pull/26749#discussion_r1393696155
##########
be/src/olap/rowset/segment_v2/segment.cpp:
##########
@@ -341,6 +379,115 @@
_file_reader, &reader));
_column_readers.emplace(column.unique_id(), std::move(reader));
}
+
+ // init by column path
+ for (uint32_t ordinal = 0; ordinal < _tablet_schema->num_columns();
++ordinal) {
+ auto& column = _tablet_schema->column(ordinal);
+ auto iter = column_path_to_footer_ordinal.find(column.path_info());
+ if (iter == column_path_to_footer_ordinal.end()) {
+ continue;
+ }
+ ColumnReaderOptions opts;
+ opts.kept_in_memory = _tablet_schema->is_in_memory();
+ std::unique_ptr<ColumnReader> reader;
+ RETURN_IF_ERROR(ColumnReader::create(opts,
footer.columns(iter->second), footer.num_rows(),
+ _file_reader, &reader));
+ _sub_column_tree.add(
+ iter->first,
+ SubcolumnReader {std::move(reader),
+
vectorized::DataTypeFactory::instance().create_data_type(
+ footer.columns(iter->second))});
+ }
+ return Status::OK();
+}
+
+static Status new_default_iterator(const TabletColumn& tablet_column,
+ std::unique_ptr<ColumnIterator>* iter) {
+ if (!tablet_column.has_default_value() && !tablet_column.is_nullable()) {
+ return Status::InternalError("invalid nonexistent column without
default value.");
+ }
+ auto type_info = get_type_info(&tablet_column);
+ std::unique_ptr<DefaultValueColumnIterator> default_value_iter(new
DefaultValueColumnIterator(
+ tablet_column.has_default_value(), tablet_column.default_value(),
+ tablet_column.is_nullable(), std::move(type_info),
tablet_column.precision(),
+ tablet_column.frac()));
+ ColumnIteratorOptions iter_opts;
+
+ RETURN_IF_ERROR(default_value_iter->init(iter_opts));
+ *iter = std::move(default_value_iter);
+ return Status::OK();
+}
+
+Status Segment::new_column_iterator_with_path(const TabletColumn&
tablet_column,
Review Comment:
warning: method 'new_column_iterator_with_path' can be made static
[readability-convert-member-functions-to-static]
```suggestion
static Status Segment::new_column_iterator_with_path(const TabletColumn&
tablet_column,
```
##########
be/src/olap/rowset/segment_v2/segment.cpp:
##########
@@ -352,36 +499,53 @@
// but in the old schema column b's cid == 2
// but they are not the same column
Status Segment::new_column_iterator(const TabletColumn& tablet_column,
- std::unique_ptr<ColumnIterator>* iter) {
+ std::unique_ptr<ColumnIterator>* iter,
+ StorageReadOptions* opt) {
+ // init column iterator by path info
+ if (!tablet_column.path_info().empty() || tablet_column.is_variant_type())
{
+ return new_column_iterator_with_path(tablet_column, iter, opt);
+ }
+ // init default iterator
if (_column_readers.count(tablet_column.unique_id()) < 1) {
- if (!tablet_column.has_default_value() &&
!tablet_column.is_nullable()) {
- return Status::InternalError("invalid nonexistent column without
default value.");
- }
- auto type_info = get_type_info(&tablet_column);
- std::unique_ptr<DefaultValueColumnIterator> default_value_iter(
- new
DefaultValueColumnIterator(tablet_column.has_default_value(),
- tablet_column.default_value(),
- tablet_column.is_nullable(),
std::move(type_info),
- tablet_column.precision(),
tablet_column.frac()));
- ColumnIteratorOptions iter_opts;
-
- RETURN_IF_ERROR(default_value_iter->init(iter_opts));
- *iter = std::move(default_value_iter);
+ RETURN_IF_ERROR(new_default_iterator(tablet_column, iter));
return Status::OK();
}
+ // init iterator by unique id
ColumnIterator* it;
RETURN_IF_ERROR(_column_readers.at(tablet_column.unique_id())->new_iterator(&it));
iter->reset(it);
return Status::OK();
}
+Status Segment::new_column_iterator(int32_t unique_id,
std::unique_ptr<ColumnIterator>* iter) {
+ ColumnIterator* it;
+ RETURN_IF_ERROR(_column_readers.at(unique_id)->new_iterator(&it));
+ iter->reset(it);
+ return Status::OK();
+}
+
+ColumnReader* Segment::_get_column_reader(const TabletColumn& col) {
Review Comment:
warning: method '_get_column_reader' can be made static
[readability-convert-member-functions-to-static]
be/src/olap/rowset/segment_v2/segment.h:181:
```diff
- ColumnReader* _get_column_reader(const TabletColumn& col);
+ static ColumnReader* _get_column_reader(const TabletColumn& col);
```
##########
be/src/olap/rowset/segment_v2/segment.cpp:
##########
@@ -318,14 +330,40 @@ Status Segment::_load_index_impl() {
});
}
+vectorized::DataTypePtr Segment::get_data_type_of(const Field& field, bool
ignore_children) const {
Review Comment:
warning: method 'get_data_type_of' can be made static
[readability-convert-member-functions-to-static]
```suggestion
vectorized::DataTypePtr Segment::get_data_type_of(const Field& field, bool
ignore_children) {
```
be/src/olap/rowset/segment_v2/segment.h:147:
```diff
- std::shared_ptr<const vectorized::IDataType> get_data_type_of(const
Field& filed,
- bool
ignore_children) const;
+ static std::shared_ptr<const vectorized::IDataType>
get_data_type_of(const Field& filed,
+ bool
ignore_children) ;
```
##########
be/src/olap/rowset/segment_v2/segment.cpp:
##########
@@ -483,5 +646,19 @@
return Status::OK();
}
+bool Segment::same_with_storage_type(int32_t cid, const Schema& schema,
Review Comment:
warning: method 'same_with_storage_type' can be made static
[readability-convert-member-functions-to-static]
be/src/olap/rowset/segment_v2/segment.cpp:649:
```diff
- bool ignore_children) const {
+ bool ignore_children) {
```
be/src/olap/rowset/segment_v2/segment.h:151:
```diff
- bool same_with_storage_type(int32_t cid, const Schema& schema, bool
ignore_children) const;
+ static bool same_with_storage_type(int32_t cid, const Schema& schema,
bool ignore_children) ;
```
--
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]