aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/catalog/objectaddress.c9
-rw-r--r--src/backend/commands/alter.c15
2 files changed, 11 insertions, 13 deletions
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 85a7b7e641a..7520a982151 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -896,7 +896,8 @@ static void getRelationIdentity(StringInfo buffer, Oid relid, List **object,
*
* If the object is a relation or a child object of a relation (e.g. an
* attribute or constraint), the relation is also opened and *relp receives
- * the open relcache entry pointer; otherwise, *relp is set to NULL. This
+ * the open relcache entry pointer; otherwise, *relp is set to NULL.
+ * (relp can be NULL if the caller never passes a relation-related object.) This
* is a bit grotty but it makes life simpler, since the caller will
* typically need the relcache entry too. Caller must close the relcache
* entry when done with it. The relation is locked with the specified lockmode
@@ -1204,8 +1205,12 @@ get_object_address(ObjectType objtype, Node *object,
old_address = address;
}
+ /* relp must be given if it's a relation */
+ Assert(!relation || relp);
+
/* Return the object address and the relation. */
- *relp = relation;
+ if (relp)
+ *relp = relation;
return address;
}
diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c
index 4f99ebb4470..a45f3bb6b83 100644
--- a/src/backend/commands/alter.c
+++ b/src/backend/commands/alter.c
@@ -421,13 +421,11 @@ ExecRenameStmt(RenameStmt *stmt)
{
ObjectAddress address;
Relation catalog;
- Relation relation;
address = get_object_address(stmt->renameType,
stmt->object,
- &relation,
+ NULL,
AccessExclusiveLock, false);
- Assert(relation == NULL);
catalog = table_open(address.classId, RowExclusiveLock);
AlterObjectRename_internal(catalog,
@@ -482,8 +480,7 @@ ExecAlterObjectDependsStmt(AlterObjectDependsStmt *stmt, ObjectAddress *refAddre
table_close(rel, NoLock);
refAddr = get_object_address(OBJECT_EXTENSION, (Node *) stmt->extname,
- &rel, AccessExclusiveLock, false);
- Assert(rel == NULL);
+ NULL, AccessExclusiveLock, false);
if (refAddress)
*refAddress = refAddr;
@@ -563,16 +560,14 @@ ExecAlterObjectSchemaStmt(AlterObjectSchemaStmt *stmt,
case OBJECT_TSTEMPLATE:
{
Relation catalog;
- Relation relation;
Oid classId;
Oid nspOid;
address = get_object_address(stmt->objectType,
stmt->object,
- &relation,
+ NULL,
AccessExclusiveLock,
false);
- Assert(relation == NULL);
classId = address.classId;
catalog = table_open(classId, RowExclusiveLock);
nspOid = LookupCreationNamespace(stmt->newschema);
@@ -876,15 +871,13 @@ ExecAlterOwnerStmt(AlterOwnerStmt *stmt)
case OBJECT_TSDICTIONARY:
case OBJECT_TSCONFIGURATION:
{
- Relation relation;
ObjectAddress address;
address = get_object_address(stmt->objectType,
stmt->object,
- &relation,
+ NULL,
AccessExclusiveLock,
false);
- Assert(relation == NULL);
AlterObjectOwner_internal(address.classId, address.objectId,
newowner);