mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-07 19:47:50 +08:00
When planning a query at Bind time, be careful to pass the correct
query_list into the Portal, ie, the one seen and possibly modified by the planner. My fault :-( Per report from Sergey Koposov.
This commit is contained in:
parent
71a6f8b85b
commit
dc9142f406
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.512 2006/10/07 19:25:28 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.513 2006/10/07 20:16:57 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* this is the "main" module of the postgres backend and
|
||||
@ -1294,6 +1294,7 @@ exec_bind_message(StringInfo input_message)
|
||||
PreparedStatement *pstmt;
|
||||
Portal portal;
|
||||
ParamListInfo params;
|
||||
List *query_list;
|
||||
List *plan_list;
|
||||
MemoryContext qContext;
|
||||
bool save_log_statement_stats = log_statement_stats;
|
||||
@ -1572,13 +1573,13 @@ exec_bind_message(StringInfo input_message)
|
||||
|
||||
qContext = PortalGetHeapMemory(portal);
|
||||
oldContext = MemoryContextSwitchTo(qContext);
|
||||
plan_list = pg_plan_queries(copyObject(pstmt->query_list),
|
||||
params,
|
||||
true);
|
||||
query_list = copyObject(pstmt->query_list);
|
||||
plan_list = pg_plan_queries(query_list, params, true);
|
||||
MemoryContextSwitchTo(oldContext);
|
||||
}
|
||||
else
|
||||
{
|
||||
query_list = pstmt->query_list;
|
||||
plan_list = pstmt->plan_list;
|
||||
qContext = pstmt->context;
|
||||
}
|
||||
@ -1590,7 +1591,7 @@ exec_bind_message(StringInfo input_message)
|
||||
*pstmt->stmt_name ? pstmt->stmt_name : NULL,
|
||||
pstmt->query_string,
|
||||
pstmt->commandTag,
|
||||
pstmt->query_list,
|
||||
query_list,
|
||||
plan_list,
|
||||
qContext);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user