]> granicus.if.org Git - postgresql/commit
Fix RLS with COPY (col1, col2) FROM tab
authorStephen Frost <sfrost@snowman.net>
Mon, 3 Oct 2016 20:23:12 +0000 (16:23 -0400)
committerStephen Frost <sfrost@snowman.net>
Mon, 3 Oct 2016 20:23:12 +0000 (16:23 -0400)
commit647a86e374d2eb01d8cdda2fc759a770b38cc232
treeabea3cb2f0237f61ef2a8a48d3dba1afb2bc7060
parent0f259bd178f64b8e351a62d5479e3565e84b956e
Fix RLS with COPY (col1, col2) FROM tab

Attempting to COPY a subset of columns from a table with RLS enabled
would fail due to an invalid query being constructed (using a single
ColumnRef with the list of fields to exact in 'fields', but that's for
the different levels of an indirection for a single column, not for
specifying multiple columns).

Correct by building a ColumnRef and then RestTarget for each column
being requested and then adding those to the targetList for the select
query.  Include regression tests to hopefully catch if this is broken
again in the future.

Patch-By: Adam Brightwell
Reviewed-By: Michael Paquier
src/backend/commands/copy.c
src/test/regress/expected/copy2.out
src/test/regress/sql/copy2.sql