Fix 'skip-empty-xacts' option in test_decoding for streaming mode.
authorAmit Kapila <akapila@postgresql.org>
Tue, 17 Nov 2020 06:44:53 +0000 (12:14 +0530)
committerAmit Kapila <akapila@postgresql.org>
Tue, 17 Nov 2020 06:44:53 +0000 (12:14 +0530)
commit9653f24ad8307f393de51e0a64d9b10a49efa6e3
tree1d2d83380772116a785a530f511e58b9c3f61d56
parent2bd49b493a52f0a21bc3fc51c355963f99ac1a4e
Fix 'skip-empty-xacts' option in test_decoding for streaming mode.

In streaming mode, the transaction can be decoded in multiple streams and
those streams can be interleaved with streams of other transactions. So,
we can't remember the transaction's write status in the logical decoding
context because that might get changed due to some other transactions and
lead to wrong answers for 'skip-empty-xacts' option. We decided to keep
each transaction's write status in the ReorderBufferTxn to avoid
interleaved streams changing the status of some unrelated transactions.

Diagnosed-by: Amit Kapila
Author: Dilip Kumar
Reviewed-by: Amit Kapila
Discussion: https://postgr.es/m/CAA4eK1LR7=XNM_TLmpZMFuV8ZQpoxkem--NZJYf8YXmesbvwLA@mail.gmail.com
contrib/test_decoding/expected/concurrent_stream.out
contrib/test_decoding/specs/concurrent_stream.spec
contrib/test_decoding/test_decoding.c
src/backend/replication/logical/reorderbuffer.c
src/include/replication/reorderbuffer.h
src/tools/pgindent/typedefs.list