]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix snapshot handling in logicalmsg_decode
authorTomas Vondra <tomas.vondra@postgresql.org>
Wed, 22 Feb 2023 14:24:09 +0000 (15:24 +0100)
committerTomas Vondra <tomas.vondra@postgresql.org>
Wed, 22 Feb 2023 15:09:30 +0000 (16:09 +0100)
commit4df581fa0f4b663141901d87817f77ec695c6d22
treedd457555ddb020d0cc0b4c7f540d7244efd4f30c
parent906356cf6128ac6e35bcb07f7fd5361eb76c4999
Fix snapshot handling in logicalmsg_decode

Whe decoding a transactional logical message, logicalmsg_decode called
SnapBuildGetOrBuildSnapshot. But we may not have a consistent snapshot
yet at that point. We don't actually need the snapshot in this case
(during replay we'll have the snapshot from the transaction), so in
practice this is harmless. But in assert-enabled build this crashes.

Fixed by requesting the snapshot only in non-transactional case, where
we are guaranteed to have SNAPBUILD_CONSISTENT.

Backpatch to 11. The issue exists since 9.6.

Backpatch-through: 11
Reviewed-by: Andres Freund
Discussion: https://postgr.es/m/84d60912-6eab-9b84-5de3-41765a5449e8@enterprisedb.com
src/backend/replication/logical/decode.c
src/backend/replication/logical/reorderbuffer.c