Suppress coredump when EXPLAINing query that is rewritten to include
authorTom Lane
Sat, 27 Jan 2001 01:41:19 +0000 (01:41 +0000)
committerTom Lane
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);