aboutsummaryrefslogtreecommitdiff
path: root/src/backend/replication/logical/tablesync.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2017-08-02 10:59:01 -0400
committerPeter Eisentraut <peter_e@gmx.net>2017-08-02 11:34:42 -0400
commitcf652018332819716b10c9de9ce80c81284d6815 (patch)
treeb25c5796590c226627c543d742a1bead59f06c43 /src/backend/replication/logical/tablesync.c
parentf352f91cbf2f662c4f043d3650010b02da0cde1c (diff)
downloadpostgresql-cf652018332819716b10c9de9ce80c81284d6815.tar.gz
postgresql-cf652018332819716b10c9de9ce80c81284d6815.zip
Get a snapshot before COPY in table sync
This fixes a crash if the local table has a function index and the function makes non-immutable calls. Reported-by: Scott Milliken <scott@deltaex.com> Author: Masahiko Sawada <sawada.mshk@gmail.com>
Diffstat (limited to 'src/backend/replication/logical/tablesync.c')
-rw-r--r--src/backend/replication/logical/tablesync.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/backend/replication/logical/tablesync.c b/src/backend/replication/logical/tablesync.c
index 32abf5b368a..4cca0f1a85f 100644
--- a/src/backend/replication/logical/tablesync.c
+++ b/src/backend/replication/logical/tablesync.c
@@ -917,7 +917,9 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos)
walrcv_create_slot(wrconn, slotname, true,
CRS_USE_SNAPSHOT, origin_startpos);
+ PushActiveSnapshot(GetTransactionSnapshot());
copy_table(rel);
+ PopActiveSnapshot();
res = walrcv_exec(wrconn, "COMMIT", 0, NULL);
if (res->status != WALRCV_OK_COMMAND)