summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2022-04-19 23:03:59 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2022-04-19 23:03:59 -0400
commit08a9e7a8c7917233926802aaea94a5529a747a50 (patch)
treee33ed8aef40886b6603f2c56edc92c3a394c7c14
parent7a8d8219ccbf0963f2171ea23e1616ee6a7823ba (diff)
downloadpostgresql-08a9e7a8c7917233926802aaea94a5529a747a50.tar.gz
Fix breakage in AlterFunction().
An ALTER FUNCTION command that tried to update both the function's proparallel property and its proconfig list failed to do the former, because it stored the new proparallel value into a tuple that was no longer the interesting one. Carelessness in 7aea8e4f2. (I did not bother with a regression test, because the only likely future breakage would be for someone to ignore the comment I added and add some other field update after the heap_modify_tuple step. A test using existing function properties could not catch that.) Per report from Bryn Llewellyn. Back-patch to all supported branches. Discussion: https://postgr.es/m/8AC9A37F-99BD-446F-A2F7-B89AD0022774@yugabyte.com
-rw-r--r--src/backend/commands/functioncmds.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index a997cb6264..016cdf20fb 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -1489,6 +1489,8 @@ AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt)
procForm->prosupport = newsupport;
}
+ if (parallel_item)
+ procForm->proparallel = interpret_func_parallel(parallel_item);
if (set_items)
{
Datum datum;
@@ -1523,8 +1525,7 @@ AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt)
tup = heap_modify_tuple(tup, RelationGetDescr(rel),
repl_val, repl_null, repl_repl);
}
- if (parallel_item)
- procForm->proparallel = interpret_func_parallel(parallel_item);
+ /* DO NOT put more touches of procForm below here; it's now dangling. */
/* Do the update */
CatalogTupleUpdate(rel, &tup->t_self, tup);