diff options
Diffstat (limited to 'src/backend/commands/sequence.c')
-rw-r--r-- | src/backend/commands/sequence.c | 16 |
1 files changed, 7 insertions, 9 deletions
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)); |