fix srs parser glibc_malloc memory leak
This commit is contained in:
@ -20,6 +20,7 @@
|
||||
#include "share/ob_thread_mgr.h"
|
||||
#include "share/inner_table/ob_inner_table_schema.h"
|
||||
#include "share/schema/ob_multi_version_schema_service.h"
|
||||
#include "share/rc/ob_tenant_base.h"
|
||||
#include "lib/geo/ob_geo_utils.h"
|
||||
|
||||
using namespace oceanbase::share;
|
||||
@ -457,6 +458,8 @@ int ObSrsCacheSnapShot::parse_srs_item(ObMySQLResult *result, const ObSrsItem *&
|
||||
double max_x = NAN;
|
||||
double max_y = NAN;
|
||||
ObSpatialReferenceSystemBase *srs_info = NULL;
|
||||
lib::ObMallocHookAttrGuard malloc_guard(lib::ObMemAttr(common::OB_SERVER_TENANT_ID, "SRSWKTParser"));
|
||||
|
||||
EXTRACT_UINT_FIELD_MYSQL(*result, "srs_id", srs_id, uint64_t);
|
||||
EXTRACT_UINT_FIELD_MYSQL(*result, "srs_version", srs_version, uint64_t);
|
||||
EXTRACT_VARCHAR_FIELD_MYSQL(*result, "srs_name", srs_name);
|
||||
@ -499,6 +502,8 @@ int ObSrsCacheSnapShot::add_pg_reserved_srs_item(const ObString &pg_wkt, const u
|
||||
int ret = OB_SUCCESS;
|
||||
ObString proj4text;
|
||||
ObSpatialReferenceSystemBase *srs_info = NULL;
|
||||
lib::ObMallocHookAttrGuard malloc_guard(lib::ObMemAttr(common::OB_SERVER_TENANT_ID, "SRSWKTParser"));
|
||||
|
||||
if (OB_FAIL(ObSrsWktParser::parse_srs_wkt(allocator_, srs_id, pg_wkt, srs_info))) {
|
||||
LOG_WARN("failed to parse pg reserved srs wkt", K(ret), K(srs_id), K(pg_wkt));
|
||||
} else {
|
||||
|
||||
@ -306,6 +306,7 @@ int ObDASUtils::generate_spatial_index_rows(
|
||||
const ObSrsBoundsItem *srs_bound = NULL;
|
||||
uint32_t srid = UINT32_MAX;
|
||||
uint64_t rowkey_num = das_ctdef.table_param_.get_data_table().get_rowkey_column_num();
|
||||
lib::ObMallocHookAttrGuard malloc_guard(lib::ObMemAttr(MTL_ID(), "S2Adapter"));
|
||||
|
||||
if (OB_FAIL(ObGeoTypeUtil::get_srid_from_wkb(wkb_str, srid))) {
|
||||
LOG_WARN("failed to get srid", K(ret), K(wkb_str));
|
||||
|
||||
@ -8825,6 +8825,7 @@ int ObQueryRange::get_geo_intersects_keypart(uint32_t input_srid,
|
||||
}
|
||||
|
||||
if (OB_SUCC(ret)) {
|
||||
lib::ObMallocHookAttrGuard malloc_guard(lib::ObMemAttr(MTL_ID(), "S2Adapter"));
|
||||
// build s2 object from wkb
|
||||
if (OB_FAIL(ObGeoTypeUtil::get_type_from_wkb((buffer_geo.empty() ? wkb_str : buffer_geo), geo_type))) {
|
||||
LOG_WARN("fail to get geo type by wkb", K(ret));
|
||||
@ -8944,6 +8945,7 @@ int ObQueryRange::get_geo_coveredby_keypart(uint32_t input_srid,
|
||||
}
|
||||
|
||||
if (OB_SUCC(ret)) {
|
||||
lib::ObMallocHookAttrGuard malloc_guard(lib::ObMemAttr(MTL_ID(), "S2Adapter"));
|
||||
// build s2 object from wkb
|
||||
if (OB_FAIL(s2object->init((buffer_geo.empty() ? wkb_str : buffer_geo), srs_bound))) {
|
||||
LOG_WARN("Init s2object failed", K(ret));
|
||||
|
||||
Reference in New Issue
Block a user