postgresql/src/backend/access
Andres Freund 3a01f68e35 Check for interrupts inside the nbtree page deletion code.
When deleting pages the nbtree code has to walk through siblings of a
tree node. When those sibling links are corrupted that can lead to
endless loops - which are currently not interruptible.  This is
especially problematic if autovacuum is repeatedly blocked on such
indexes, as it can be hard to get out of that situation without
resorting to single user mode.

Thus add interrupt checks to appropriate places in such
loops. Unfortunately in one of the cases it's it's not easy to do so.

Between 9.3 and 9.4 the page deletion (and page split) code changed
significantly. Before it was significantly less robust against
interruptions. Therefore don't backpatch to 9.3.

Author: Andres Freund
Discussion: https://postgr.es/m/20180627191629.wkunw2qbibnvlz53@alap3.anarazel.de
Backpatch: 9.4-
2018-07-04 14:58:25 -07:00
..
brin Fail BRIN control functions during recovery explicitly 2018-06-14 12:51:32 -04:00
common Cosmetic improvements for faster column addition. 2018-06-27 08:16:13 +05:30
gin pgindent run prior to branching 2018-06-30 12:25:49 -04:00
gist Re-think predicate locking on GIN indexes. 2018-05-04 11:27:50 +03:00
hash Clean up warnings from -Wimplicit-fallthrough. 2018-05-01 19:35:08 -04:00
heap Address set of issues with errno handling 2018-06-25 11:19:05 +09:00
index Further cleanup of client dependencies on src/include/catalog headers. 2018-04-09 14:39:58 -04:00
nbtree Check for interrupts inside the nbtree page deletion code. 2018-07-04 14:58:25 -07:00
rmgrdesc printf("%lf") is not portable, so omit the "l". 2018-05-20 11:40:54 -04:00
spgist Post-feature-freeze pgindent run. 2018-04-26 14:47:16 -04:00
tablesample Update copyright for 2018 2018-01-02 23:30:12 -05:00
transam Improve the performance of relation deletes during recovery. 2018-07-05 02:23:46 +09:00
Makefile TABLESAMPLE, SQL Standard and extensible 2015-05-15 14:37:10 -04:00