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]