On Tue, Oct 30, 2018 at 04:09:31PM -0700, Andres Freund wrote:
> Replication needs to maintain the other indexes, and for that it needs
> to evaluate predicates. So I don't understand how you could say that
> it doesn't need to know about other indexes?
You are right, sorry for the noise. The worker applies the changes so
it needs to know about all the indexes and its information. So we need
to tackle three separate issues here then:
1) On the sender side, make sure that only the replica index information
is fetched. I actually would prefer something like what Alvaro proposed
upthread, to not save the saved information into the cached Relation,
and potentially have RelationGetIndexAttrBitmap() overwrite it.
2) On the apply side, move the snapshot build a bit earlier so as the
index information can be built properly.
3) Make sure that RelationGetIndexAttrBitmap() never gets called if
there is no snapshot available.
1) and 2) are the actual bug fixes to back-patch. 3) is optionally
something for HEAD, which Petr proposed.
--
Michael