]> 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:48:30 +0000 (16:48 +0100)
commit949ac32e12674d9c0bcd3d95ea5e56338a567a18
tree02ad3c19f516a4c5edacb2f233d78bb581705a02
parent576b25bfd0e9a1d5bbc54931e888135bc6da8a2f
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