| From: | "pgAdmin Trac" <trac(at)code(dot)pgadmin(dot)org> | 
|---|---|
| To: | |
| Cc: | pgadmin-hackers(at)postgresql(dot)org | 
| Subject: | [pgAdmin III] #332: SQL for TRIGGER with WHEN clause broken | 
| Date: | 2011-08-12 18:06:13 | 
| Message-ID: | 045.3cfa2936adf6ceda81194cc1fd04feed@code.pgadmin.org | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgadmin-hackers | 
#332: SQL for TRIGGER with WHEN clause broken
----------------------+-----------------------------------------------------
 Reporter:  brsa      |       Owner:  dpage
     Type:  bug       |      Status:  new  
 Priority:  minor     |   Milestone:       
Component:  pgadmin   |     Version:  trunk
 Keywords:  SQL pane  |    Platform:  all  
----------------------+-----------------------------------------------------
 Brackets around the WHEN condition are missing or unmatched in the SQL
 pane. (See ticket #98)
 pg feature applies to postgresql 9.0+
 Tested with pgAdmin 1.14.0 Beta 3 on Win XP; pg 9.0.4 on Debian Squeeze.
 Docs:
 http://www.postgresql.org/docs/9.0/interactive/sql-createtrigger.html
-- Test case --
CREATE TABLE foo(a serial, b text, c text, d text);
 CREATE OR REPLACE FUNCTION trg_foo_upaft() RETURNS trigger AS
 $BODY$
 BEGIN
 -- do something
 RETURN NEW;
 END;
 $BODY$  LANGUAGE plpgsql VOLATILE;
 -- Test 1.)
 -- I say:
 -- DROP TRIGGER up_aft ON foo;
 CREATE TRIGGER up_aft
   AFTER UPDATE
   ON foo
   FOR EACH ROW
   WHEN ((old.b, old.c, old.d) <> (new.b, new.c, new.d))
   EXECUTE PROCEDURE trg_foo_upaft();
 --> pgAdmin says:
 CREATE TRIGGER up_aft
   AFTER UPDATE
   ON foo
   FOR EACH ROW
   WHEN (old.b <> new.b) OR (old.c <> new.c) OR (old.d <> new.d)
   EXECUTE PROCEDURE trg_foo_upaft();
 --! no enclosing brackets !
 -- Test 2.)
 -- I say:
 -- DROP TRIGGER up_aft ON foo;
 CREATE TRIGGER up_aft
   AFTER UPDATE
   ON foo
   FOR EACH ROW
   WHEN ((old.b <> new.b) OR (old.c <> new.c) OR (old.d <> new.d))
   EXECUTE PROCEDURE trg_foo_upaft();
 --> pgAdmin says:
 CREATE TRIGGER up_aft
   AFTER UPDATE
   ON foo
   FOR EACH ROW
   WHEN (old.b <> new.b) OR (old.c <> new.c)) OR (old.d <> new.d)
   EXECUTE PROCEDURE trg_foo_upaft();
 --! unmatched bracket and missing enclosing brackets !
-- 
Ticket URL: <http://code.pgadmin.org/trac/ticket/332>
pgAdmin III <http://code.pgadmin.org/trac/>
pgAdmin III
| From | Date | Subject | |
|---|---|---|---|
| Next Message | pgAdmin Trac | 2011-08-12 18:23:37 | Re: [pgAdmin III] #332: SQL for TRIGGER with WHEN clause broken | 
| Previous Message | Magnus Hagander | 2011-08-12 11:51:04 | Re: Weird git messages |