* Copyright (c) 2002-2008, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/commands/prepare.c,v 1.92 2008/10/29 00:00:38 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/commands/prepare.c,v 1.93 2008/12/13 02:29:21 tgl Exp $
*
*-------------------------------------------------------------------------
*/
/* Rewrite the query. The result could be 0, 1, or many queries. */
query_list = QueryRewrite(query);
- /* Generate plans for queries. Snapshot is already set. */
- plan_list = pg_plan_queries(query_list, 0, NULL, false);
+ /* Generate plans for queries. */
+ plan_list = pg_plan_queries(query_list, 0, NULL);
/*
* Save the results.
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.201 2008/11/30 20:51:25 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.202 2008/12/13 02:29:21 tgl Exp $
*
*-------------------------------------------------------------------------
*/
/* Need a copyObject here to keep parser from modifying raw tree */
stmt_list = pg_analyze_and_rewrite(copyObject(parsetree),
src, argtypes, nargs);
- stmt_list = pg_plan_queries(stmt_list, cursor_options,
- boundParams, false);
+ stmt_list = pg_plan_queries(stmt_list, cursor_options, boundParams);
plansource = (CachedPlanSource *) palloc0(sizeof(CachedPlanSource));
cplan = (CachedPlan *) palloc0(sizeof(CachedPlan));
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.561 2008/12/13 02:00:19 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.562 2008/12/13 02:29:21 tgl Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
/*
* Generate plans for a list of already-rewritten queries.
*
- * If needSnapshot is TRUE, we haven't yet set a snapshot for the current
- * query. A snapshot must be set before invoking the planner, since it
- * might try to evaluate user-defined functions. But we must not set a
- * snapshot if the list contains only utility statements, because some
- * utility statements depend on not having frozen the snapshot yet.
- * (We assume that such statements cannot appear together with plannable
- * statements in the rewriter's output.)
- *
* Normal optimizable statements generate PlannedStmt entries in the result
* list. Utility statements are simply represented by their statement nodes.
*/
List *
-pg_plan_queries(List *querytrees, int cursorOptions, ParamListInfo boundParams,
- bool needSnapshot)
+pg_plan_queries(List *querytrees, int cursorOptions, ParamListInfo boundParams)
{
List *stmt_list = NIL;
ListCell *query_list;
- bool snapshot_set = false;
foreach(query_list, querytrees)
{
}
else
{
- if (needSnapshot && !snapshot_set)
- {
- PushActiveSnapshot(GetTransactionSnapshot());
- snapshot_set = true;
- }
-
- stmt = (Node *) pg_plan_query(query, cursorOptions,
- boundParams);
+ stmt = (Node *) pg_plan_query(query, cursorOptions, boundParams);
}
stmt_list = lappend(stmt_list, stmt);
}
- if (snapshot_set)
- PopActiveSnapshot();
-
return stmt_list;
}
querytree_list = pg_analyze_and_rewrite(parsetree, query_string,
NULL, 0);
- plantree_list = pg_plan_queries(querytree_list, 0, NULL, false);
+ plantree_list = pg_plan_queries(querytree_list, 0, NULL);
/* Done with the snapshot used for parsing/planning */
if (snapshot_set)
}
else
{
- stmt_list = pg_plan_queries(querytree_list, 0, NULL, false);
+ stmt_list = pg_plan_queries(querytree_list, 0, NULL);
fully_planned = true;
}
*/
oldContext = MemoryContextSwitchTo(PortalGetHeapMemory(portal));
query_list = copyObject(cplan->stmt_list);
- plan_list = pg_plan_queries(query_list, 0, params, false);
+ plan_list = pg_plan_queries(query_list, 0, params);
MemoryContextSwitchTo(oldContext);
/* We no longer need the cached plan refcount ... */
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/cache/plancache.c,v 1.24 2008/12/13 02:00:20 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/cache/plancache.c,v 1.25 2008/12/13 02:29:22 tgl Exp $
*
*-------------------------------------------------------------------------
*/
/*
* Generate plans for queries.
*/
- slist = pg_plan_queries(slist, plansource->cursor_options,
- NULL, false);
+ slist = pg_plan_queries(slist, plansource->cursor_options, NULL);
}
/*
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/tcop/tcopprot.h,v 1.95 2008/12/09 15:59:39 heikki Exp $
+ * $PostgreSQL: pgsql/src/include/tcop/tcopprot.h,v 1.96 2008/12/13 02:29:22 tgl Exp $
*
* OLD COMMENTS
* This file was created so that other c files could get the two
extern PlannedStmt *pg_plan_query(Query *querytree, int cursorOptions,
ParamListInfo boundParams);
extern List *pg_plan_queries(List *querytrees, int cursorOptions,
- ParamListInfo boundParams, bool needSnapshot);
+ ParamListInfo boundParams);
extern bool assign_max_stack_depth(int newval, bool doit, GucSource source);