aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/catalog/index.c8
-rw-r--r--src/backend/commands/async.c9
-rw-r--r--src/backend/commands/copy.c4
-rw-r--r--src/backend/commands/event_trigger.c10
-rw-r--r--src/backend/commands/extension.c6
-rw-r--r--src/backend/commands/subscriptioncmds.c13
-rw-r--r--src/backend/commands/trigger.c4
-rw-r--r--src/backend/commands/vacuum.c6
-rw-r--r--src/backend/libpq/be-fsstubs.c4
-rw-r--r--src/backend/tcop/utility.c10
-rw-r--r--src/backend/utils/adt/xml.c20
11 files changed, 18 insertions, 76 deletions
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index f6c31ccd766..7c34509696d 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -3449,14 +3449,12 @@ reindex_index(Oid indexId, bool skip_constraint_checks, char persistence,
/* Note: we do not need to re-establish pkey setting */
index_build(heapRelation, iRel, indexInfo, true, true);
}
- PG_CATCH();
+ PG_FINALLY();
{
/* Make sure flag gets cleared on error exit */
ResetReindexProcessing();
- PG_RE_THROW();
}
PG_END_TRY();
- ResetReindexProcessing();
/*
* If the index is marked invalid/not-ready/dead (ie, it's from a failed
@@ -3676,14 +3674,12 @@ reindex_relation(Oid relid, int flags, int options)
i++;
}
}
- PG_CATCH();
+ PG_FINALLY();
{
/* Make sure list gets cleared on error exit */
ResetReindexPending();
- PG_RE_THROW();
}
PG_END_TRY();
- ResetReindexPending();
/*
* Close rel, but continue to hold the lock.
diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c
index d0649d2e3ef..a3209d076b3 100644
--- a/src/backend/commands/async.c
+++ b/src/backend/commands/async.c
@@ -2028,22 +2028,15 @@ asyncQueueReadAllNotifications(void)
snapshot);
} while (!reachedStop);
}
- PG_CATCH();
+ PG_FINALLY();
{
/* Update shared state */
LWLockAcquire(AsyncQueueLock, LW_SHARED);
QUEUE_BACKEND_POS(MyBackendId) = pos;
LWLockRelease(AsyncQueueLock);
-
- PG_RE_THROW();
}
PG_END_TRY();
- /* Update shared state */
- LWLockAcquire(AsyncQueueLock, LW_SHARED);
- QUEUE_BACKEND_POS(MyBackendId) = pos;
- LWLockRelease(AsyncQueueLock);
-
/* Done with snapshot */
UnregisterSnapshot(snapshot);
}
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index 3aeef30b281..e17d8c760f7 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -1916,13 +1916,11 @@ BeginCopyTo(ParseState *pstate,
{
cstate->copy_file = AllocateFile(cstate->filename, PG_BINARY_W);
}
- PG_CATCH();
+ PG_FINALLY();
{
umask(oumask);
- PG_RE_THROW();
}
PG_END_TRY();
- umask(oumask);
if (cstate->copy_file == NULL)
{
/* copy errno because ereport subfunctions might change it */
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index f7ee9838f7f..0301ae1ddd9 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -934,13 +934,11 @@ EventTriggerSQLDrop(Node *parsetree)
{
EventTriggerInvoke(runlist, &trigdata);
}
- PG_CATCH();
+ PG_FINALLY();
{
currentEventTriggerState->in_sql_drop = false;
- PG_RE_THROW();
}
PG_END_TRY();
- currentEventTriggerState->in_sql_drop = false;
/* Cleanup. */
list_free(runlist);
@@ -1007,17 +1005,13 @@ EventTriggerTableRewrite(Node *parsetree, Oid tableOid, int reason)
{
EventTriggerInvoke(runlist, &trigdata);
}
- PG_CATCH();
+ PG_FINALLY();
{
currentEventTriggerState->table_rewrite_oid = InvalidOid;
currentEventTriggerState->table_rewrite_reason = 0;
- PG_RE_THROW();
}
PG_END_TRY();
- currentEventTriggerState->table_rewrite_oid = InvalidOid;
- currentEventTriggerState->table_rewrite_reason = 0;
-
/* Cleanup. */
list_free(runlist);
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index f7202cc9e7d..a04b0c9e579 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -942,17 +942,13 @@ execute_extension_script(Oid extensionOid, ExtensionControlFile *control,
execute_sql_string(c_sql);
}
- PG_CATCH();
+ PG_FINALLY();
{
creating_extension = false;
CurrentExtensionObject = InvalidOid;
- PG_RE_THROW();
}
PG_END_TRY();
- creating_extension = false;
- CurrentExtensionObject = InvalidOid;
-
/*
* Restore the GUC variables we set above.
*/
diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c
index 2e67a5889e5..14191957665 100644
--- a/src/backend/commands/subscriptioncmds.c
+++ b/src/backend/commands/subscriptioncmds.c
@@ -493,16 +493,11 @@ CreateSubscription(CreateSubscriptionStmt *stmt, bool isTopLevel)
slotname)));
}
}
- PG_CATCH();
+ PG_FINALLY();
{
- /* Close the connection in case of failure. */
walrcv_disconnect(wrconn);
- PG_RE_THROW();
}
PG_END_TRY();
-
- /* And we are done with the remote side. */
- walrcv_disconnect(wrconn);
}
else
ereport(WARNING,
@@ -1023,16 +1018,12 @@ DropSubscription(DropSubscriptionStmt *stmt, bool isTopLevel)
walrcv_clear_result(res);
}
- PG_CATCH();
+ PG_FINALLY();
{
- /* Close the connection in case of failure */
walrcv_disconnect(wrconn);
- PG_RE_THROW();
}
PG_END_TRY();
- walrcv_disconnect(wrconn);
-
pfree(cmd.data);
table_close(rel, NoLock);
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 7ba859d446d..0b84de59437 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -2431,13 +2431,11 @@ ExecCallTriggerFunc(TriggerData *trigdata,
{
result = FunctionCallInvoke(fcinfo);
}
- PG_CATCH();
+ PG_FINALLY();
{
MyTriggerDepth--;
- PG_RE_THROW();
}
PG_END_TRY();
- MyTriggerDepth--;
pgstat_end_function_usage(&fcusage, true);
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index 4b67b40b285..da1da234000 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -430,17 +430,13 @@ vacuum(List *relations, VacuumParams *params,
}
}
}
- PG_CATCH();
+ PG_FINALLY();
{
in_vacuum = false;
VacuumCostActive = false;
- PG_RE_THROW();
}
PG_END_TRY();
- in_vacuum = false;
- VacuumCostActive = false;
-
/*
* Finish up processing.
*/
diff --git a/src/backend/libpq/be-fsstubs.c b/src/backend/libpq/be-fsstubs.c
index b0ece7ec257..1ee96c0b9fc 100644
--- a/src/backend/libpq/be-fsstubs.c
+++ b/src/backend/libpq/be-fsstubs.c
@@ -503,13 +503,11 @@ be_lo_export(PG_FUNCTION_ARGS)
fd = OpenTransientFilePerm(fnamebuf, O_CREAT | O_WRONLY | O_TRUNC | PG_BINARY,
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
}
- PG_CATCH();
+ PG_FINALLY();
{
umask(oumask);
- PG_RE_THROW();
}
PG_END_TRY();
- umask(oumask);
if (fd < 0)
ereport(ERROR,
(errcode_for_file_access(),
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index c6faa6619d2..f2269ad35ca 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -1514,13 +1514,11 @@ ProcessUtilitySlow(ParseState *pstate,
address = ExecRefreshMatView((RefreshMatViewStmt *) parsetree,
queryString, params, completionTag);
}
- PG_CATCH();
+ PG_FINALLY();
{
EventTriggerUndoInhibitCommandCollection();
- PG_RE_THROW();
}
PG_END_TRY();
- EventTriggerUndoInhibitCommandCollection();
break;
case T_CreateTrigStmt:
@@ -1716,16 +1714,12 @@ ProcessUtilitySlow(ParseState *pstate,
EventTriggerDDLCommandEnd(parsetree);
}
}
- PG_CATCH();
+ PG_FINALLY();
{
if (needCleanup)
EventTriggerEndCompleteQuery();
- PG_RE_THROW();
}
PG_END_TRY();
-
- if (needCleanup)
- EventTriggerEndCompleteQuery();
}
/*
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index 0280c2625c6..c397461ad5d 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -1193,13 +1193,11 @@ xml_pstrdup_and_free(xmlChar *str)
{
result = pstrdup((char *) str);
}
- PG_CATCH();
+ PG_FINALLY();
{
xmlFree(str);
- PG_RE_THROW();
}
PG_END_TRY();
- xmlFree(str);
}
else
result = NULL;
@@ -3866,19 +3864,14 @@ xml_xmlnodetoxmltype(xmlNodePtr cur, PgXmlErrorContext *xmlerrcxt)
result = xmlBuffer_to_xmltype(buf);
}
- PG_CATCH();
+ PG_FINALLY()
{
if (nodefree)
nodefree(cur_copy);
if (buf)
xmlBufferFree(buf);
- PG_RE_THROW();
}
PG_END_TRY();
-
- if (nodefree)
- nodefree(cur_copy);
- xmlBufferFree(buf);
}
else
{
@@ -3893,13 +3886,11 @@ xml_xmlnodetoxmltype(xmlNodePtr cur, PgXmlErrorContext *xmlerrcxt)
result = (xmltype *) cstring_to_text(escaped);
pfree(escaped);
}
- PG_CATCH();
+ PG_FINALLY();
{
xmlFree(str);
- PG_RE_THROW();
}
PG_END_TRY();
- xmlFree(str);
}
return result;
@@ -4734,16 +4725,13 @@ XmlTableGetValue(TableFuncScanState *state, int colnum,
state->typioparams[colnum],
typmod);
}
- PG_CATCH();
+ PG_FINALLY();
{
if (xpathobj != NULL)
xmlXPathFreeObject(xpathobj);
- PG_RE_THROW();
}
PG_END_TRY();
- xmlXPathFreeObject(xpathobj);
-
return result;
#else
NO_XML_SUPPORT();