mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Remove ALL keyword from TABLES IN SCHEMA for publication
This may be a bit too subtle, but removing that word from there makes this clause no longer a perfect parallel of the GRANT variant "ALL TABLES IN SCHEMA": indeed, for publications what we record is the schema itself, not the tables therein, which means that any tables added to the schema in the future are also published. This is completely different to what GRANT does, which is affect only the tables that exist when the command is executed. There isn't resounding support for this change, but there are a few positive votes and no opposition. Because the time to 15 RC1 is very short, let's get this out now. Backpatch to 15. Discussion: https://postgr.es/m/2729c9e2-9aac-8cda-f2f4-34f2bcc18f4e
This commit is contained in:
@ -847,11 +847,11 @@ CreatePublication(ParseState *pstate, CreatePublicationStmt *stmt)
|
||||
ObjectsInPublicationToOids(stmt->pubobjects, pstate, &relations,
|
||||
&schemaidlist);
|
||||
|
||||
/* FOR ALL TABLES IN SCHEMA requires superuser */
|
||||
if (list_length(schemaidlist) > 0 && !superuser())
|
||||
/* FOR TABLES IN SCHEMA requires superuser */
|
||||
if (schemaidlist != NIL && !superuser())
|
||||
ereport(ERROR,
|
||||
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
|
||||
errmsg("must be superuser to create FOR ALL TABLES IN SCHEMA publication"));
|
||||
errmsg("must be superuser to create FOR TABLES IN SCHEMA publication"));
|
||||
|
||||
if (list_length(relations) > 0)
|
||||
{
|
||||
@ -1979,7 +1979,7 @@ AlterPublicationOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
|
||||
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
|
||||
errmsg("permission denied to change owner of publication \"%s\"",
|
||||
NameStr(form->pubname)),
|
||||
errhint("The owner of a FOR ALL TABLES IN SCHEMA publication must be a superuser.")));
|
||||
errhint("The owner of a FOR TABLES IN SCHEMA publication must be a superuser.")));
|
||||
}
|
||||
|
||||
form->pubowner = newOwnerId;
|
||||
|
Reference in New Issue
Block a user