Thread

Commits

  1. Fix format_type() to restore its old behavior.

  2. Refactor format_type APIs to be more modular

  1. change in behaviour for format_type() call

    Rushabh Lathia <rushabh.lathia@gmail.com> — 2018-03-01T10:16:12Z

    Commit a26116c6cbf4117e8efaa7cfc5bacc887f01517f changed the behaviour
    for format_type.
    
    Prior to commit, format_type() used to set typemod_given to false for
    typemode = NULL.
    
    format_type()
    ..
    if (PG_ARGISNULL(1))
    result = format_type_internal(type_oid, -1, false, true, false);
    else
    {
    typemod = PG_GETARG_INT32(1);
    result = format_type_internal(type_oid, typemod, true, true, false);
    }
    ..
    
    With the commit format_type() always set the FORMAT_TYPE_TYPEMOD_GIVEN
    flag even when typemode is NULL (-1).
    
    Below are the difference it's making to the query output:
    
    Before commit:
    
    postgres@95320=#select format_type('bpchar'::regtype, null);
     format_type
    -------------
     character
    (1 row)
    
    postgres@95320=#select format_type('bit'::regtype, null);
     format_type
    -------------
     bit
    (1 row)
    
    After commit:
    
    postgres@90169=#select format_type('bpchar'::regtype, null);
     format_type
    -------------
     bpchar
    (1 row)
    
    postgres@90169=#select format_type('bit'::regtype, null);
     format_type
    -------------
     "bit"
    (1 row)
    
    Is this expected behaviour? attaching patch to get back the older
    behaviour.
    
    Thanks,
    
    
    Regards,
    Rushabh Lathia
    www.EnterpriseDB.com
    
  2. Re: change in behaviour for format_type() call

    Tom Lane <tgl@sss.pgh.pa.us> — 2018-03-01T15:49:44Z

    Rushabh Lathia <rushabh.lathia@gmail.com> writes:
    > Commit a26116c6cbf4117e8efaa7cfc5bacc887f01517f changed the behaviour
    > for format_type.
    > ...
    > Is this expected behaviour? attaching patch to get back the older
    > behaviour.
    
    I don't see anything in the commit message or linked discussion to
    indicate that any visible behavior change was intended, so I think
    you're right, this is a bug.  Will check and push your patch.
    
    			regards, tom lane
    
    
    
  3. Re: change in behaviour for format_type() call

    Tom Lane <tgl@sss.pgh.pa.us> — 2018-03-01T16:40:07Z

    I wrote:
    > I don't see anything in the commit message or linked discussion to
    > indicate that any visible behavior change was intended, so I think
    > you're right, this is a bug.  Will check and push your patch.
    
    Actually, this patch still wasn't quite right: although it fixed
    one aspect of the behavior, it still produced identical results
    for typemod NULL and typemod -1, which as the function's comment
    explains is not what should happen.  I tweaked the logic to look
    as much as possible like before, and added a regression test.
    
    			regards, tom lane
    
    
    
  4. Re: change in behaviour for format_type() call

    Alvaro Herrera <alvherre@alvh.no-ip.org> — 2018-03-01T17:54:22Z

    Tom Lane wrote:
    > I wrote:
    > > I don't see anything in the commit message or linked discussion to
    > > indicate that any visible behavior change was intended, so I think
    > > you're right, this is a bug.  Will check and push your patch.
    > 
    > Actually, this patch still wasn't quite right: although it fixed
    > one aspect of the behavior, it still produced identical results
    > for typemod NULL and typemod -1, which as the function's comment
    > explains is not what should happen.  I tweaked the logic to look
    > as much as possible like before, and added a regression test.
    
    Thanks!
    
    -- 
    Álvaro Herrera                https://www.2ndQuadrant.com/
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
    
    
    
  5. Re: change in behaviour for format_type() call

    Michael Paquier <michael@paquier.xyz> — 2018-03-02T04:01:19Z

    On Thu, Mar 01, 2018 at 02:54:22PM -0300, Alvaro Herrera wrote:
    > Tom Lane wrote:
    >> Actually, this patch still wasn't quite right: although it fixed
    >> one aspect of the behavior, it still produced identical results
    >> for typemod NULL and typemod -1, which as the function's comment
    >> explains is not what should happen.  I tweaked the logic to look
    >> as much as possible like before, and added a regression test.
    > 
    > Thanks!
    
    Thanks Tom.  Yes, we focused on not changing any existing behavior with
    this patch.  So this report was a bug.
    --
    Michael
    
  6. Re: change in behaviour for format_type() call

    Rushabh Lathia <rushabh.lathia@gmail.com> — 2018-03-02T05:10:55Z

    On Thu, Mar 1, 2018 at 10:10 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
    
    > I wrote:
    > > I don't see anything in the commit message or linked discussion to
    > > indicate that any visible behavior change was intended, so I think
    > > you're right, this is a bug.  Will check and push your patch.
    >
    > Actually, this patch still wasn't quite right: although it fixed
    > one aspect of the behavior, it still produced identical results
    > for typemod NULL and typemod -1, which as the function's comment
    > explains is not what should happen.  I tweaked the logic to look
    > as much as possible like before, and added a regression test.
    >
    
    Thanks Tom.
    
    
    Regards,
    Rushabh Lathia
    www.EnterpriseDB.com