Alvaro Herrera <alvherre(at)commandprompt(dot)com> writes:
> The attached patch should correct the problem, but I'd like to make sure
> it does ...
Rather than that, I'd suggest just setting ActiveSnapshot
unconditionally after each of the StartTransactionCommand calls in
autovacuum.c, ie make the code look just like vacuum.c:
/* Begin a transaction for vacuuming this relation */
StartTransactionCommand();
/* functions in indexes may want a snapshot set */
ActiveSnapshot = CopySnapshot(GetTransactionSnapshot());
This seems more future-proof. The patch as proposed is assuming a whole
lot about where snapshots might or might not get used.
regards, tom lane