FYI this looks like it needs a rebase due to a conflict in copy.c and
an offset in pgoutput.c.
Is there anything specific that still needs review or do you think
you've handled all Peter's concerns? In particular, is there "a
comprehensive description of what it is trying to do"? :)