Re: Conditional NOTIFY is not implemented - Mailing list pgsql-bugs
From | Tom Lane |
---|---|
Subject | Re: Conditional NOTIFY is not implemented |
Date | |
Msg-id | 4583.999896296@sss.pgh.pa.us Whole thread Raw |
In response to | Re: Conditional NOTIFY is not implemented (Tom Lane <tgl@sss.pgh.pa.us>) |
List | pgsql-bugs |
I said: > Changing the rewriter to error out when it couldn't really Do The Right > Thing seemed like a good idea at the time, but now it seems clear that > this didn't do anything to enhance the usefulness of the system. Unless > someone objects, I'll change it back for 7.2. Not having seen any objections, I've committed the change. If you need a fix in place before 7.2, it's really a trivial change: just replace the elog calls (there are two) by "return". See attached patch against current sources. regards, tom lane *** /home/postgres/pgsql/src/backend/rewrite/rewriteManip.c.orig Wed Apr 18 16:42:55 2001 --- /home/postgres/pgsql/src/backend/rewrite/rewriteManip.c Fri Sep 7 16:52:31 2001 *************** *** 592,606 **** 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"); } --- 592,612 ---- if (parsetree->commandType == CMD_UTILITY) { /* ! * There's noplace to put the qual on a utility statement. ! * ! * If it's a NOTIFY, silently ignore the qual; this means that the ! * NOTIFY will execute, whether or not there are any qualifying rows. ! * While clearly wrong, this is much more useful than refusing to ! * execute the rule at all, and extra NOTIFY events are harmless for ! * typical uses of NOTIFY. * ! * If it isn't a NOTIFY, error out, since unconditional execution ! * of other utility stmts is unlikely to be wanted. (This case is ! * not currently allowed anyway, but keep the test for safety.) */ if (parsetree->utilityStmt && IsA(parsetree->utilityStmt, NotifyStmt)) ! return; else elog(ERROR, "Conditional utility statements are not implemented"); } *************** *** 634,648 **** 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"); } --- 640,652 ---- if (parsetree->commandType == CMD_UTILITY) { /* ! * There's noplace to put the qual on a utility statement. * ! * See comments in AddQual for motivation. */ if (parsetree->utilityStmt && IsA(parsetree->utilityStmt, NotifyStmt)) ! return; else elog(ERROR, "Conditional utility statements are not implemented"); }
pgsql-bugs by date: