Ensure COPY TO on an RLS-enabled table copies no more than it should. The COPY documentation is quite clear that "COPY relation TO" copies rows from only the named table, not any inheritance children it may have. However, if you enabled row-level security on the table then this stopped being true, because the code forgot to apply the ONLY modifier in the "SELECT ... FROM relation" query that it constructs in order to allow RLS predicates to be attached. Fix that.
Report and patch by Antonin Houska (comment adjustments and test case by me). Back-patch to all supported branches. Discussion: https://postgr.es/m/3472.1675251957@antos Branch ------ REL_13_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/866fd004d9f94b87d453642c0c854d38884d3d3d Modified Files -------------- src/backend/commands/copy.c | 9 +++++--- src/test/regress/expected/rowsecurity.out | 37 +++++++++++++++++++++++++++++++ src/test/regress/sql/rowsecurity.sql | 34 ++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 3 deletions(-)