diff --git a/src/sql/das/ob_das_scan_op.h b/src/sql/das/ob_das_scan_op.h index d96c6bff0..e47dbc316 100644 --- a/src/sql/das/ob_das_scan_op.h +++ b/src/sql/das/ob_das_scan_op.h @@ -369,7 +369,7 @@ public: common::ObNewRowIterator *get_rowkey_iter() { return rowkey_iter_; } int reuse_iter(); virtual int reset_lookup_state(); - int revert_iter(); + virtual int revert_iter(); VIRTUAL_TO_STRING_KV(KPC_(lookup_ctdef), KPC_(lookup_rtdef), KPC_(tx_desc), diff --git a/src/sql/das/ob_das_spatial_index_lookup_op.cpp b/src/sql/das/ob_das_spatial_index_lookup_op.cpp index 61c08ca27..0042adf6f 100644 --- a/src/sql/das/ob_das_spatial_index_lookup_op.cpp +++ b/src/sql/das/ob_das_spatial_index_lookup_op.cpp @@ -66,6 +66,17 @@ ObSpatialIndexLookupOp::~ObSpatialIndexLookupOp() sorter_.~ObExternalSort(); } +int ObSpatialIndexLookupOp::revert_iter() +{ + int ret = OB_SUCCESS; + if (OB_FAIL(ObLocalIndexLookupOp::revert_iter())) { + LOG_WARN("revert local index lookup iter from spatial fail.", K(ret)); + } + sorter_.clean_up(); + sorter_.~ObExternalSort(); + return ret; +} + int ObSpatialIndexLookupOp::reset_lookup_state() { is_inited_ = false; diff --git a/src/sql/das/ob_das_spatial_index_lookup_op.h b/src/sql/das/ob_das_spatial_index_lookup_op.h index 79a6af26d..5c5305ded 100644 --- a/src/sql/das/ob_das_spatial_index_lookup_op.h +++ b/src/sql/das/ob_das_spatial_index_lookup_op.h @@ -50,6 +50,8 @@ public: int reset_lookup_state(); int filter_by_mbr(const ObObj &mbr_obj, bool &pass_through); int get_next_row(); + int revert_iter(); + private: int process_data_table_rowkey(); int save_rowkeys();