On 2018-Jul-19, Quan TRAN wrote:
> Hello,
>
> In worker.c:
>
> - in apply_handle_insert, slot_store_cstrings is called before
> PushActiveSnapshot
> - in apply_handle_update & apply_handle_delete, slot_store_cstrings is
> called after PushActiveSnapshot
>
> /* Process and store remote tuple in the slot */
> oldctx = MemoryContextSwitchTo(GetPerTupleMemoryContext(estate));
> slot_store_cstrings(remoteslot, rel, newtup.values);
> slot_fill_defaults(rel, estate, remoteslot);
> MemoryContextSwitchTo(oldctx);
>
> PushActiveSnapshot(GetTransactionSnapshot());
>
> Should this be the cause?
Yeah, moving the PushActiveSnapshot call to just before
slot_store_cstrings sounds right.
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services