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. > It can be viewed online (latest version) on GitHub [2] as well. > > - small overview > > 1. I have added "amhotblocking" flag to index AM descriptor set to > "true" for all, except BRIN, index types. And later in heap_update > method (heapam.c) I do filter attributes based on this new flag, > instead of currently checking for any existing index. > > 2. I had to enhance the "RelationGetIndexAttrBitmap" function to be > able to return a bitmap of index attribute numbers related to the new > AM flag using "INDEX_ATTR_BITMAP_HOT_BLOCKING" filter. > PS: Originally the "INDEX_ATTR_BITMAP_ALL" filter was used for HOT > check update and most likely could be removed (including all logic > related in RelationGetIndexAttrBitmap), since I have not found any > other usage. > > 3. I have created an initial regression test using > "pg_stat_get_tuples_hot_updated" to find out HOT was successful on the > BRIN indexed column. Unfortunately "pg_stat_get_tuples_hot_updated" is > not updated immediately and I have not found any way to enforce the > update. Thus (at least for now) I have used a similar approach to > stats.sql using the "wait_for_stats" function (waiting for 30 seconds > and checking each 100ms for change). > > I'm attaching patch to CF 2021-07. > > [1] https://groups.google.com/g/postgresql-cz/c/oxA_v3H17Qg > [2] https://github.com/simi/postgres/pull/7