diff options
Diffstat (limited to 'src/backend/commands/tablecmds.c')
-rw-r--r-- | src/backend/commands/tablecmds.c | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index cc210f06d30..cb8ac67812a 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -2310,9 +2310,18 @@ renameatt(RenameStmt *stmt) /* lock level taken here should match renameatt_internal */ relid = RangeVarGetRelidExtended(stmt->relation, AccessExclusiveLock, - false, false, + stmt->missing_ok, false, RangeVarCallbackForRenameAttribute, NULL); + + if (!OidIsValid(relid)) + { + ereport(NOTICE, + (errmsg("relation \"%s\" does not exist, skipping", + stmt->relation->relname))); + return; + } + renameatt_internal(relid, stmt->subname, /* old att name */ stmt->newname, /* new att name */ @@ -2338,10 +2347,18 @@ RenameRelation(RenameStmt *stmt) * lock escalation. */ relid = RangeVarGetRelidExtended(stmt->relation, AccessExclusiveLock, - false, false, + stmt->missing_ok, false, RangeVarCallbackForAlterRelation, (void *) stmt); + if (!OidIsValid(relid)) + { + ereport(NOTICE, + (errmsg("relation \"%s\" does not exist, skipping", + stmt->relation->relname))); + return; + } + /* Do the work */ RenameRelationInternal(relid, stmt->newname); } @@ -2482,7 +2499,7 @@ CheckTableNotInUse(Relation rel, const char *stmt) Oid AlterTableLookupRelation(AlterTableStmt *stmt, LOCKMODE lockmode) { - return RangeVarGetRelidExtended(stmt->relation, lockmode, false, false, + return RangeVarGetRelidExtended(stmt->relation, lockmode, stmt->missing_ok, false, RangeVarCallbackForAlterRelation, (void *) stmt); } @@ -9434,9 +9451,18 @@ AlterTableNamespace(AlterObjectSchemaStmt *stmt) RangeVar *newrv; relid = RangeVarGetRelidExtended(stmt->relation, AccessExclusiveLock, - false, false, + stmt->missing_ok, false, RangeVarCallbackForAlterRelation, (void *) stmt); + + if (!OidIsValid(relid)) + { + ereport(NOTICE, + (errmsg("relation \"%s\" does not exist, skipping", + stmt->relation->relname))); + return; + } + rel = relation_open(relid, NoLock); oldNspOid = RelationGetNamespace(rel); |