mirror of
https://github.com/postgres/postgres.git
synced 2025-08-21 10:42:50 +03: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:
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* NOTES
|
||||||
* this is the "main" module of the postgres backend and
|
* this is the "main" module of the postgres backend and
|
||||||
@@ -1294,6 +1294,7 @@ exec_bind_message(StringInfo input_message)
|
|||||||
PreparedStatement *pstmt;
|
PreparedStatement *pstmt;
|
||||||
Portal portal;
|
Portal portal;
|
||||||
ParamListInfo params;
|
ParamListInfo params;
|
||||||
|
List *query_list;
|
||||||
List *plan_list;
|
List *plan_list;
|
||||||
MemoryContext qContext;
|
MemoryContext qContext;
|
||||||
bool save_log_statement_stats = log_statement_stats;
|
bool save_log_statement_stats = log_statement_stats;
|
||||||
@@ -1572,13 +1573,13 @@ exec_bind_message(StringInfo input_message)
|
|||||||
|
|
||||||
qContext = PortalGetHeapMemory(portal);
|
qContext = PortalGetHeapMemory(portal);
|
||||||
oldContext = MemoryContextSwitchTo(qContext);
|
oldContext = MemoryContextSwitchTo(qContext);
|
||||||
plan_list = pg_plan_queries(copyObject(pstmt->query_list),
|
query_list = copyObject(pstmt->query_list);
|
||||||
params,
|
plan_list = pg_plan_queries(query_list, params, true);
|
||||||
true);
|
|
||||||
MemoryContextSwitchTo(oldContext);
|
MemoryContextSwitchTo(oldContext);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
query_list = pstmt->query_list;
|
||||||
plan_list = pstmt->plan_list;
|
plan_list = pstmt->plan_list;
|
||||||
qContext = pstmt->context;
|
qContext = pstmt->context;
|
||||||
}
|
}
|
||||||
@@ -1590,7 +1591,7 @@ exec_bind_message(StringInfo input_message)
|
|||||||
*pstmt->stmt_name ? pstmt->stmt_name : NULL,
|
*pstmt->stmt_name ? pstmt->stmt_name : NULL,
|
||||||
pstmt->query_string,
|
pstmt->query_string,
|
||||||
pstmt->commandTag,
|
pstmt->commandTag,
|
||||||
pstmt->query_list,
|
query_list,
|
||||||
plan_list,
|
plan_list,
|
||||||
qContext);
|
qContext);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user