postgres-github.git / summary / log / commit / refs

commit    de28140ded8d4ba00faf905ec3530ffeb8a34a53
Author:   Etsuro Fujita <efujita@postgresql.org>
Date:     Sun Apr 05 09:55:00 2026 +0000

    postgres_fdw: Inherit the local transaction's access/deferrable modes.
    
    READ ONLY transactions should prevent modifications to foreign data as
    well as local data, but postgres_fdw transactions declared as READ ONLY
    that reference foreign tables mapped to a remote view executing volatile
    functions would modify data on remote servers, as it would open remote
    transactions in READ WRITE mode.
    
    Similarly, DEFERRABLE transactions should not abort due to a
    serialization failure even when accessing foreign data, but postgres_fdw
    transactions declared as DEFERRABLE would abort due to that failure in a
    remote server, as it would open remote transactions in NOT DEFERRABLE
    mode.
    
    To fix, modify postgres_fdw to open remote transactions in the same
    access/deferrable modes as the local transaction.  This commit also
    modifies it to open remote subtransactions in the same access mode as
    the local subtransaction.
    
    This commit changes the behavior of READ ONLY/DEFERRABLE transactions
    using postgres_fdw; in particular, it doesn't allow the READ ONLY
    transactions to modify data on remote servers anymore, so such
    transactions should be redeclared as READ WRITE or rewritten using other
    tools like dblink.  The release notes should note this as an
    incompatibility.
    
    These issues exist since the introduction of postgres_fdw, but to avoid
    the incompatibility in the back branches, fix them in master only.
    
    Author: Etsuro Fujita <etsuro.fujita@gmail.com>
    Reviewed-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
    Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
    Reviewed-by: Fujii Masao <masao.fujii@gmail.com>
    Discussion: https://postgr.es/m/CAPmGK16n_hcUUWuOdmeUS%2Bw4Q6dZvTEDHb%3DOP%3D5JBzo-M3QmpQ%40mail.gmail.com
    Discussion: https://postgr.es/m/E1uLe9X-000zsY-2g%40gemulon.postgresql.org

[parent: fc44f106657a]