Обсуждение: FDW and transaction management

Поиск
Список
Период
Сортировка

FDW and transaction management

От
Michael Holzman
Дата:
Greetings,

I am trying to understand the subject. I see in the documentation (http://www.postgresql.org/docs/current/static/postgres-fdw.html) that

F.31.3. Transaction Management

During a query that references any remote tables on a foreign server, postgres_fdw opens a transaction on the remote server if one is not already open corresponding to the current local transaction. The remote transaction is committed or aborted when the local transaction commits or aborts. Savepoints are similarly managed by creating corresponding remote savepoints.

The remote transaction uses SERIALIZABLE isolation level when the local transaction has SERIALIZABLE isolation level; otherwise it uses REPEATABLE READ isolation level. This choice ensures that if a query performs multiple table scans on the remote server, it will get snapshot-consistent results for all the scans. A consequence is that successive queries within a single transaction will see the same data from the remote server, even if concurrent updates are occurring on the remote server due to other activities. That behavior would be expected anyway if the local transaction uses SERIALIZABLE or REPEATABLE READ isolation level, but it might be surprising for a READ COMMITTED local transaction. A future PostgreSQL release might modify these rules.

Unfortunately, the Postgres Wiki (https://wiki.postgresql.org/wiki/SQL/MED#No_transaction_management) states quite the opposite:

No transaction management

FDW for PostgreSQL never emit transaction command such as BEGIN, ROLLBACK and COMMIT. Thus, all SQL statements are executed in each transaction when 'autocommit' was set to 'on'.


What is the correct state of the subject?


--
Regards,
    Michael Holzman

Re: FDW and transaction management

От
Adrian Klaver
Дата:
On 02/07/2016 10:24 PM, Michael Holzman wrote:
> Greetings,
>
> I am trying to understand the subject. I see in the documentation
> (http://www.postgresql.org/docs/current/static/postgres-fdw.html) that
>
>
>     F.31.3. Transaction Management
>
> During a query that references any remote tables on a foreign
> server,postgres_fdwopens a transaction on the remote server if one is
> not already open corresponding to the current local transaction. The
> remote transaction is committed or aborted when the local transaction
> commits or aborts. Savepoints are similarly managed by creating
> corresponding remote savepoints.
>
> The remote transaction usesSERIALIZABLEisolation level when the local
> transaction hasSERIALIZABLEisolation level; otherwise it usesREPEATABLE
> READisolation level. This choice ensures that if a query performs
> multiple table scans on the remote server, it will get
> snapshot-consistent results for all the scans. A consequence is that
> successive queries within a single transaction will see the same data
> from the remote server, even if concurrent updates are occurring on the
> remote server due to other activities. That behavior would be expected
> anyway if the local transaction usesSERIALIZABLEorREPEATABLE
> READisolation level, but it might be surprising for aREAD COMMITTEDlocal
> transaction. A futurePostgreSQLrelease might modify these rules.
>
>
> Unfortunately, the Postgres Wiki
> (https://wiki.postgresql.org/wiki/SQL/MED#No_transaction_management)
> states quite the opposite:
>
>
>       No transaction management
>
> FDW for PostgreSQL never emit transaction command such as BEGIN,
> ROLLBACK and COMMIT. Thus, all SQL statements are executed in each
> transaction when 'autocommit' was set to 'on'.
>
>
> What is the correct state of the subject?

The documentation.

If you look a bottom of Wiki page you will find:

This page was last modified on 6 March 2012, at 11:11



>
>
> --
> Regards,
>      Michael Holzman


--
Adrian Klaver
adrian.klaver@aklaver.com


Re: FDW and transaction management

От
Michael Holzman
Дата:


On Mon, Feb 8, 2016 at 6:25 PM, Adrian Klaver  wrote:
What is the correct state of the subject?

The documentation.

If you look a bottom of Wiki page you will find:

This page was last modified on 6 March 2012, at 11:11

--
Adrian Klaver

Thanks

--
Regards,
    Michael Holzman