OSDN Git Service

Get rid of the separate RULE privilege for tables: now only a table's owner
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 5 Sep 2006 21:08:36 +0000 (21:08 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 5 Sep 2006 21:08:36 +0000 (21:08 +0000)
commit7bae5a289c8fbe33aceb56f04e273eee2c1e7c39
tree6a682bb192d1966cc86ece22d51963fb86951f5d
parentd5eb52a511bda6a975cc59ec69dca1da38675bf4
Get rid of the separate RULE privilege for tables: now only a table's owner
can create or modify rules for the table.  Do setRuleCheckAsUser() while
loading rules into the relcache, rather than when defining a rule.  This
ensures that permission checks for tables referenced in a rule are done with
respect to the current owner of the rule's table, whereas formerly ALTER TABLE
OWNER would fail to update the permission checking for associated rules.
Removal of separate RULE privilege is needed to prevent various scenarios
in which a grantee of RULE privilege could effectively have any privilege
of the table owner.  For backwards compatibility, GRANT/REVOKE RULE is still
accepted, but it doesn't do anything.  Per discussion here:
http://archives.postgresql.org/pgsql-hackers/2006-04/msg01138.php
21 files changed:
doc/src/sgml/ddl.sgml
doc/src/sgml/func.sgml
doc/src/sgml/information_schema.sgml
doc/src/sgml/ref/create_rule.sgml
doc/src/sgml/ref/grant.sgml
doc/src/sgml/ref/revoke.sgml
doc/src/sgml/user-manag.sgml
src/backend/catalog/aclchk.c
src/backend/catalog/information_schema.sql
src/backend/commands/comment.c
src/backend/rewrite/rewriteDefine.c
src/backend/rewrite/rewriteRemove.c
src/backend/utils/adt/acl.c
src/backend/utils/cache/relcache.c
src/include/catalog/catversion.h
src/include/nodes/parsenodes.h
src/include/rewrite/rewriteDefine.h
src/include/utils/acl.h
src/test/regress/expected/dependency.out
src/test/regress/expected/privileges.out
src/test/regress/sql/privileges.sql