]> granicus.if.org Git - postgresql/commitdiff
Suppress coredump when EXPLAINing query that is rewritten to include
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 27 Jan 2001 01:41:19 +0000 (01:41 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 27 Jan 2001 01:41:19 +0000 (01:41 +0000)
a NOTIFY.

src/backend/commands/explain.c

index 5ad981c6421b94e680abdd71fb45705252a0f810..31f24d88a6fda2a350dc72c8f581c1ec07c6f297 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994-5, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.63 2001/01/24 19:42:52 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.64 2001/01/27 01:41:19 tgl Exp $
  *
  */
 
@@ -54,7 +54,7 @@ ExplainQuery(Query *query, bool verbose, CommandDest dest)
                return;
        }
 
-       /* rewriter and planner will not cope with utility statements */
+       /* rewriter will not cope with utility statements */
        if (query->commandType == CMD_UTILITY)
        {
                elog(NOTICE, "Utility statements have no plan structure");
@@ -88,6 +88,16 @@ ExplainOneQuery(Query *query, bool verbose, CommandDest dest)
        Plan       *plan;
        ExplainState *es;
 
+       /* planner will not cope with utility statements */
+       if (query->commandType == CMD_UTILITY)
+       {
+               if (query->utilityStmt && IsA(query->utilityStmt, NotifyStmt))
+                       elog(NOTICE, "QUERY PLAN:\n\nNOTIFY\n");
+               else
+                       elog(NOTICE, "QUERY PLAN:\n\nUTILITY\n");
+               return;
+       }
+
        /* plan the query */
        plan = planner(query);