diff options
author | Andres Freund | 2017-07-26 00:37:17 +0000 |
---|---|---|
committer | Andres Freund | 2017-07-30 23:06:42 +0000 |
commit | d47cfef7116fb36349949f5c757aa2112c249804 (patch) | |
tree | 8e75ba762674b200802a11a19edbc3b5777ed5ca /src/backend/executor/nodeHash.c | |
parent | 9dea962b3ef48f6e96172653b7cf80cb5f53e6b6 (diff) |
Move interrupt checking from ExecProcNode() to executor nodes.
In a followup commit ExecProcNode(), and especially the large switch
it contains, will largely be replaced by a function pointer directly
to the correct node. The node functions will then get invoked by a
thin inline function wrapper. To avoid having to include miscadmin.h
in headers - CHECK_FOR_INTERRUPTS() - move the interrupt checks into
the individual executor routines.
While looking through all executor nodes, I noticed a number of
arguably missing interrupt checks, add these too.
Author: Andres Freund, Tom Lane
Reviewed-By: Tom Lane
Discussion:
https://postgr.es/m/[email protected]
Diffstat (limited to 'src/backend/executor/nodeHash.c')
-rw-r--r-- | src/backend/executor/nodeHash.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c index 075f4ed11c8..fbeb562489c 100644 --- a/src/backend/executor/nodeHash.c +++ b/src/backend/executor/nodeHash.c @@ -810,6 +810,9 @@ ExecHashIncreaseNumBuckets(HashJoinTable hashtable) idx += MAXALIGN(HJTUPLE_OVERHEAD + HJTUPLE_MINTUPLE(hashTuple)->t_len); } + + /* allow this loop to be cancellable */ + CHECK_FOR_INTERRUPTS(); } } @@ -1192,6 +1195,9 @@ ExecScanHashTableForUnmatched(HashJoinState *hjstate, ExprContext *econtext) hashTuple = hashTuple->next; } + + /* allow this loop to be cancellable */ + CHECK_FOR_INTERRUPTS(); } /* |