git.postgresql.org Git - postgresql.git/commit

git projects / postgresql.git / commit
? search:
summary | shortlog | log | commit | commitdiff | tree
(parent: 3f6f926) | patch
Code review for row security.
2014年9月24日 20:32:22 +0000 (16:32 -0400)
2014年9月24日 20:32:22 +0000 (16:32 -0400)
commit 6550b901fe7c47c03775400e0c790c6c1234a017
Code review for row security.

Buildfarm member tick identified an issue where the policies in the
relcache for a relation were were being replaced underneath a running
query, leading to segfaults while processing the policies to be added
to a query. Similar to how TupleDesc RuleLocks are handled, add in a
equalRSDesc() function to check if the policies have actually changed
and, if not, swap back the rsdesc field (using the original instead of
the temporairly built one; the whole structure is swapped and then
specific fields swapped back). This now passes a CLOBBER_CACHE_ALWAYS
for me and should resolve the buildfarm error.

In addition to addressing this, add a new chapter in Data Definition
under Privileges which explains row security and provides examples of
its usage, change \d to always list policies (even if row security is
disabled- but note that it is disabled, or enabled with no policies),
rework check_role_for_policy (it really didn't need the entire policy,
but it did need to be using has_privs_of_role()), and change the field
in pg_class to relrowsecurity from relhasrowsecurity, based on
Heikki's suggestion. Also from Heikki, only issue SET ROW_SECURITY in
pg_restore when talking to a 9.5+ server, list Bypass RLS in \du, and
document --enable-row-security options for pg_dump and pg_restore.

Lastly, fix a number of minor whitespace and typo issues from Heikki,
Dimitri, add a missing #include, per Peter E, fix a few minor
variable-assigned-but-not-used and resource leak issues from Coverity
and add tab completion for role attribute bypassrls as well.
24 files changed:
doc/src/sgml/catalogs.sgml diff | blob | blame | history
doc/src/sgml/config.sgml diff | blob | blame | history
doc/src/sgml/ddl.sgml diff | blob | blame | history
doc/src/sgml/ref/alter_table.sgml diff | blob | blame | history
doc/src/sgml/ref/create_policy.sgml diff | blob | blame | history
doc/src/sgml/ref/pg_dump.sgml diff | blob | blame | history
doc/src/sgml/ref/pg_restore.sgml diff | blob | blame | history
src/backend/catalog/heap.c diff | blob | blame | history
src/backend/catalog/system_views.sql diff | blob | blame | history
src/backend/commands/policy.c diff | blob | blame | history
src/backend/commands/tablecmds.c diff | blob | blame | history
src/backend/rewrite/rowsecurity.c diff | blob | blame | history
src/backend/utils/adt/ri_triggers.c diff | blob | blame | history
src/backend/utils/cache/relcache.c diff | blob | blame | history
src/bin/pg_dump/pg_backup_archiver.c diff | blob | blame | history
src/bin/pg_dump/pg_dump.c diff | blob | blame | history
src/bin/pg_dump/pg_dump.h diff | blob | blame | history
src/bin/pg_dump/pg_restore.c diff | blob | blame | history
src/bin/psql/describe.c diff | blob | blame | history
src/bin/psql/tab-complete.c diff | blob | blame | history
src/include/catalog/catversion.h diff | blob | blame | history
src/include/catalog/pg_class.h diff | blob | blame | history
src/include/commands/policy.h diff | blob | blame | history
src/test/regress/expected/rules.out diff | blob | blame | history
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /