Thread

  1. Pretty printed trigger in psql

    Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp> — 2010-01-12T09:06:22Z

    Psql shows too many parentheses when it prints triggers with WHEN clause.
    
    postgres=# \d t1
          Table "public.t1"
     Column |  Type   | Modifiers
    --------+---------+-----------
     c1     | integer |
    Triggers:
        mytrig AFTER UPDATE ON t1 FOR EACH ROW
        WHEN ((old.c1 <> new.c1)) EXECUTE PROCEDURE myfunc()
              ^                ^
    
    The attached patch eliminates unneeded parentheses by using
    pg_get_triggerdef(pretty = true) in psql.
    
    Triggers:
        mytrig AFTER UPDATE ON t1 FOR EACH ROW
        WHEN (old.c1 <> new.c1) EXECUTE PROCEDURE myfunc()
    
    I think this change is harmless because we don't use
    pg_get_triggerdef(pretty = true) in any programs, including pg_dump.
    
    Is this change ok?
    
    Regards,
    ---
    Takahiro Itagaki
    NTT Open Source Software Center
    
  2. Re: Pretty printed trigger in psql

    Tom Lane <tgl@sss.pgh.pa.us> — 2010-01-14T04:08:54Z

    Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp> writes:
    > The attached patch eliminates unneeded parentheses by using
    > pg_get_triggerdef(pretty = true) in psql.
    
    Is this patch reversed?  It seems so but the listed file timestamps
    don't match that idea ...
    
    			regards, tom lane
    
    
  3. Re: Pretty printed trigger in psql

    Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp> — 2010-01-14T05:30:33Z

    Tom Lane <tgl@sss.pgh.pa.us> wrote:
    
    > Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp> writes:
    > > The attached patch eliminates unneeded parentheses by using
    > > pg_get_triggerdef(pretty = true) in psql.
    > 
    > Is this patch reversed?  It seems so but the listed file timestamps
    > don't match that idea ...
    
    Sorry, I cannot understand what you mean...
    
    My English might be broken. May I explain what I did again?
    
     1. psql has been used pg_get_triggerdef(oid).
    
     2. I added pg_get_triggerdef(oid, pretty = false) at the last commit fest
        for pg_dump to support dumping triggeres with WHEN cluase. In that time,
        PRETTYFLAG_PAREN and PRETTYFLAG_INDENT are used when pretty = true.
    
     3  psql still uses pg_get_triggerdef(oid [, pretty=false] ).
        Also, pg_dump should use (pretty=false) for safer migration.
        No programs use pg_get_triggerdef(pretty=true) is for now.
    
     4. psql will be better to use pg_get_triggerdef(oid, true) to display
        trigger definitions cleanly, but it also should print them in one line.
        For the purpose, the patch changes two things:
         - Modify psql to use pg_get_triggerdef(oid, true) when server version >= 8.5.
         - Remove PRETTYFLAG_INDENT from pg_get_triggerdef(). It will partially
           revert the changes in 2.
    
    Regards,
    ---
    Takahiro Itagaki
    NTT Open Source Software Center
    
    
    
    
  4. Re: Pretty printed trigger in psql

    Tom Lane <tgl@sss.pgh.pa.us> — 2010-01-14T05:52:10Z

    Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp> writes:
    > Tom Lane <tgl@sss.pgh.pa.us> wrote:
    >> Is this patch reversed?  It seems so but the listed file timestamps
    >> don't match that idea ...
    
    > Sorry, I cannot understand what you mean...
    
    The patch looks like it removes, rather than adds, your intended
    changes.
    
    			regards, tom lane
    
    
  5. Re: Pretty printed trigger in psql

    Brad T. Sliger <brad@sliger.org> — 2010-01-18T19:29:48Z

    On Tuesday 12 January 2010 01:06:22 Takahiro Itagaki wrote:
    > Psql shows too many parentheses when it prints triggers with WHEN clause.
    >
    > postgres=# \d t1
    >       Table "public.t1"
    >  Column |  Type   | Modifiers
    > --------+---------+-----------
    >  c1     | integer |
    > Triggers:
    >     mytrig AFTER UPDATE ON t1 FOR EACH ROW
    >     WHEN ((old.c1 <> new.c1)) EXECUTE PROCEDURE myfunc()
    >           ^                ^
    >
    > The attached patch eliminates unneeded parentheses by using
    > pg_get_triggerdef(pretty = true) in psql.
    >
    > Triggers:
    >     mytrig AFTER UPDATE ON t1 FOR EACH ROW
    >     WHEN (old.c1 <> new.c1) EXECUTE PROCEDURE myfunc()
    >
    > <snip>
    
    	Greetings,
    
    	I tried to apply this patch to the latest version of PostgreSQL in git (bbfc96e).  Some of the patch did not apply.  Please 
    find attached the output from patch.  The full path of the ruleutils.c.rej is src/backend/utils/adt/ruleutils.c.rej
    
    	Thanks,
    
    	--bts
    
  6. Re: Pretty printed trigger in psql

    Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp> — 2010-01-19T00:40:07Z

    "Brad T. Sliger" <brad@sliger.org> wrote:
    
    > I tried to apply this patch to the latest version of PostgreSQL in git
    > (bbfc96e).  Some of the patch did not apply.  Please find attached the
    > output from patch.  The full path of the ruleutils.c.rej is
    > src/backend/utils/adt/ruleutils.c.rej
    
    The attached patch is rebased to current CVS.
    
    Regards,
    ---
    Takahiro Itagaki
    NTT Open Source Software Center
    
    
  7. Re: Pretty printed trigger in psql

    Brad T. Sliger <brad@sliger.org> — 2010-01-19T05:41:47Z

    On Monday 18 January 2010 16:40:07 Takahiro Itagaki wrote:
    > "Brad T. Sliger" <brad@sliger.org> wrote:
    > > I tried to apply this patch to the latest version of PostgreSQL in git
    > > (bbfc96e).  Some of the patch did not apply.  Please find attached the
    > > output from patch.  The full path of the ruleutils.c.rej is
    > > src/backend/utils/adt/ruleutils.c.rej
    >
    > The attached patch is rebased to current CVS.
    
    	That patch applies, builds and installs.  `gmake check`  and `gmake distcheck` pass.  The code style looks fine and the 
    patch doesn't seem to add additional lint.
    
    	The patch does remove extra ()'s from trigger descriptions with \d in psql.
    
    	As far as I can tell, everything looks reasonable.
    
    > Regards,
    > ---
    > Takahiro Itagaki
    > NTT Open Source Software Center
    
    	Thanks,
    
    	--bts