Fix skip-empty-xacts with sequences in test_decoding
authorTomas Vondra <tomas.vondra@postgresql.org>
Sat, 12 Feb 2022 22:50:42 +0000 (23:50 +0100)
committerTomas Vondra <tomas.vondra@postgresql.org>
Sat, 12 Feb 2022 22:50:42 +0000 (23:50 +0100)
commitb779d7d8fdae088d70da5ed9fcd8205035676df3
treedc6733e833b2423d43ebb8e2385774cb9b9a3778
parentfaa189c932d51945b2285e277128b0f26b96afdd
Fix skip-empty-xacts with sequences in test_decoding

Regression tests need to use skip-empty-xacts = false, because there
might be accidental concurrent activity (like autovacuum), particularly
on slow machines. The tests added by 80901b3291 failed to do that in a
couple places, triggering occasional failures on buildfarm.

Fixing the tests however uncovered a bug in the code, because sequence
callbacks did not handle skip-empty-xacts properly. For trasactional
increments we need to check/update the xact_wrote_changes flag, and emit
the BEGIN if it's the first change in the transaction.

Reported-by: Andres Freund
Discussion: https://postgr.es/m/20220212220413.b25amklo7t4xb7ni%40alap3.anarazel.de
contrib/test_decoding/expected/sequence.out
contrib/test_decoding/sql/sequence.sql
contrib/test_decoding/test_decoding.c