diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c
index 26da3b2fdf553faef44faacc9abb52257066706b..0e7ca625cee4f9bc5eae71b1433f3af319af80c5 100644
--- a/src/backend/executor/nodeHashjoin.c
+++ b/src/backend/executor/nodeHashjoin.c
@@ -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
 				 */