]> granicus.if.org Git - postgresql/commitdiff
When planning a query at Bind time, be careful to pass the correct
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 7 Oct 2006 20:16:57 +0000 (20:16 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 7 Oct 2006 20:16:57 +0000 (20:16 +0000)
query_list into the Portal, ie, the one seen and possibly modified by
the planner.  My fault :-(  Per report from Sergey Koposov.

src/backend/tcop/postgres.c

index ee63220d956a6b2e31ef94655fdfdc47d38bda98..e22445b4745b5dc9d5b31909632b0672dc77e415 100644 (file)
@@ -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);