Re: postgres_fdw: commit remote (sub)transactions in parallel during pre-commit

Etsuro Fujita <etsuro.fujita@gmail.com>

From: Etsuro Fujita <etsuro.fujita@gmail.com>
To: Fujii Masao <masao.fujii@oss.nttdata.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-01-06T08:29:23Z
Lists: pgsql-hackers

Attachments

On Fri, Dec 3, 2021 at 6:07 PM Fujii Masao <masao.fujii@oss.nttdata.com> wrote:
> On 2021/11/16 18:55, Etsuro Fujita wrote:
> > I changed my mind; I’ll update the patch to ignore the error as
> > before, because 1) as far as I know, there are no reports from the
> > field concerning that we ignore all kinds of errors in cleaning up the
> > prepared statements, so maybe we don’t need to change that, and 2) we
> > already committed at least one of the remote transactions, so it’s not
> > good to abort the local transaction unless we really have to.

Done.

> Are you planning to update the patch? In addition to this change,
> at least documentation about new parallel_commit parameter needs
> to be included in the patch.

Done.  Attached is a new version.

* 0001
This is an updated version of the previous patch.  In addition to the
above, I expanded a comment in do_sql_command_end() a bit to explain
why we do PQconsumeInput() before doing pgfdw_get_result(), to address
your comment.  Also, I moved the code to finish closing pending
(sub)transactions in pgfdw_xact_callback()(pgfdw_subxact_callback())
into separate functions.  Also, I modified regression test cases a bit
to access multiple foreign servers.

* 0002
This is a WIP patch for parallel abort.  I added an option
parallel_abort for this, because I thought it would be good to
enable/disable these separately.  I didn’t do any performance tests
yet.

Sorry for the long delay.

Best regards,
Etsuro Fujita

Commits

  1. postgres_fdw: Add support for parallel abort.

  2. Refine the definition of page-level freezing.

  3. postgres_fdw: Update comments in make_new_connection().

  4. postgres_fdw: Minor cleanup for pgfdw_abort_cleanup().

  5. postgres_fdw: Add support for parallel commit.

  6. Fix ruleutils.c's dumping of whole-row Vars in more contexts.

  7. postgres_fdw: Refactor transaction rollback code to avoid code duplication.