Tom Lane wrote:
>
> I have been making some notes about the rules for accessing shared disk
> buffers, since they aren't spelled out anywhere now AFAIK. In process
> I found what seems to be a nasty bug in the code that tries to build
> btree indexes that include already-dead tuples. (If memory serves,
> Hiroshi added that code awhile back to help suppress the "heap tuples
> != index tuples" complaint from VACUUM.)
>
[snip]
>
> I believe that nbtree.c's btbuild() code is currently in violation of
> these rules, because it calls HeapTupleSatisfiesNow() while holding a
> pin but no lock on the containing buffer.
OK, we had better avoid using heapam routines in btbuild() ?
regards,
Hiroshi Inoue