aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2024-12-23 12:42:55 +0200
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2024-12-23 12:42:55 +0200
commit1585ff7387dbcc5657522b2ed87ffd58fd555ee9 (patch)
tree4be2198a35715c6fccce4fa222607a3741837e20 /src
parent952365cded635e54c4177399c0280cb7a5e34c11 (diff)
downloadpostgresql-1585ff7387dbcc5657522b2ed87ffd58fd555ee9.tar.gz
postgresql-1585ff7387dbcc5657522b2ed87ffd58fd555ee9.zip
Don't allow GetTransactionSnapshot() in logical decoding
A historic snapshot should only be used for catalog access, not general queries. We never call GetTransactionSnapshot() during logical decoding, which is good because it wouldn't be very sensible, so the code to deal with that was unreachable and untested. Turn it into an error, to avoid doing that in the future either. Discussion: https://www.postgresql.org/message-id/a868fe78-ddb4-4b0a-9b96-873d91d93cfd@iki.fi
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/time/snapmgr.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index e002d0c1368..6eb29b99735 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -212,16 +212,12 @@ Snapshot
GetTransactionSnapshot(void)
{
/*
- * Return historic snapshot if doing logical decoding. We'll never need a
- * non-historic transaction snapshot in this (sub-)transaction, so there's
- * no need to be careful to set one up for later calls to
- * GetTransactionSnapshot().
+ * This should not be called while doing logical decoding. Historic
+ * snapshots are only usable for catalog access, not for general-purpose
+ * queries.
*/
if (HistoricSnapshotActive())
- {
- Assert(!FirstSnapshotSet);
- return HistoricSnapshot;
- }
+ elog(ERROR, "cannot take query snapshot during logical decoding");
/* First call in transaction? */
if (!FirstSnapshotSet)