diff options
Diffstat (limited to 'src/backend/executor/nodeIndexscan.c')
-rw-r--r-- | src/backend/executor/nodeIndexscan.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c index 75b10115f52..6704ede9955 100644 --- a/src/backend/executor/nodeIndexscan.c +++ b/src/backend/executor/nodeIndexscan.c @@ -34,6 +34,7 @@ #include "executor/execdebug.h" #include "executor/nodeIndexscan.h" #include "lib/pairingheap.h" +#include "miscadmin.h" #include "nodes/nodeFuncs.h" #include "optimizer/clauses.h" #include "utils/array.h" @@ -131,6 +132,8 @@ IndexNext(IndexScanState *node) */ while ((tuple = index_getnext(scandesc, direction)) != NULL) { + CHECK_FOR_INTERRUPTS(); + /* * Store the scanned tuple in the scan tuple slot of the scan state. * Note: we pass 'false' because tuples returned by amgetnext are @@ -233,6 +236,8 @@ IndexNextWithReorder(IndexScanState *node) for (;;) { + CHECK_FOR_INTERRUPTS(); + /* * Check the reorder queue first. If the topmost tuple in the queue * has an ORDER BY value smaller than (or equal to) the value last @@ -299,6 +304,8 @@ next_indextuple: { /* Fails recheck, so drop it and loop back for another */ InstrCountFiltered2(node, 1); + /* allow this loop to be cancellable */ + CHECK_FOR_INTERRUPTS(); goto next_indextuple; } } |