Ignore BRIN indexes when checking for HOT udpates
authorTomas Vondra <[email protected]>
Tue, 30 Nov 2021 18:15:14 +0000 (19:15 +0100)
committerTomas Vondra <[email protected]>
Tue, 30 Nov 2021 19:04:38 +0000 (20:04 +0100)
commit5753d4ee320b3f6fb2ff734667a1ce1d9d8615a1
treeaa64a9b6c092246eb9f23e47be7c6011fdd10976
parent4c83e59e01a89b0b19245b8e0317d87ae60226eb
Ignore BRIN indexes when checking for HOT udpates

When determining whether an index update may be skipped by using HOT, we
can ignore attributes indexed only by BRIN indexes. There are no index
pointers to individual tuples in BRIN, and the page range summary will
be updated anyway as it relies on visibility info.

This also removes rd_indexattr list, and replaces it with rd_attrsvalid
flag. The list was not used anywhere, and a simple flag is sufficient.

Patch by Josef Simanek, various fixes and improvements by me.

Author: Josef Simanek
Reviewed-by: Tomas Vondra, Alvaro Herrera
Discussion: https://postgr.es/m/CAFp7QwpMRGcDAQumN7onN9HjrJ3u4X3ZRXdGFT0K5G2JWvnbWg%40mail.gmail.com
15 files changed:
doc/src/sgml/indexam.sgml
src/backend/access/brin/brin.c
src/backend/access/gin/ginutil.c
src/backend/access/gist/gist.c
src/backend/access/hash/hash.c
src/backend/access/heap/heapam.c
src/backend/access/nbtree/nbtree.c
src/backend/access/spgist/spgutils.c
src/backend/utils/cache/relcache.c
src/include/access/amapi.h
src/include/utils/rel.h
src/include/utils/relcache.h
src/test/modules/dummy_index_am/dummy_index_am.c
src/test/regress/expected/brin.out
src/test/regress/sql/brin.sql