postgresql/src/backend/commands
Michael Paquier 8270a0d9a9 Handle interrupts within a transaction context in REINDEX CONCURRENTLY
Phases 2 (building the new index) and 3 (validating the new index)
checked for interrupts outside a transaction context, having as
consequence to not release session-level locks taken on the parent
relation and the old and new indexes processed.  This could for example
be triggered with statement_timeout and a bad timing, and would issue
confusing error messages when shutting down the session still holding
the locks (note that an assertion failure would be triggered first), on
top of more issues with concurrent sessions trying to take a lock that
would interfere with the SHARE UPDATE EXCLUSIVE locks hold here.

This moves all the interruption checks inside a transaction context.
Note that I have manually tested all interruptions to make sure that
invalid indexes can be cleaned up properly.  Partition indexes still
have issues on their own with some missing dependency handling, which
will be dealt with in a follow-up patch.

Reported-by: Justin Pryzby
Author: Michael Paquier
Discussion: https://postgr.es/m/20191013025145.GC4475@telsasoft.com
Backpatch-through: 12
2019-10-25 10:20:08 +09:00
..
aggregatecmds.c Implement OR REPLACE option for CREATE AGGREGATE. 2019-03-19 01:16:50 +00:00
alter.c Add an enforcement mechanism for global object names in regression tests. 2019-06-29 11:34:00 -04:00
amcmds.c Initial pgindent run for v12. 2019-05-22 12:55:34 -04:00
analyze.c Allow setting statistics target for extended statistics 2019-09-11 00:25:51 +02:00
async.c Remove AtSubStart_Notify. 2019-10-04 08:19:25 -04:00
cluster.c Split tuptoaster.c into three separate files. 2019-09-05 13:15:10 -04:00
collationcmds.c Collations with nondeterministic comparison 2019-03-22 12:12:43 +01:00
comment.c
constraint.c Initial pgindent run for v12. 2019-05-22 12:55:34 -04:00
conversioncmds.c Remove dead encoding-conversion functions. 2019-07-05 14:17:27 -04:00
copy.c Fix inconsistencies and typos in the tree, take 9 2019-08-05 12:14:58 +09:00
createas.c Represent Lists as expansible arrays, not chains of cons-cells. 2019-07-15 13:41:58 -04:00
dbcommands.c Silence -Wmaybe-uninitialized compiler warnings in dbcommands.c. 2019-09-27 14:14:30 -07:00
define.c Fix inconsistencies and typos in the tree, take 9 2019-08-05 12:14:58 +09:00
discard.c
dropcmds.c Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
event_trigger.c Remove superfluous newlines in function prototypes. 2019-07-31 00:05:21 -07:00
explain.c Represent Lists as expansible arrays, not chains of cons-cells. 2019-07-15 13:41:58 -04:00
extension.c Reduce memory consumption for multi-statement query strings. 2019-07-10 14:32:38 -04:00
foreigncmds.c Represent Lists as expansible arrays, not chains of cons-cells. 2019-07-15 13:41:58 -04:00
functioncmds.c Fix more typos and inconsistencies in the tree 2019-06-17 16:13:16 +09:00
indexcmds.c Handle interrupts within a transaction context in REINDEX CONCURRENTLY 2019-10-25 10:20:08 +09:00
lockcmds.c Avoid using lcons and list_delete_first where it's easy to do so. 2019-07-17 11:15:34 -04:00
Makefile
matview.c tableam: Rename wrapper functions to match callback names. 2019-05-23 16:32:36 -07:00
opclasscmds.c Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
operatorcmds.c Fix inconsistencies and typos in the tree 2019-07-29 12:28:30 +09:00
policy.c Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
portalcmds.c
prepare.c Fix inconsistencies and typos in the tree, take 9 2019-08-05 12:14:58 +09:00
proclang.c Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
publicationcmds.c Warn if wal_level is too low when creating a publication. 2019-07-13 10:35:34 +12:00
schemacmds.c
seclabel.c Represent Lists as expansible arrays, not chains of cons-cells. 2019-07-15 13:41:58 -04:00
sequence.c Fix inconsistencies and typos in the tree, take 10 2019-08-13 13:53:41 +09:00
statscmds.c Remove last traces of heap_open/close in the tree 2019-10-19 11:18:15 +09:00
subscriptioncmds.c Add an enforcement mechanism for global object names in regression tests. 2019-06-29 11:34:00 -04:00
tablecmds.c Fix dependency handling of column drop with partitioned tables 2019-10-13 17:51:55 +09:00
tablespace.c pgindent run prior to branching v12. 2019-07-01 12:37:52 -04:00
trigger.c Fix crash caused by EPQ happening with a before update trigger present. 2019-10-04 13:50:49 -07:00
tsearchcmds.c Represent Lists as expansible arrays, not chains of cons-cells. 2019-07-15 13:41:58 -04:00
typecmds.c Avoid using lcons and list_delete_first where it's easy to do so. 2019-07-17 11:15:34 -04:00
user.c Add an enforcement mechanism for global object names in regression tests. 2019-06-29 11:34:00 -04:00
vacuum.c Fix bug that could try to freeze running multixacts. 2019-10-17 09:59:21 +13:00
variable.c
view.c Support reloptions of enum type 2019-09-25 15:56:52 -03:00