From d37b31044f3aa37830097d4285e5b5269b3a4041 Mon Sep 17 00:00:00 2001 From: obdev Date: Wed, 20 Sep 2023 16:38:31 +0000 Subject: [PATCH] [GIS]fix spatial lookup leak --- src/sql/das/ob_das_scan_op.h | 2 +- src/sql/das/ob_das_spatial_index_lookup_op.cpp | 11 +++++++++++ src/sql/das/ob_das_spatial_index_lookup_op.h | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) 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();