static void ATRewriteTables(AlterTableStmt *parsetree,
                            List **wqueue, LOCKMODE lockmode,
                            AlterTableUtilityContext *context);
-static void ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap, LOCKMODE lockmode);
+static void ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap);
 static AlteredTableInfo *ATGetQueueEntry(List **wqueue, Relation rel);
 static void ATSimplePermissions(AlterTableType cmdtype, Relation rel, int allowed_targets);
 static void ATSimpleRecursion(List **wqueue, Relation rel,
             * modifications, and test the current data within the table
             * against new constraints generated by ALTER TABLE commands.
             */
-           ATRewriteTable(tab, OIDNewHeap, lockmode);
+           ATRewriteTable(tab, OIDNewHeap);
 
            /*
             * Swap the physical files of the old and new heaps, then rebuild
             */
            if (tab->constraints != NIL || tab->verify_new_notnull ||
                tab->partition_constraint != NULL)
-               ATRewriteTable(tab, InvalidOid, lockmode);
+               ATRewriteTable(tab, InvalidOid);
 
            /*
             * If we had SET TABLESPACE but no reason to reconstruct tuples,
 /*
  * ATRewriteTable: scan or rewrite one table
  *
- * OIDNewHeap is InvalidOid if we don't need to rewrite
+ * A rewrite is requested by passing a valid OIDNewHeap; in that case, caller
+ * must already hold AccessExclusiveLock on it.
  */
 static void
-ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap, LOCKMODE lockmode)
+ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap)
 {
    Relation    oldrel;
    Relation    newrel;
    newTupDesc = RelationGetDescr(oldrel);  /* includes all mods */
 
    if (OidIsValid(OIDNewHeap))
-       newrel = table_open(OIDNewHeap, lockmode);
+   {
+       Assert(CheckRelationOidLockedByMe(OIDNewHeap, AccessExclusiveLock,
+                                         false));
+       newrel = table_open(OIDNewHeap, NoLock);
+   }
    else
        newrel = NULL;