From 94da2a6a9a05776953524424a3d8079e54bc5d94 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Tue, 13 Jun 2017 14:58:17 -0400 Subject: Use RangeVarGetRelidExtended() in AlterSequence() This allows us to combine the opening and the ownership check. Reported-by: Robert Haas --- src/backend/commands/sequence.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'src/backend/commands/sequence.c') diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 2d820e5cebc..031bbc874de 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -429,10 +429,13 @@ AlterSequence(ParseState *pstate, AlterSeqStmt *stmt) HeapTuple seqtuple; HeapTuple newdatatuple; - /* Open and lock sequence. */ - relid = RangeVarGetRelid(stmt->sequence, - ShareRowExclusiveLock, - stmt->missing_ok); + /* Open and lock sequence, and check for ownership along the way. */ + relid = RangeVarGetRelidExtended(stmt->sequence, + ShareRowExclusiveLock, + stmt->missing_ok, + false, + RangeVarCallbackOwnsRelation, + NULL); if (relid == InvalidOid) { ereport(NOTICE, @@ -443,11 +446,6 @@ AlterSequence(ParseState *pstate, AlterSeqStmt *stmt) init_sequence(relid, &elm, &seqrel); - /* allow ALTER to sequence owner only */ - if (!pg_class_ownercheck(relid, GetUserId())) - aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS, - stmt->sequence->relname); - rel = heap_open(SequenceRelationId, RowExclusiveLock); seqtuple = SearchSysCacheCopy1(SEQRELID, ObjectIdGetDatum(relid)); -- cgit v1.2.3