On 6/30/21 12:53 AM, Josef Šimánek wrote:
st 30. 6. 2021 v 0:31 odesílatel Josef Šimánek <josef.sima...@gmail.com> napsal:

Hello!

Tomáš Vondra has shared a few ideas to improve BRIN index in czech
PostgreSQL mail list some time ago [1 , in czech only]. This is first
try to implement one of those ideas.

Currently BRIN index blocks HOT update even it is not linked tuples
directly. I'm attaching the initial patch allowing HOT update even on
BRIN indexed columns. This patch went through an initial review on
czech PostgreSQL mail list [1].

I just found out current patch is breaking partial-index isolation
test. I'm looking into this problem.


The problem is in RelationGetIndexAttrBitmap - the existing code first walks indnatts, and builds the indexattrs / hotblockingattrs. But then it also inspects expressions and the predicate (by pull_varattnos), and the patch fails to do that for hotblockingattrs. Which is why it fails for partial-index, because that uses an index with a predicate.

So there needs to be something like:

    if (indexDesc->rd_indam->amhotblocking)
        pull_varattnos(indexExpressions, 1, &hotblockingattrs);

    if (indexDesc->rd_indam->amhotblocking)
        pull_varattnos(indexPredicate, 1, &hotblockingattrs);

This fixes the failure for me.

regards

--
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Reply via email to