On Fri, Jan 30, 2015 at 5:20 AM, Etsuro Fujita <fujita.ets...@lab.ntt.co.jp> wrote: > I noticed that when updating security barrier views on foreign tables, > we fail to give FOR UPDATE to selection queries issued at ForeignScan. > Here is an example. > > postgres=# create foreign table base_ftbl (person text, visibility text) > server loopback options (table_name 'base_tbl'); > CREATE FOREIGN TABLE > postgres=# create view rw_view as select person from base_ftbl where > visibility = 'public'; > CREATE VIEW > postgres=# explain verbose delete from rw_view; > QUERY PLAN > ------------------------------------------------------------------------------------------------------- > Delete on public.base_ftbl (cost=100.00..144.40 rows=14 width=6) > Remote SQL: DELETE FROM public.base_tbl WHERE ctid = $1 > -> Foreign Scan on public.base_ftbl (cost=100.00..144.40 rows=14 > width=6) > Output: base_ftbl.ctid > Remote SQL: SELECT ctid FROM public.base_tbl WHERE ((visibility > = 'public'::text)) FOR UPDATE > (5 rows) > > postgres=# alter view rw_view set (security_barrier = true); > ALTER VIEW > postgres=# explain verbose delete from rw_view; > QUERY PLAN > -------------------------------------------------------------------------------------------------- > Delete on public.base_ftbl base_ftbl_1 (cost=100.00..144.54 rows=14 > width=6) > Remote SQL: DELETE FROM public.base_tbl WHERE ctid = $1 > -> Subquery Scan on base_ftbl (cost=100.00..144.54 rows=14 width=6) > Output: base_ftbl.ctid > -> Foreign Scan on public.base_ftbl base_ftbl_2 > (cost=100.00..144.40 rows=14 width=6) > Output: base_ftbl_2.ctid > Remote SQL: SELECT ctid FROM public.base_tbl WHERE > ((visibility = 'public'::text)) > (7 rows) > > Correct me if I am wrong.
That looks like a bug to me. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers