commit 597f6857ecb98572171a96c08a3be434362ac70f Author: Cédric Villemain Date: Wed Jun 1 21:30:56 2011 +0200 Add a CHECK_FOR_INTERRUPTS() in the hash(anti)join The CHECK is in one place where the loop happens really. It looks enough to break if it is signaled while not executed for each case in the upper for(;;) diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c index 26da3b2..cef19d8 100644 --- a/src/backend/executor/nodeHashjoin.c +++ b/src/backend/executor/nodeHashjoin.c @@ -14,6 +14,7 @@ */ #include "postgres.h" +#include "miscadmin.h" #include "executor/executor.h" #include "executor/hashjoin.h" @@ -264,7 +265,9 @@ ExecHashJoin(HashJoinState *node) /* * Scan the selected hash bucket for matches to current outer + * And let the backend give up if it has been signaled. */ + CHECK_FOR_INTERRUPTS(); if (!ExecScanHashBucket(node, econtext)) { /* out of matches; check for possible outer-join fill */