pgsql: Fix and test snapshot behavior on standby.

Поиск
Список
Период
Сортировка
От Andres Freund
Тема pgsql: Fix and test snapshot behavior on standby.
Дата
Msg-id E1kNmVd-00070V-JC@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix and test snapshot behavior on standby.

I (Andres) broke this in 623a9CA79bx, because I didn't think about the
way snapshots are built on standbys sufficiently. Unfortunately our
existing tests did not catch this, as they are all just querying with
psql (therefore ending up with fresh snapshots).

The fix is trivial, we just need to increment the transaction
completion counter in ExpireTreeKnownAssignedTransactionIds(), which
is the equivalent of ProcArrayEndTransaction() during recovery.

This commit also adds a new test doing some basic testing of the
correctness of snapshots built on standbys. To avoid the
aforementioned issue of one-shot psql's not exercising the snapshot
caching, the test uses a long lived psqls, similar to
013_crash_restart.pl. It'd be good to extend the test further.

Reported-By: Ian Barwick <ian.barwick@2ndquadrant.com>
Author: Andres Freund <andres@anarazel.de>
Author: Ian Barwick <ian.barwick@2ndquadrant.com>
Discussion: https://postgr.es/m/61291ffe-d611-f889-68b5-c298da9fb18f@2ndquadrant.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/7b28913bcab8d1bf3dbf59c9d8fb4b51cef57664

Modified Files
--------------
src/backend/storage/ipc/procarray.c       |   3 +
src/test/recovery/t/021_row_visibility.pl | 192 ++++++++++++++++++++++++++++++
2 files changed, 195 insertions(+)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: pgsql: Reword partitioning error message
Следующее
От: Michael Paquier
Дата:
Сообщение: pgsql: Remove logging.c from the shared library of src/common/