Prevent EXPLAIN (without ANALYZE) SELECT ... INTO from creating an INTO
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 3 Apr 2003 22:35:48 +0000 (22:35 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 3 Apr 2003 22:35:48 +0000 (22:35 +0000)
table.  Needed due to recent change that makes us call ExecutorStart
even when not planning to carry out the query.

src/backend/commands/explain.c

index 11425620e6b22974dc135fa23a3e8774a69e9b62..09d422f85c055259782c3f1eca4be836491ed4f3 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994-5, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.104 2003/03/10 03:53:49 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.105 2003/04/03 22:35:48 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -193,6 +193,14 @@ ExplainOnePlan(QueryDesc *queryDesc, ExplainStmt *stmt,
    ExplainState *es;
    StringInfo  str;
 
+   /*
+    * If we are not going to execute, suppress any SELECT INTO marker.
+    * Without this, ExecutorStart will create the INTO target table,
+    * which we don't want.
+    */
+   if (!stmt->analyze)
+       queryDesc->parsetree->into = NULL;
+
    gettimeofday(&starttime, NULL);
 
    /* call ExecutorStart to prepare the plan for execution */