Skip to content

Commit dd7444c

Browse files
committed
Fix memory management for new variables -- they must actually survive
transaction end, in case we decide to do a vacuum analyze (which is done in two xacts).
1 parent 9ddfe03 commit dd7444c

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/backend/postmaster/autovacuum.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
*
5656
*
5757
* IDENTIFICATION
58-
* $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.64 2007/10/25 14:45:55 alvherre Exp $
58+
* $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.65 2007/10/25 19:13:37 alvherre Exp $
5959
*
6060
*-------------------------------------------------------------------------
6161
*/
@@ -2099,11 +2099,9 @@ do_autovacuum(void)
20992099

21002100
/*
21012101
* Save the relation name for a possible error message, to avoid a
2102-
* catalog lookup in case of an error. We do it in
2103-
* TopTransactionContext so that they go away automatically in the next
2104-
* iteration.
2102+
* catalog lookup in case of an error. Note: they must live in a
2103+
* long-lived memory context.
21052104
*/
2106-
MemoryContextSwitchTo(TopTransactionContext);
21072105
datname = get_database_name(MyDatabaseId);
21082106
nspname = get_namespace_name(get_rel_namespace(tab->at_relid));
21092107
relname = get_rel_name(tab->at_relid);
@@ -2116,6 +2114,7 @@ do_autovacuum(void)
21162114
PG_TRY();
21172115
{
21182116
/* have at it */
2117+
MemoryContextSwitchTo(TopTransactionContext);
21192118
autovacuum_do_vac_analyze(tab->at_relid,
21202119
tab->at_dovacuum,
21212120
tab->at_doanalyze,
@@ -2152,6 +2151,9 @@ do_autovacuum(void)
21522151

21532152
/* be tidy */
21542153
pfree(tab);
2154+
pfree(datname);
2155+
pfree(nspname);
2156+
pfree(relname);
21552157

21562158
/* remove my info from shared memory */
21572159
LWLockAcquire(AutovacuumLock, LW_EXCLUSIVE);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy