diff --git a/src/storage/memtable/ob_memtable_key.h b/src/storage/memtable/ob_memtable_key.h index 882487245..8b628bb72 100644 --- a/src/storage/memtable/ob_memtable_key.h +++ b/src/storage/memtable/ob_memtable_key.h @@ -220,7 +220,13 @@ public: const common::ObObjMeta &schema_meta = columns.at(i).col_type_; if (common::ObNullType != value.get_type() && common::ObExtendType != value.get_type() - && schema_meta.get_type() != value.get_type()) { + && schema_meta.get_type() != value.get_type() + && !(lib::is_mysql_mode() + && (common::is_match_alter_integer_column_online_ddl_rules(schema_meta, value.get_meta()) + || common::is_match_alter_integer_column_online_ddl_rules(value.get_meta(), schema_meta))) // small integer -> big integer; mysql mode; + && !(lib::is_oracle_mode() + && ((common::ObNumberType == schema_meta.get_type() && common::ObNumberFloatType == value.get_type()) + || (common::ObNumberType == value.get_type() && common::ObNumberFloatType == schema_meta.get_type())))) { // number -> float; oracle mode; TRANS_LOG(WARN, "data/schema type does not match", "index", i, "data_type", value.get_type(),