While looking at this I also noticed that DECLARE CURSOR uses a structure that's randomly different in yet a third way: we start with a utility statement containing a query, and then flip that upside down so that the SELECT Query contains a utility statement!
I have a vague feeling that I'm the one who's guilty of that hack, too. I'm not sure that anybody cares about being able to fire command triggers on DECLARE CURSOR, but just from a consistency standpoint it would make sense for this to work more like EXPLAIN and CREATE TABLE AS. So that convinces me that UtilityContainsQuery() would be a good thing, and I'll add that to the patch. (Actually changing DECLARE CURSOR seems like a separate patch, though.) regards, tom lane -- Sent via pgsql-hackers mailing list (firstname.lastname@example.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers