This is an automated email from the ASF dual-hosted git repository.

kxiao 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 e610044bae5 [Enhancement] (schema) add column type check (#28718)
e610044bae5 is described below

commit e610044bae59d64894e8482175c1ac49cfdb69a8
Author: Luwei <[email protected]>
AuthorDate: Thu Dec 28 17:11:24 2023 +0800

    [Enhancement] (schema) add column type check (#28718)
---
 be/src/common/config.cpp                      |  1 +
 be/src/common/config.h                        |  2 ++
 be/src/olap/rowset/segment_v2/column_reader.h |  2 ++
 be/src/olap/rowset/segment_v2/segment.cpp     | 10 ++++++++++
 4 files changed, 15 insertions(+)

diff --git a/be/src/common/config.cpp b/be/src/common/config.cpp
index 358db99e592..42a95302122 100644
--- a/be/src/common/config.cpp
+++ b/be/src/common/config.cpp
@@ -1144,6 +1144,7 @@ DEFINE_Bool(enable_snapshot_action, "false");
 
 DEFINE_mInt32(variant_max_merged_tablet_schema_size, "2048");
 
+DEFINE_mBool(enable_column_type_check, "true");
 // 128 MB
 DEFINE_mInt64(local_exchange_buffer_mem_limit, "134217728");
 
diff --git a/be/src/common/config.h b/be/src/common/config.h
index a41a3d06141..d38e059c416 100644
--- a/be/src/common/config.h
+++ b/be/src/common/config.h
@@ -1223,6 +1223,8 @@ DECLARE_mInt32(variant_max_merged_tablet_schema_size);
 
 DECLARE_mInt64(local_exchange_buffer_mem_limit);
 
+DECLARE_mBool(enable_column_type_check);
+
 #ifdef BE_TEST
 // test s3
 DECLARE_String(test_s3_resource);
diff --git a/be/src/olap/rowset/segment_v2/column_reader.h 
b/be/src/olap/rowset/segment_v2/column_reader.h
index 99ff2310808..78cd0164533 100644
--- a/be/src/olap/rowset/segment_v2/column_reader.h
+++ b/be/src/olap/rowset/segment_v2/column_reader.h
@@ -182,6 +182,8 @@ public:
 
     void disable_index_meta_cache() { _use_index_page_cache = false; }
 
+    FieldType get_meta_type() { return _meta_type; }
+
 private:
     ColumnReader(const ColumnReaderOptions& opts, const ColumnMetaPB& meta, 
uint64_t num_rows,
                  io::FileReaderSPtr file_reader);
diff --git a/be/src/olap/rowset/segment_v2/segment.cpp 
b/be/src/olap/rowset/segment_v2/segment.cpp
index 1f9956e5e69..b7d3a4ca0f9 100644
--- a/be/src/olap/rowset/segment_v2/segment.cpp
+++ b/be/src/olap/rowset/segment_v2/segment.cpp
@@ -524,6 +524,16 @@ Status Segment::new_column_iterator(const TabletColumn& 
tablet_column,
     ColumnIterator* it;
     
RETURN_IF_ERROR(_column_readers.at(tablet_column.unique_id())->new_iterator(&it));
     iter->reset(it);
+
+    if (config::enable_column_type_check &&
+        tablet_column.type() != 
_column_readers.at(tablet_column.unique_id())->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());
+        return Status::InternalError("different type between schema and column 
reader");
+    }
     return Status::OK();
 }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to