mirror of
https://github.com/postgres/postgres.git
synced 2025-06-11 20:28:21 +03:00
exec_parse_message neglected to copy parameter type array into the
required memory context when handling client-specified parameter types for an unnamed statement. Per report from Kris Jurka.
This commit is contained in:
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.529 2007/03/22 19:55:04 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.530 2007/03/29 19:10:10 tgl Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* this is the "main" module of the postgres backend and
|
* this is the "main" module of the postgres backend and
|
||||||
@ -1239,12 +1239,24 @@ exec_parse_message(const char *query_string, /* string to execute */
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* query_string needs to be copied into unnamed_stmt_context */
|
/*
|
||||||
/* the rest is there already */
|
* paramTypes and query_string need to be copied into
|
||||||
|
* unnamed_stmt_context. The rest is there already
|
||||||
|
*/
|
||||||
|
Oid *newParamTypes;
|
||||||
|
|
||||||
|
if (numParams > 0)
|
||||||
|
{
|
||||||
|
newParamTypes = (Oid *) palloc(numParams * sizeof(Oid));
|
||||||
|
memcpy(newParamTypes, paramTypes, numParams * sizeof(Oid));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
newParamTypes = NULL;
|
||||||
|
|
||||||
unnamed_stmt_psrc = FastCreateCachedPlan(raw_parse_tree,
|
unnamed_stmt_psrc = FastCreateCachedPlan(raw_parse_tree,
|
||||||
pstrdup(query_string),
|
pstrdup(query_string),
|
||||||
commandTag,
|
commandTag,
|
||||||
paramTypes,
|
newParamTypes,
|
||||||
numParams,
|
numParams,
|
||||||
stmt_list,
|
stmt_list,
|
||||||
fully_planned,
|
fully_planned,
|
||||||
|
Reference in New Issue
Block a user