pgsql: Clean up some mess in row-security patches.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Clean up some mess in row-security patches.
Дата
Msg-id E1YF84F-0007J3-C8@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Clean up some mess in row-security patches.

Fix unsafe coding around PG_TRY in RelationBuildRowSecurity: can't change
a variable inside PG_TRY and then use it in PG_CATCH without marking it
"volatile".  In this case though it seems saner to avoid that by doing
a single assignment before entering the TRY block.

I started out just intending to fix that, but the more I looked at the
row-security code the more distressed I got.  This patch also fixes
incorrect construction of the RowSecurityPolicy cache entries (there was
not sufficient care taken to copy pass-by-ref data into the cache memory
context) and a whole bunch of sloppiness around the definition and use of
pg_policy.polcmd.  You can't use nulls in that column because initdb will
mark it NOT NULL --- and I see no particular reason why a null entry would
be a good idea anyway, so changing initdb's behavior is not the right
answer.  The internal value of '\0' wouldn't be suitable in a "char" column
either, so after a bit of thought I settled on using '*' to represent ALL.
Chasing those changes down also revealed that somebody wasn't paying
attention to what the underlying values of ACL_UPDATE_CHR etc really were,
and there was a great deal of lackadaiscalness in the catalogs.sgml
documentation for pg_policy and pg_policies too.

This doesn't pretend to be a complete code review for the row-security
stuff, it just fixes the things that were in my face while dealing with
the bugs in RelationBuildRowSecurity.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/fd496129d160950ed681c1150ea8f627b292c511

Modified Files
--------------
doc/src/sgml/catalogs.sgml           |  226 +++++++++++++++++-----------------
src/backend/catalog/system_views.sql |   13 +-
src/backend/commands/policy.c        |  155 ++++++++++++-----------
src/backend/rewrite/rowsecurity.c    |   19 ++-
src/backend/utils/cache/relcache.c   |    2 +-
src/bin/pg_dump/pg_dump.c            |   28 ++---
src/bin/psql/describe.c              |    7 +-
src/include/catalog/catversion.h     |    2 +-
src/include/catalog/pg_policy.h      |    4 +-
src/include/rewrite/rowsecurity.h    |    4 +-
src/test/regress/expected/rules.out  |   17 ++-
11 files changed, 241 insertions(+), 236 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix unsafe coding in ReorderBufferCommit().
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Clean up assorted issues in ALTER SYSTEM coding.