diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index a938c98190ee3a27cadaa3e21e994aa11509240b..3a40e8bffc54a1ffb221582c74dd2fe4a5268dab 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -58,11 +58,13 @@ AlterTableCreateToastTable(Oid relOid, Datum reloptions)
 	Relation	rel;
 
 	/*
-	 * Grab a DDL-exclusive lock on the target table, since we'll update the
-	 * pg_class tuple.	This is redundant for all present users.  Tuple
-	 * toasting behaves safely in the face of a concurrent TOAST table add.
+	 * Grab an exclusive lock on the target table, since we'll update its
+	 * pg_class tuple. This is redundant for all present uses, since caller
+	 * will have such a lock already.  But the lock is needed to ensure that
+	 * concurrent readers of the pg_class tuple won't have visibility issues,
+	 * so let's be safe.
 	 */
-	rel = heap_open(relOid, ShareUpdateExclusiveLock);
+	rel = heap_open(relOid, AccessExclusiveLock);
 
 	/* create_toast_table does all the work */
 	(void) create_toast_table(rel, InvalidOid, InvalidOid, reloptions);
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 9fb9754848568f9d76635e6337778184187a0793..a6e7268aa78e8204acbe69b5642fc09fca8b4367 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -1038,7 +1038,7 @@ DropTrigger(RangeVar *relation, const char *trigname, DropBehavior behavior,
 	ObjectAddress object;
 
 	/* lock level should match RemoveTriggerById */
-	relid = RangeVarGetRelid(relation, ShareRowExclusiveLock, false, false);
+	relid = RangeVarGetRelid(relation, AccessExclusiveLock, false, false);
 
 	object.classId = TriggerRelationId;
 	object.objectId = get_trigger_oid(relid, trigname, missing_ok);
diff --git a/src/backend/rewrite/rewriteRemove.c b/src/backend/rewrite/rewriteRemove.c
index 917bb4649335c00e70a8a91f9397b14698336caa..b9b693cee1d6773991bf01325c5e556f44f602b7 100644
--- a/src/backend/rewrite/rewriteRemove.c
+++ b/src/backend/rewrite/rewriteRemove.c
@@ -45,8 +45,8 @@ RemoveRewriteRule(RangeVar *relation, const char *ruleName,
 	Oid			owningRel;
 	ObjectAddress object;
 
-	/* should match RemoveRewriteRuleById */
-	owningRel = RangeVarGetRelid(relation, ShareUpdateExclusiveLock,
+	/* lock level should match RemoveRewriteRuleById */
+	owningRel = RangeVarGetRelid(relation, AccessExclusiveLock,
 								 false, false);
 
 	/*