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