mirror of
https://github.com/postgres/postgres.git
synced 2025-08-21 10:42:50 +03:00
Use RangeVarGetRelidExtended() in AlterSequence()
This allows us to combine the opening and the ownership check. Reported-by: Robert Haas <robertmhaas@gmail.com>
This commit is contained in:
@@ -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));
|
||||
|
Reference in New Issue
Block a user