Thread: [PATCH] Allow transaction to partition table using FDW

[PATCH] Allow transaction to partition table using FDW

From
mitani
Date:
Hi,

I would like to use transactions with partitioning table using FDW, but transactions can not be used with the following
error.
 'ERROR:  could not serialize access due to concurrent update

So, I tried to write a very simple patch.
This patch works for my purpose, but I do not know if it matches general usage.
I'd like to improve this feature which can be used generally, so please check it.

Please find attached file.

Regards,

-- 
mitani <mitani@sraw.co.jp>

Attachment

Re: [PATCH] Allow transaction to partition table using FDW

From
mitani
Date:
Hi there,

I modified my patch in response to Ishii-san's pointed out.
I always set 'COMMITTED READ' to SQL in 'begin_remote_xact()', but changed to set it only when 'XactIsoLevel' ==
'XACT_READ_COMMITTED'.

I tested transaction query to partition tables on remote servers as follows,
(sent BEGIN - UPDATE - COMMIT query in two sessions)

                           target record on the same server          target record on a different server
--------------------------------------------------------------------------------------------------------
target table is same          (wait)                                    (wait)
target table is defferent     (no wait)                                 (no wait)

(wait): Session 2 is kept waiting until session 1 commits
(no wait): Session 2 can be committed before session 1 commits

I do not understand FDW's design philosophy, so please let me know if there is a problem with my patch.

The target version of PostgreSQL is 11.2, and target file of this patch is 'contrib/postgresql/connection.c'.

Regards,
-- 
mitani <mitani@sraw.co.jp>

Attachment