diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2006-09-06 20:40:48 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2006-09-06 20:40:48 +0000 |
| commit | 5983a1aaa9137367c834e0ff84cd8d4d48b326b2 (patch) | |
| tree | 3425eaf290ad8ee4d565551d45e60df514f67e55 /src/backend/commands | |
| parent | 389870b256bc65f088a7f9a4ea4a88c01242c551 (diff) | |
| download | postgresql-5983a1aaa9137367c834e0ff84cd8d4d48b326b2.tar.gz | |
Change processing of extended-Query mode so that an unnamed statement
that has parameters is always planned afresh for each Bind command,
treating the parameter values as constants in the planner. This removes
the performance penalty formerly often paid for using out-of-line
parameters --- with this definition, the planner can do constant folding,
LIKE optimization, etc. After a suggestion by Andrew@supernews.
Diffstat (limited to 'src/backend/commands')
| -rw-r--r-- | src/backend/commands/explain.c | 4 | ||||
| -rw-r--r-- | src/backend/commands/portalcmds.c | 4 | ||||
| -rw-r--r-- | src/backend/commands/prepare.c | 3 |
3 files changed, 6 insertions, 5 deletions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 5787aa413e..48db000ea9 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994-5, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/explain.c,v 1.150 2006/08/02 01:59:45 joe Exp $ + * $PostgreSQL: pgsql/src/backend/commands/explain.c,v 1.151 2006/09/06 20:40:47 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -191,7 +191,7 @@ ExplainOneQuery(Query *query, ExplainStmt *stmt, ParamListInfo params, } /* plan the query */ - plan = planner(query, isCursor, cursorOptions, NULL); + plan = planner(query, isCursor, cursorOptions, params); /* * Update snapshot command ID to ensure this query sees results of any diff --git a/src/backend/commands/portalcmds.c b/src/backend/commands/portalcmds.c index 00ad5444ca..e418fabfc5 100644 --- a/src/backend/commands/portalcmds.c +++ b/src/backend/commands/portalcmds.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/portalcmds.c,v 1.53 2006/09/03 03:19:44 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/portalcmds.c,v 1.54 2006/09/06 20:40:47 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -95,7 +95,7 @@ PerformCursorOpen(DeclareCursorStmt *stmt, ParamListInfo params) errmsg("DECLARE CURSOR ... FOR UPDATE/SHARE is not supported"), errdetail("Cursors must be READ ONLY."))); - plan = planner(query, true, stmt->options, NULL); + plan = planner(query, true, stmt->options, params); /* * Create a portal and copy the query and plan into its memory context. diff --git a/src/backend/commands/prepare.c b/src/backend/commands/prepare.c index 04445cd33e..dc26430671 100644 --- a/src/backend/commands/prepare.c +++ b/src/backend/commands/prepare.c @@ -10,7 +10,7 @@ * Copyright (c) 2002-2006, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/prepare.c,v 1.62 2006/08/29 02:11:29 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/prepare.c,v 1.63 2006/09/06 20:40:47 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -261,6 +261,7 @@ EvaluateParams(EState *estate, List *params, List *argtypes) ParamExternData *prm = ¶mLI->params[i]; prm->ptype = lfirst_oid(la); + prm->pflags = 0; prm->value = ExecEvalExprSwitchContext(n, GetPerTupleExprContext(estate), &prm->isnull, |
