summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/optimizer/util/predtest.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/backend/optimizer/util/predtest.c b/src/backend/optimizer/util/predtest.c
index 48ae77ac55e..7a38df5475e 100644
--- a/src/backend/optimizer/util/predtest.c
+++ b/src/backend/optimizer/util/predtest.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/optimizer/util/predtest.c,v 1.4 2005/10/15 02:49:21 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/optimizer/util/predtest.c,v 1.4.2.1 2008/11/12 23:08:55 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -19,6 +19,7 @@
#include "catalog/pg_proc.h"
#include "catalog/pg_type.h"
#include "executor/executor.h"
+#include "miscadmin.h"
#include "optimizer/clauses.h"
#include "optimizer/predtest.h"
#include "utils/catcache.h"
@@ -482,6 +483,9 @@ predicate_refuted_by_recurse(Node *clause, Node *predicate)
static bool
predicate_implied_by_simple_clause(Expr *predicate, Node *clause)
{
+ /* Allow interrupting long proof attempts */
+ CHECK_FOR_INTERRUPTS();
+
/* First try the equal() test */
if (equal((Node *) predicate, clause))
return true;
@@ -529,6 +533,9 @@ predicate_implied_by_simple_clause(Expr *predicate, Node *clause)
static bool
predicate_refuted_by_simple_clause(Expr *predicate, Node *clause)
{
+ /* Allow interrupting long proof attempts */
+ CHECK_FOR_INTERRUPTS();
+
/* First try the IS NULL case */
if (predicate && IsA(predicate, NullTest) &&
((NullTest *) predicate)->nulltesttype == IS_NULL)