Thread

  1. suggestion: fix 'now' -> CURRENT_TIMESTAMP

    Mark Stosberg <mark@summersault.com> — 2005-09-23T14:40:54Z

    Hello,
    
    I'm in the process of migrating dozens of databases from 7.1 to 8.0.
    It's been a great opportunity to become familiar with all the things
    that have changed in the meantime.
    
    Of of those things is the meaning 'now', as documented in the 7.4
    release notes:
    http://www.postgresql.org/docs/8.0/interactive/release-7-4.html
    ( Search for 'now' on the page to find the related docs. ).
    
    When dumping from 7.1 and restoring into 8.0, working code is being
    created in the cases I'm looking at, because these construct is put in
    the dump file, and then imported verbatim:
    
      date("timestamp"('now'::text))
      "timestamp"('now'::text)
    
    This these mean the exact same thing as:
    
        CURRENT_DATE
        CURRENT_TIMESTAMP
    
    ( But not the same thing as a bare 'now' ).
    
    Why not make the translation on the fly, since using 'now' and
    timestamp() are not recommended practices anyway ?
    
    I have seen that PostgreSQL has already taken the liberty to rewrite
    "serial" and other schema constructions when they are dumped or
    imported, so I see no problem with rewriting code to equivalent, but
    better style.
    
    For now I'm doing find & replace on the dump files as a workaround.
    
        Mark
    
    
    
  2. Re: suggestion: fix 'now' -> CURRENT_TIMESTAMP

    Tom Lane <tgl@sss.pgh.pa.us> — 2005-09-23T21:28:30Z

    Mark Stosberg <mark@summersault.com> writes:
    > Why not make the translation on the fly, since using 'now' and
    > timestamp() are not recommended practices anyway ?
    
    Because we can't retroactively fix 7.1.
    
    			regards, tom lane
    
    
  3. Re: suggestion: fix 'now' -> CURRENT_TIMESTAMP

    Mark Stosberg <mark@summersault.com> — 2005-09-23T21:42:02Z

    On 2005-09-23, Tom Lane <tgl@sss.pgh.pa.us> wrote:
    > Mark Stosberg <mark@summersault.com> writes:
    >> Why not make the translation on the fly, since using 'now' and
    >> timestamp() are not recommended practices anyway ?
    >
    > Because we can't retroactively fix 7.1.
    
    That fact hadn't escaped me. 
    
    I was thinking that in *8*.1, the parsing of "CREATE TABLE" could be
    altered to recognize the old syntax and improve it on the fly.
    
    Since the meaning is identical, it seems like a reasonable improvement
    to me.
    
    This kind of rewriting is apparently already happening, because when I declare
    a column as "serial", it's immediately translated into a different
    representation. 
    
    test=# create table t (c1 serial);
    test=# \d t
                               Table "public.t"
     Column |  Type   |                     Modifiers
    --------+---------+---------------------------------------------------
     c1     | integer | not null default nextval('public.t_c1_seq'::text)
    
    
        Mark