]> granicus.if.org Git - postgresql/commitdiff
Refuse to try to attach a condition to a NOTIFY or other utility statement,
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 27 Jan 2001 01:44:20 +0000 (01:44 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 27 Jan 2001 01:44:20 +0000 (01:44 +0000)
rather than coredumping (as prior 7.1 code did) or silently dropping the
condition (as 7.0 did).  This is annoying but there doesn't seem to be
any good way to fix it, short of a major querytree restructuring.

src/backend/rewrite/rewriteManip.c

index 072204167f864ac3243507299bd141d036fafeb3..d83dafa3c63a53845bbf9bc0b202dfff2daf595e 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.54 2001/01/24 19:43:05 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.55 2001/01/27 01:44:20 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -589,6 +589,20 @@ AddQual(Query *parsetree, Node *qual)
        if (qual == NULL)
                return;
 
+       if (parsetree->commandType == CMD_UTILITY)
+       {
+               /*
+                * Noplace to put the qual on a utility statement.
+                *
+                * For now, we expect utility stmt to be a NOTIFY, so give a
+                * specific error message for that case.
+                */
+               if (parsetree->utilityStmt && IsA(parsetree->utilityStmt, NotifyStmt))
+                       elog(ERROR, "Conditional NOTIFY is not implemented");
+               else
+                       elog(ERROR, "Conditional utility statements are not implemented");
+       }
+
        /* INTERSECT want's the original, but we need to copy - Jan */
        copy = copyObject(qual);
 
@@ -616,6 +630,20 @@ AddHavingQual(Query *parsetree, Node *havingQual)
        if (havingQual == NULL)
                return;
 
+       if (parsetree->commandType == CMD_UTILITY)
+       {
+               /*
+                * Noplace to put the qual on a utility statement.
+                *
+                * For now, we expect utility stmt to be a NOTIFY, so give a
+                * specific error message for that case.
+                */
+               if (parsetree->utilityStmt && IsA(parsetree->utilityStmt, NotifyStmt))
+                       elog(ERROR, "Conditional NOTIFY is not implemented");
+               else
+                       elog(ERROR, "Conditional utility statements are not implemented");
+       }
+
        /* INTERSECT want's the original, but we need to copy - Jan */
        copy = copyObject(havingQual);