]> granicus.if.org Git - postgresql/commitdiff
exec_parse_message neglected to copy parameter type array into the
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 29 Mar 2007 19:10:10 +0000 (19:10 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 29 Mar 2007 19:10:10 +0000 (19:10 +0000)
required memory context when handling client-specified parameter types
for an unnamed statement.  Per report from Kris Jurka.

src/backend/tcop/postgres.c

index 9f55ba2e387a2a3f5553d9d76c02a4f25759e161..bfcc271996e41e5299998f560e5378b722c64f39 100644 (file)
@@ -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,