You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2023/01/18 09:47:46 UTC
[doris] branch master updated: [refractor](schema) refractor schema::get_predicate_column_ptr (#16043)
This is an automated email from the ASF dual-hosted git repository.
yiguolei 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 bac2adfc74 [refractor](schema) refractor schema::get_predicate_column_ptr (#16043)
bac2adfc74 is described below
commit bac2adfc74f738d1463fdf4fe5ffa0d349b2fdc6
Author: camby <10...@qq.com>
AuthorDate: Wed Jan 18 17:47:37 2023 +0800
[refractor](schema) refractor schema::get_predicate_column_ptr (#16043)
* refractor Schema::get_predicate_column_ptr
* update code format
Co-authored-by: cambyzju <zh...@baidu.com>
---
be/src/olap/rowset/segment_v2/segment_iterator.cpp | 3 +-
be/src/olap/schema.cpp | 91 +++++++++++-----------
be/src/olap/schema.h | 4 +-
3 files changed, 49 insertions(+), 49 deletions(-)
diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
index 224f5effc2..659b49b6fe 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -1294,8 +1294,7 @@ Status SegmentIterator::next_batch(vectorized::Block* block) {
auto cid = _schema.column_id(i);
auto column_desc = _schema.column(cid);
if (_is_pred_column[cid]) {
- _current_return_columns[cid] =
- Schema::get_predicate_column_nullable_ptr(*column_desc);
+ _current_return_columns[cid] = Schema::get_predicate_column_ptr(*column_desc);
_current_return_columns[cid]->set_rowset_segment_id(
{_segment->rowset_id(), _segment->id()});
_current_return_columns[cid]->reserve(_opts.block_row_max);
diff --git a/be/src/olap/schema.cpp b/be/src/olap/schema.cpp
index b4116ec0a5..cb4b9036aa 100644
--- a/be/src/olap/schema.cpp
+++ b/be/src/olap/schema.cpp
@@ -117,77 +117,80 @@ vectorized::IColumn::MutablePtr Schema::get_column_by_field(const Field& field)
return get_data_type_ptr(field)->create_column();
}
-vectorized::IColumn::MutablePtr Schema::get_predicate_column_nullable_ptr(const Field& field) {
+vectorized::IColumn::MutablePtr Schema::get_predicate_column_ptr(const Field& field) {
if (UNLIKELY(field.type() == OLAP_FIELD_TYPE_ARRAY)) {
return get_data_type_ptr(field)->create_column();
}
- vectorized::IColumn::MutablePtr ptr = Schema::get_predicate_column_ptr(field.type());
- if (field.is_nullable()) {
- return doris::vectorized::ColumnNullable::create(std::move(ptr),
- doris::vectorized::ColumnUInt8::create());
- }
- return ptr;
-}
-
-vectorized::IColumn::MutablePtr Schema::get_predicate_column_ptr(FieldType type) {
- switch (type) {
+ vectorized::IColumn::MutablePtr ptr = nullptr;
+ switch (field.type()) {
case OLAP_FIELD_TYPE_BOOL:
- return doris::vectorized::PredicateColumnType<TYPE_BOOLEAN>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_BOOLEAN>::create();
+ break;
case OLAP_FIELD_TYPE_TINYINT:
- return doris::vectorized::PredicateColumnType<TYPE_TINYINT>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_TINYINT>::create();
+ break;
case OLAP_FIELD_TYPE_SMALLINT:
- return doris::vectorized::PredicateColumnType<TYPE_SMALLINT>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_SMALLINT>::create();
+ break;
case OLAP_FIELD_TYPE_INT:
- return doris::vectorized::PredicateColumnType<TYPE_INT>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_INT>::create();
+ break;
case OLAP_FIELD_TYPE_FLOAT:
- return doris::vectorized::PredicateColumnType<TYPE_FLOAT>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_FLOAT>::create();
+ break;
case OLAP_FIELD_TYPE_DOUBLE:
- return doris::vectorized::PredicateColumnType<TYPE_DOUBLE>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_DOUBLE>::create();
+ break;
case OLAP_FIELD_TYPE_BIGINT:
- return doris::vectorized::PredicateColumnType<TYPE_BIGINT>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_BIGINT>::create();
+ break;
case OLAP_FIELD_TYPE_LARGEINT:
- return doris::vectorized::PredicateColumnType<TYPE_LARGEINT>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_LARGEINT>::create();
+ break;
case OLAP_FIELD_TYPE_DATE:
- return doris::vectorized::PredicateColumnType<TYPE_DATE>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_DATE>::create();
+ break;
case OLAP_FIELD_TYPE_DATEV2:
- return doris::vectorized::PredicateColumnType<TYPE_DATEV2>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_DATEV2>::create();
+ break;
case OLAP_FIELD_TYPE_DATETIMEV2:
- return doris::vectorized::PredicateColumnType<TYPE_DATETIMEV2>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_DATETIMEV2>::create();
+ break;
case OLAP_FIELD_TYPE_DATETIME:
- return doris::vectorized::PredicateColumnType<TYPE_DATETIME>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_DATETIME>::create();
+ break;
case OLAP_FIELD_TYPE_CHAR:
case OLAP_FIELD_TYPE_VARCHAR:
case OLAP_FIELD_TYPE_STRING:
if (config::enable_low_cardinality_optimize) {
- return doris::vectorized::ColumnDictionary<doris::vectorized::Int32>::create(type);
+ ptr = doris::vectorized::ColumnDictionary<doris::vectorized::Int32>::create(
+ field.type());
+ } else {
+ ptr = doris::vectorized::PredicateColumnType<TYPE_STRING>::create();
}
- return doris::vectorized::PredicateColumnType<TYPE_STRING>::create();
-
+ break;
case OLAP_FIELD_TYPE_DECIMAL:
- return doris::vectorized::PredicateColumnType<TYPE_DECIMALV2>::create();
+ ptr = doris::vectorized::PredicateColumnType<TYPE_DECIMALV2>::create();
+ break;
case OLAP_FIELD_TYPE_DECIMAL32:
- return doris::vectorized::PredicateColumnType<TYPE_DECIMAL32>::create();
+ ptr = doris::vectorized::PredicateColumnType<TYPE_DECIMAL32>::create();
+ break;
case OLAP_FIELD_TYPE_DECIMAL64:
- return doris::vectorized::PredicateColumnType<TYPE_DECIMAL64>::create();
+ ptr = doris::vectorized::PredicateColumnType<TYPE_DECIMAL64>::create();
+ break;
case OLAP_FIELD_TYPE_DECIMAL128I:
- return doris::vectorized::PredicateColumnType<TYPE_DECIMAL128I>::create();
-
+ ptr = doris::vectorized::PredicateColumnType<TYPE_DECIMAL128I>::create();
+ break;
default:
- LOG(FATAL) << "Unexpected type when choosing predicate column, type=" << type;
+ LOG(FATAL) << "Unexpected type when choosing predicate column, type=" << field.type();
}
+
+ if (field.is_nullable()) {
+ return doris::vectorized::ColumnNullable::create(std::move(ptr),
+ doris::vectorized::ColumnUInt8::create());
+ }
+ return ptr;
}
} // namespace doris
diff --git a/be/src/olap/schema.h b/be/src/olap/schema.h
index afbff13b00..4b06aed2b2 100644
--- a/be/src/olap/schema.h
+++ b/be/src/olap/schema.h
@@ -112,9 +112,7 @@ public:
static vectorized::IColumn::MutablePtr get_column_by_field(const Field& field);
- static vectorized::IColumn::MutablePtr get_predicate_column_ptr(FieldType type);
-
- static vectorized::IColumn::MutablePtr get_predicate_column_nullable_ptr(const Field& field);
+ static vectorized::IColumn::MutablePtr get_predicate_column_ptr(const Field& field);
const std::vector<Field*>& columns() const { return _cols; }
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org