diff options
author | Stephen Frost <sfrost@snowman.net> | 2015-09-15 15:49:40 -0400 |
---|---|---|
committer | Stephen Frost <sfrost@snowman.net> | 2015-09-15 15:49:40 -0400 |
commit | 23a4b897f731e1a2be7fe989a34016d7a6287148 (patch) | |
tree | 0fadf580ab43634f6e9498dd54687e860eb01fa4 /src/backend/nodes | |
parent | ed301d6dbe32eaad4f226903d430336e5a0d72aa (diff) | |
download | postgresql-23a4b897f731e1a2be7fe989a34016d7a6287148.tar.gz postgresql-23a4b897f731e1a2be7fe989a34016d7a6287148.zip |
RLS refactoring
This refactors rewrite/rowsecurity.c to simplify the handling of the
default deny case (reducing the number of places where we check for and
add the default deny policy from three to one) by splitting up the
retrival of the policies from the application of them.
This also allowed us to do away with the policy_id field. A policy_name
field was added for WithCheckOption policies and is used in error
reporting, when available.
Patch by Dean Rasheed, with various mostly cosmetic changes by me.
Back-patch to 9.5 where RLS was introduced to avoid unnecessary
differences, since we're still in alpha, per discussion with Robert.
Diffstat (limited to 'src/backend/nodes')
-rw-r--r-- | src/backend/nodes/copyfuncs.c | 1 | ||||
-rw-r--r-- | src/backend/nodes/equalfuncs.c | 1 | ||||
-rw-r--r-- | src/backend/nodes/outfuncs.c | 1 | ||||
-rw-r--r-- | src/backend/nodes/readfuncs.c | 1 |
4 files changed, 4 insertions, 0 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index 573afb4f2ae..37d88777562 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -2168,6 +2168,7 @@ _copyWithCheckOption(const WithCheckOption *from) COPY_SCALAR_FIELD(kind); COPY_STRING_FIELD(relname); + COPY_STRING_FIELD(polname); COPY_NODE_FIELD(qual); COPY_SCALAR_FIELD(cascaded); diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c index 2938add10d0..d91271a862e 100644 --- a/src/backend/nodes/equalfuncs.c +++ b/src/backend/nodes/equalfuncs.c @@ -2445,6 +2445,7 @@ _equalWithCheckOption(const WithCheckOption *a, const WithCheckOption *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_STRING_FIELD(relname); + COMPARE_STRING_FIELD(polname); COMPARE_NODE_FIELD(qual); COMPARE_SCALAR_FIELD(cascaded); diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index 76091834e70..45e3effd4c9 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -2402,6 +2402,7 @@ _outWithCheckOption(StringInfo str, const WithCheckOption *node) WRITE_ENUM_FIELD(kind, WCOKind); WRITE_STRING_FIELD(relname); + WRITE_STRING_FIELD(polname); WRITE_NODE_FIELD(qual); WRITE_BOOL_FIELD(cascaded); } diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index 23e0b36d111..df55b76c252 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -270,6 +270,7 @@ _readWithCheckOption(void) READ_ENUM_FIELD(kind, WCOKind); READ_STRING_FIELD(relname); + READ_STRING_FIELD(polname); READ_NODE_FIELD(qual); READ_BOOL_FIELD(cascaded); |