diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 9f55ba2e387a2a3f5553d9d76c02a4f25759e161..bfcc271996e41e5299998f560e5378b722c64f39 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -8,7 +8,7 @@ * * * 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 * 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 { - /* 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, pstrdup(query_string), commandTag, - paramTypes, + newParamTypes, numParams, stmt_list, fully_planned,