From 696c68c2be44d478403be5c76e6e8160fabdb083 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Mon, 17 Dec 2018 12:44:09 +0900 Subject: Fix use-after-free bug when renaming constraints This is an oversight from recent commit b13fd344. While on it, tweak the previous test with a better name for the renamed primary key. Detected by buildfarm member prion which forces relation cache release with -DRELCACHE_FORCE_RELEASE. Back-patch down to 9.4 as the previous commit. --- src/backend/commands/tablecmds.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/backend/commands/tablecmds.c') diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 8c2f650a88a..49a53816a65 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -2429,12 +2429,12 @@ rename_constraint_internal(Oid myrelid, if (targetrelation) { - relation_close(targetrelation, NoLock); /* close rel but keep lock */ - /* * Invalidate relcache so as others can see the new constraint name. */ CacheInvalidateRelcache(targetrelation); + + relation_close(targetrelation, NoLock); /* close rel but keep lock */ } return constraintOid; -- cgit v1.2.3