pgsql: Use appropriate command type when retrieving relation's policies

From: Joe Conway <mail(at)joeconway(dot)com>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Use appropriate command type when retrieving relation's policies
Date: 2015-07-30 16:39:09
Message-ID: E1ZKqrN-0006pJ-2q@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Use appropriate command type when retrieving relation's policies.

When retrieving policies, if not working on the root target relation,
we actually want the relation's SELECT policies, regardless of
the top level query command type. For example in UPDATE t1...FROM t2
we need to apply t1's UPDATE policies and t2's SELECT policies.
Previously top level query command type was applied to all relations,
which was wrong. Add some regression coverage to ensure we don't
violate this principle in the future.

Report and patch by Dean Rasheed. Cherry picked from larger refactoring
patch and tweaked by me. Back-patched to 9.5 where RLS was introduced.

Branch
------
REL9_5_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/23b5e726da6ef5ebbc1dbc821320ee35fa1d0737

Modified Files
--------------
src/backend/rewrite/rowsecurity.c | 12 ++++-
src/test/regress/expected/rowsecurity.out | 83 +++++++++++++++++++++++++++++
src/test/regress/sql/rowsecurity.sql | 40 ++++++++++++++
3 files changed, 134 insertions(+), 1 deletion(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Joe Conway 2015-07-30 16:40:53 Re: [COMMITTERS] pgsql: Row-Level Security Policies (RLS)
Previous Message Joe Conway 2015-07-30 16:39:06 pgsql: Use appropriate command type when retrieving relation's policies