From 90e7a6b7f68a7ba2642dbe513f394b46fa8aa418 Mon Sep 17 00:00:00 2001 From: openGaussDev Date: Fri, 4 Mar 2022 16:09:31 +0800 Subject: [PATCH] free stringinfo Offering: openGaussDev More detail: free stringinfo Match-id-195105d1af600164d70fa568cb3890550bf70e9f --- src/common/backend/catalog/dependency.cpp | 15 +++++++++++---- src/common/backend/catalog/namespace.cpp | 5 ++++- src/gausskernel/process/tcop/postgres.cpp | 1 + 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/common/backend/catalog/dependency.cpp b/src/common/backend/catalog/dependency.cpp index 4a73e2de5..1c21397fc 100644 --- a/src/common/backend/catalog/dependency.cpp +++ b/src/common/backend/catalog/dependency.cpp @@ -2509,6 +2509,8 @@ char* getObjectDescription(const ObjectAddress* object) initStringInfo(&buffer); + char* signature = NULL; + switch (getObjectClass(object)) { case OCLASS_CLASS: getRelationDescription(&buffer, object->objectId); @@ -2518,11 +2520,15 @@ char* getObjectDescription(const ObjectAddress* object) break; case OCLASS_PROC: - appendStringInfo(&buffer, _("function %s"), format_procedure(object->objectId)); + signature = format_procedure(object->objectId); + appendStringInfo(&buffer, _("function %s"), signature); + pfree_ext(signature); break; case OCLASS_PACKAGE: - appendStringInfo(&buffer, _("package %s"), format_procedure(object->objectId)); + signature = format_procedure(object->objectId); + appendStringInfo(&buffer, _("package %s"), signature); + pfree_ext(signature); break; case OCLASS_TYPE: @@ -2776,7 +2782,7 @@ char* getObjectDescription(const ObjectAddress* object) initStringInfo(&opfam); getOpFamilyDescription(&opfam, amprocForm->amprocfamily); - + signature = format_procedure(amprocForm->amproc); /* ------ translator: %d is the function number, the first two %s's are data type names, the third %s is the description of the @@ -2788,8 +2794,9 @@ char* getObjectDescription(const ObjectAddress* object) format_type_be(amprocForm->amproclefttype), format_type_be(amprocForm->amprocrighttype), opfam.data, - format_procedure(amprocForm->amproc)); + signature); + pfree_ext(signature); pfree_ext(opfam.data); systable_endscan(amscan); diff --git a/src/common/backend/catalog/namespace.cpp b/src/common/backend/catalog/namespace.cpp index 36a80a56b..814dfc062 100644 --- a/src/common/backend/catalog/namespace.cpp +++ b/src/common/backend/catalog/namespace.cpp @@ -285,6 +285,7 @@ Oid RangeVarGetRelidExtended(const RangeVar* relation, LOCKMODE lockmode, bool m (errcode(ERRCODE_INVALID_TABLE_DEFINITION), errmsg("temporary tables cannot specify a schema name"))); } + pfree_ext(errDetail); errDetail = get_relname_relid_extend( relation->relname, u_sess->catalog_cxt.myTempNamespace, &relId, isSupportSynonym, refSynOid); } @@ -293,6 +294,7 @@ Oid RangeVarGetRelidExtended(const RangeVar* relation, LOCKMODE lockmode, bool m /* use exact schema given */ namespaceId = LookupExplicitNamespace(relation->schemaname); + pfree_ext(errDetail); errDetail = get_relname_relid_extend(relation->relname, namespaceId, &relId, isSupportSynonym, refSynOid); if (OidIsValid(relId) && namespaceId == u_sess->catalog_cxt.myTempNamespace) @@ -300,6 +302,7 @@ Oid RangeVarGetRelidExtended(const RangeVar* relation, LOCKMODE lockmode, bool m } else { /* search the namespace path */ if (isSupportSynonym) { + pfree_ext(errDetail); errDetail = RelnameGetRelidExtended(relation->relname, &relId, refSynOid, detailInfo); } else { relId = RelnameGetRelid(relation->relname, detailInfo); @@ -419,8 +422,8 @@ Oid RangeVarGetRelidExtended(const RangeVar* relation, LOCKMODE lockmode, bool m /* Skipping report error, but store the error detail info and report later. */ appendStringInfo(detailInfo, _("%s"), errDetail); } - pfree_ext(errDetail); } + pfree_ext(errDetail); if (!OidIsValid(relId) && !missing_ok) { if (relation->schemaname) diff --git a/src/gausskernel/process/tcop/postgres.cpp b/src/gausskernel/process/tcop/postgres.cpp index 22d14f8b4..02774079c 100755 --- a/src/gausskernel/process/tcop/postgres.cpp +++ b/src/gausskernel/process/tcop/postgres.cpp @@ -7082,6 +7082,7 @@ void RemoveTempNamespace() u_sess->catalog_cxt.myTempToastNamespace = InvalidOid; } } + pfree_ext(str.data); } PG_CATCH(); {