From 10f1f93d8ae2d70fcaf350c62972fb6bac42ffc9 Mon Sep 17 00:00:00 2001
From: Andres Freund <andres@anarazel.de>
Date: Tue, 2 Dec 2014 23:42:26 +0100
Subject: Don't skip SQL backends in logical decoding for visibility
 computation.

The logical decoding patchset introduced PROC_IN_LOGICAL_DECODING flag
PGXACT flag, that allows such backends to be skipped when computing
the xmin horizon/snapshots. That's fine and sensible for walsenders
streaming out logical changes, but not at all fine for SQL backends
doing logical decoding. If the latter set that flag any change they
have performed outside of logical decoding will not be regarded as
visible - which e.g. can lead to that change being vacuumed away.

Note that not setting the flag for SQL backends isn't particularly
bothersome - the SQL backend doesn't do streaming, so it only runs for
a limited amount of time.

Per buildfarm member 'tick' and Alvaro.

Backpatch to 9.4, where logical decoding was introduced.
---
 contrib/test_decoding/sql/decoding_into_rel.sql | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'contrib/test_decoding/sql/decoding_into_rel.sql')

diff --git a/contrib/test_decoding/sql/decoding_into_rel.sql b/contrib/test_decoding/sql/decoding_into_rel.sql
index 3704821bcc3..54670fd39e7 100644
--- a/contrib/test_decoding/sql/decoding_into_rel.sql
+++ b/contrib/test_decoding/sql/decoding_into_rel.sql
@@ -1,6 +1,10 @@
 -- test that we can insert the result of a get_changes call into a
 -- logged relation. That's really not a good idea in practical terms,
 -- but provides a nice test.
+
+-- predictability
+SET synchronous_commit = on;
+
 SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
 
 -- slot works
-- 
cgit v1.2.3

