aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/util/predtest.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2009-01-09 15:46:11 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2009-01-09 15:46:11 +0000
commitd04db370720ece56ffcad54e46cf03483c742ebb (patch)
treef446fa524bfef45b5152575dc188e49c43ea0a25 /src/backend/optimizer/util/predtest.c
parentd3706cb6d217bc9c4676541f2df32171ef6555a2 (diff)
downloadpostgresql-d04db370720ece56ffcad54e46cf03483c742ebb.tar.gz
postgresql-d04db370720ece56ffcad54e46cf03483c742ebb.zip
Arrange for function default arguments to be processed properly in expressions
that are set up for execution with ExecPrepareExpr rather than going through the full planner process. By introducing an explicit notion of "expression planning", this patch also lays a bit of groundwork for maybe someday allowing sub-selects in standalone expressions.
Diffstat (limited to 'src/backend/optimizer/util/predtest.c')
-rw-r--r--src/backend/optimizer/util/predtest.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/backend/optimizer/util/predtest.c b/src/backend/optimizer/util/predtest.c
index 4bbcb2fe229..678f560978d 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.23 2009/01/01 17:23:45 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/optimizer/util/predtest.c,v 1.24 2009/01/09 15:46:10 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -22,6 +22,7 @@
#include "miscadmin.h"
#include "nodes/nodeFuncs.h"
#include "optimizer/clauses.h"
+#include "optimizer/planmain.h"
#include "optimizer/predtest.h"
#include "utils/array.h"
#include "utils/inval.h"
@@ -1405,8 +1406,11 @@ btree_predicate_proof(Expr *predicate, Node *clause, bool refute_it)
(Expr *) pred_const,
(Expr *) clause_const);
+ /* Fill in opfuncids */
+ fix_opfuncids((Node *) test_expr);
+
/* Prepare it for execution */
- test_exprstate = ExecPrepareExpr(test_expr, estate);
+ test_exprstate = ExecInitExpr(test_expr, NULL);
/* And execute it. */
test_result = ExecEvalExprSwitchContext(test_exprstate,