diff --git a/src/sql/optimizer/ob_table_location.cpp b/src/sql/optimizer/ob_table_location.cpp index c3814269eb..5a79618c3c 100644 --- a/src/sql/optimizer/ob_table_location.cpp +++ b/src/sql/optimizer/ob_table_location.cpp @@ -4329,6 +4329,7 @@ int ValueItemExpr::serialize(char *buf, const int64_t buf_len, int64_t &pos) con } else if (QUESTMARK_TYPE == type_) { OB_UNIS_ENCODE(idx_); } + OB_UNIS_ENCODE(dst_type_); if (ob_is_enum_or_set_type(dst_type_)) { CK(OB_NOT_NULL(enum_set_values_)); OB_UNIS_ENCODE_ARRAY(enum_set_values_, enum_set_values_cnt_); @@ -4349,6 +4350,7 @@ int64_t ValueItemExpr::get_serialize_size() const } else if (QUESTMARK_TYPE == type_) { OB_UNIS_ADD_LEN(idx_); } + OB_UNIS_ADD_LEN(dst_type_); if (ob_is_enum_or_set_type(dst_type_)) { OB_UNIS_ADD_LEN_ARRAY(enum_set_values_, enum_set_values_cnt_); } @@ -4372,6 +4374,7 @@ int ValueItemExpr::deserialize(common::ObIAllocator &allocator, const char *buf, } else if (QUESTMARK_TYPE == type_) { OB_UNIS_DECODE(idx_); } + OB_UNIS_DECODE(dst_type_); if (ob_is_enum_or_set_type(dst_type_)) { OB_UNIS_DECODE(enum_set_values_cnt_); if (enum_set_values_cnt_ > 0) { @@ -4394,6 +4397,7 @@ int ValueItemExpr::deep_copy(ObIAllocator &allocator, ValueItemExpr &dst) const } else if (CONST_EXPR_TYPE == type_) { OZ(expr_->deep_copy(allocator, dst.expr_)); } + dst.dst_type_ = dst_type_; if (ob_is_enum_or_set_type(dst_type_)) { dst.enum_set_values_cnt_ = enum_set_values_cnt_; dst.enum_set_values_ =