Allow hash joins to be interrupted while searching hash table for match.

Per experimentation with a recent example, in which unreasonable amounts
of time could elapse before the backend would respond to a query-cancel.

This might be something to back-patch, but the patch doesn't apply cleanly
because this code was rewritten for 9.1.  Given the lack of field
complaints I won't bother for now.

Cédric Villemain
This commit is contained in:
Tom Lane 2011-06-01 17:01:59 -04:00
parent 596b0c213f
commit 0c99d41ec8
1 changed files with 8 additions and 0 deletions

View File

@ -19,6 +19,7 @@
#include "executor/hashjoin.h"
#include "executor/nodeHash.h"
#include "executor/nodeHashjoin.h"
#include "miscadmin.h"
#include "utils/memutils.h"
@ -262,6 +263,13 @@ ExecHashJoin(HashJoinState *node)
case HJ_SCAN_BUCKET:
/*
* We check for interrupts here because this corresponds to
* where we'd fetch a row from a child plan node in other
* join types.
*/
CHECK_FOR_INTERRUPTS();
/*
* Scan the selected hash bucket for matches to current outer
*/