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<br />(default),:ref:`Parallel Apply<Parallel Apply>`,:ref:`Using with transaction streaming<Using with transaction streaming>`,:ref:`Decoding worker<Decoding worker>`
  :widths: 15,8,8,12,10
  :align: left
  :class: longtable

  :ref:`Group Commit (legacy)<Group Commit (legacy)>` ,N/A,Does not combine,Does not interoperate <sup>❗️</sup>,Combines
  :ref:`Commit At Most Once<Commit At Most Once>` ,N/A,Combines,Does not interoperate ,Does not interoperate 
  :ref:`Lag Control<Lag Control>` ,Combines,Combines,Combines,Combines
  :ref:`Synchronous Commit<Synchronous Commit>` ,N/A,Combines,Combines,Combines

Notes
^^^^^

N/A : 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: "",:ref:`Group Commit (legacy)<Group Commit (legacy)>`,:ref:`Commit At Most Once<Commit At Most Once>`,:ref:`Lag Control<Lag Control>`,:ref:`Synchronous Commit<Synchronous Commit>`
  :widths: 10,10,10,10,10
  :align: left
  :class: longtable

  :ref:`Group Commit (legacy)<Group Commit (legacy)>` ,N/A,Does not combine,Combines,Combines
  :ref:`Commit At Most Once<Commit At Most Once>` ,Does not combine ,N/A,Combines,Does not combine
  :ref:`Lag Control<Lag Control>` ,Combines,Combines,N/A,Combines
  :ref:`Synchronous Commit<Synchronous Commit>` ,Combines,Does not combine,Combines,N/A

.. _notes-1:

Notes
^^^^^

Each commit scope implicitly works with itself.
