Feature compatibility
=====================

Server feature/commit scope interoperability
--------------------------------------------

Not all server features work with all commit scopes. This table shows
the ones that interoperate.

.. csv-table::
  :header: "",Async,Parallel Apply,Transaction Streaming,Single Decoding Worker
  :widths: 12,8,8,8,8
  :align: left
  :class: longtable

  Group Commit,Not applicable,Does not interoperate,Does not interoperate<sup>!</sup>,Interoperates
  CAMO,Not applicable,Interoperates,Does not interoperate,Does not interoperate
  Lag Control,Interoperates,Interoperates,Interoperates,Interoperates
  Synchronous Commit,Not applicable,Interoperates,Interoperates,Interoperates

Notes
^^^^^

Not applicable: The Async column in the table represents PGD without a
synchronous commit scope in use. Lag Control isn’t a synchronous commit
scope. It’s a controlling commit scope and is therefore available with
asynchronous operations.

!: Attempting to use Group Commit and Transaction Streaming presents a
warning. The warning suggests that you disable transaction streaming,
and the transaction appears to take place. In the background, Group
Commit was disabled to allow the transaction to occur.

Commit scope/commit scope interoperability
------------------------------------------

Although you can’t mix commit scopes, you can :ref:`combine rules <Commit scope rules>`  with an
``AND`` operator. This table shows where commit scopes can be combined.

.. csv-table::
  :header: "",Group Commit,CAMO,Lag Control,Synchronous Commit
  :widths: auto
  :align: left
  :class: longtable

  Group Commit,Not applicable,Does not combine,Combines,Combines
  CAMO,Does not combine,Not applicable,Combines,Does not combine
  Lag Control,Combines,Combines,Not applicable,Combines
  Synchronous Commit,Combines,Does not combine,Combines,Not applicable

.. _notes-1:

Notes
^^^^^

Each commit scope implicitly works with itself.
