mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
ALTER TABLE .. FORCE ROW LEVEL SECURITY
To allow users to force RLS to always be applied, even for table owners, add ALTER TABLE .. FORCE ROW LEVEL SECURITY. row_security=off overrides FORCE ROW LEVEL SECURITY, to ensure pg_dump output is complete (by default). Also add SECURITY_NOFORCE_RLS context to avoid data corruption when ALTER TABLE .. FORCE ROW SECURITY is being used. The SECURITY_NOFORCE_RLS security context is used only during referential integrity checks and is only considered in check_enable_rls() after we have already checked that the current user is the owner of the relation (which should always be the case during referential integrity checks). Back-patch to 9.5 where RLS was added.
This commit is contained in:
@ -2353,6 +2353,20 @@ alter_table_cmd:
|
||||
n->subtype = AT_DisableRowSecurity;
|
||||
$$ = (Node *)n;
|
||||
}
|
||||
/* ALTER TABLE <name> FORCE ROW LEVEL SECURITY */
|
||||
| FORCE ROW LEVEL SECURITY
|
||||
{
|
||||
AlterTableCmd *n = makeNode(AlterTableCmd);
|
||||
n->subtype = AT_ForceRowSecurity;
|
||||
$$ = (Node *)n;
|
||||
}
|
||||
/* ALTER TABLE <name> NO FORCE ROW LEVEL SECURITY */
|
||||
| NO FORCE ROW LEVEL SECURITY
|
||||
{
|
||||
AlterTableCmd *n = makeNode(AlterTableCmd);
|
||||
n->subtype = AT_NoForceRowSecurity;
|
||||
$$ = (Node *)n;
|
||||
}
|
||||
| alter_generic_options
|
||||
{
|
||||
AlterTableCmd *n = makeNode(AlterTableCmd);
|
||||
|
Reference in New Issue
Block a user