I tried reproducing the issue with the steps summarised.
Here's my setup postgres=# \d ft Foreign table "public.ft" Column | Type | Modifiers | FDW Options --------+---------+-----------+------------- a | integer | | Server: loopback FDW Options: (table_name 'lbt')
postgres=# \d lbt Table "public.lbt" Column | Type | Modifiers --------+---------+----------- a | integer |
The select (without for update) returns me two rows (one inserted in lbt and one in ft), whereas in your description there is only one row. For me, I am getting following error postgres=# select ft.tableoid, ft.ctid, ft.* from lbt, ft where lbt.a = ft.a for update; ERROR: could not serialize access due to concurrent update CONTEXT: Remote SQL command: SELECT a, ctid FROM public.lbt FOR UPDATE postgres=#
after commit on terminal 1.
Am I missing something?
--
Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company