diff --git a/src/storage/blocksstable/encoding/ob_column_equal_encoder.cpp b/src/storage/blocksstable/encoding/ob_column_equal_encoder.cpp index 7144cfa4c..3354a8d6d 100644 --- a/src/storage/blocksstable/encoding/ob_column_equal_encoder.cpp +++ b/src/storage/blocksstable/encoding/ob_column_equal_encoder.cpp @@ -107,12 +107,6 @@ int ObColumnEqualEncoder::traverse(bool &suitable) precision = column_type_.get_stored_precision(); OB_ASSERT(precision != PRECISION_UNKNOWN_YET); } - sql::ObExprBasicFuncs *basic_funcs = ObDatumFuncs::get_basic_func( - column_type_.get_type(), column_type_.get_collation_type(), column_type_.get_scale(), - lib::is_oracle_mode(), has_lob_header, precision); - ObCmpFunc cmp_func; - cmp_func.cmp_func_ = lib::is_oracle_mode() - ? basic_funcs->null_last_cmp_ : basic_funcs->null_first_cmp_; // get all exception row_ids for (int64_t row_id = 0; row_id < rows_->count() && OB_SUCC(ret) @@ -120,7 +114,7 @@ int ObColumnEqualEncoder::traverse(bool &suitable) const ObDatum &datum = ctx_->col_datums_->at(row_id); const ObDatum &ref_datum = ref_ctx_->col_datums_->at(row_id); bool equal = false; - if (OB_FAIL(is_datum_equal(datum, ref_datum, cmp_func, equal))) { + if (OB_FAIL(is_datum_equal(datum, ref_datum, equal))) { LOG_WARN("cmp datum failed", K(ret), K(row_id)); } else if (!equal && OB_FAIL(exc_row_ids_.push_back(row_id))) { LOG_WARN("push_back failed", K(ret), K(row_id)); diff --git a/src/storage/blocksstable/encoding/ob_column_equal_encoder.h b/src/storage/blocksstable/encoding/ob_column_equal_encoder.h index ab3085296..65cc92797 100644 --- a/src/storage/blocksstable/encoding/ob_column_equal_encoder.h +++ b/src/storage/blocksstable/encoding/ob_column_equal_encoder.h @@ -77,7 +77,6 @@ private: OB_INLINE int is_datum_equal( const common::ObDatum &left, const common::ObDatum &right, - const common::ObCmpFunc &cmp_func, bool &equal) const; int64_t ref_col_idx_; @@ -91,14 +90,11 @@ private: OB_INLINE int ObColumnEqualEncoder::is_datum_equal( const common::ObDatum &left, const common::ObDatum &right, - const common::ObCmpFunc &cmp_func, bool &equal) const { int ret = OB_SUCCESS; equal = false; const bool is_int_type = ObIntSC == store_class_ || ObUIntSC == store_class_; - const bool need_binary_equal = - store_class_ != ObNumberSC && store_class_ != ObOTimestampSC && store_class_ != ObIntervalSC; ObStoredExtValue left_ext = get_stored_ext_value(left); ObStoredExtValue right_ext = get_stored_ext_value(right); if (left_ext != right_ext) { @@ -107,12 +103,8 @@ OB_INLINE int ObColumnEqualEncoder::is_datum_equal( equal = true; } else if (is_int_type) { equal = (left.get_uint64() == right.get_uint64()); - } else if (need_binary_equal) { - equal = ObDatum::binary_equal(left, right); } else { - int cmp_ret = 0; - ret = cmp_func.cmp_func_(left, right, cmp_ret); - equal = (0 == cmp_ret); + equal = ObDatum::binary_equal(left, right); } return ret; }