Thread

  1. incompatible return type for netmask(inet) function between 7.0.3 and 7.1

    PostgreSQL Bugs List <pgsql-bugs@postgresql.org> — 2001-04-24T13:49:44Z

    Vadim Passynkov (pvi@axxent.ca) reports a bug with a severity of 4
    The lower the number the more severe it is.
    
    Short Description
    incompatible return type for netmask(inet) function between 7.0.3 and 7.1
    
    Long Description
    Function netmask(inet) change return type from 7.0.3 to 7.1
    In 7.0.3 return type was text, in 7.1 return type inet
    Realy in 7.1 added text(inet) and of course need that
    host and netmask have return type inet, but host in 7.1 still return
    text.
    
    Other problem this changes that dump code from 7.0.3 incompatible
    with 7.1.
    
    Sample Code
    Version 7.0.3
    template1=# \df netmask
           List of functions
     Result | Function | Arguments 
    --------+----------+-----------
     text   | netmask  | inet 
    (1 row)
    
    template1=# \df host   
           List of functions
     Result | Function | Arguments 
    --------+----------+-----------
     text   | host     | inet 
    (1 row)
    
    Version 7.1
    template1=# \df netmask
           List of functions
     Result | Function | Arguments 
    --------+----------+-----------
     inet   | netmask  | inet
    (1 row)
    
    template1=# \df host
           List of functions
     Result | Function | Arguments 
    --------+----------+-----------
     text   | host     | inet
    (1 row)
    
    
    No file was uploaded with this report
    
    
    
  2. Re: incompatible return type for netmask(inet) function between 7.0.3 and 7.1

    Justin Clift <justin@postgresql.org> — 2001-04-24T14:47:02Z

    Hi Vadim,
    
    I don't know if this is of any help, but it might be...
    
    With PostgreSQL 7.0.x, there was a bug with the way inet type data was
    being returned.  It was being given out as text, but with spaces used
    for padding stuck on the end of the string.
    
    i.e.  '192.168.1.1     '
    
    This was fixed in 7.1.
    
    i.e. '192.168.1.1'
    
    Depending on how you're doing things, you *might* be able to wrap stuff
    in a btrim() function for 7.0.x.
    
    i.e. btrim(<inet_field>) should return '192.168.1.1'
    
    Well, you get the idea.  Might be a start of a workaround for you
    anyway.
    
    Regards and best wishes,
    
    Justin Clift
    
    pgsql-bugs@postgresql.org wrote:
    > 
    > Vadim Passynkov (pvi@axxent.ca) reports a bug with a severity of 4
    > The lower the number the more severe it is.
    > 
    > Short Description
    > incompatible return type for netmask(inet) function between 7.0.3 and 7.1
    > 
    > Long Description
    > Function netmask(inet) change return type from 7.0.3 to 7.1
    > In 7.0.3 return type was text, in 7.1 return type inet
    > Realy in 7.1 added text(inet) and of course need that
    > host and netmask have return type inet, but host in 7.1 still return
    > text.
    > 
    > Other problem this changes that dump code from 7.0.3 incompatible
    > with 7.1.
    > 
    > Sample Code
    > Version 7.0.3
    > template1=# \df netmask
    >        List of functions
    >  Result | Function | Arguments
    > --------+----------+-----------
    >  text   | netmask  | inet
    > (1 row)
    > 
    > template1=# \df host
    >        List of functions
    >  Result | Function | Arguments
    > --------+----------+-----------
    >  text   | host     | inet
    > (1 row)
    > 
    > Version 7.1
    > template1=# \df netmask
    >        List of functions
    >  Result | Function | Arguments
    > --------+----------+-----------
    >  inet   | netmask  | inet
    > (1 row)
    > 
    > template1=# \df host
    >        List of functions
    >  Result | Function | Arguments
    > --------+----------+-----------
    >  text   | host     | inet
    > (1 row)
    > 
    > No file was uploaded with this report
    > 
    > ---------------------------(end of broadcast)---------------------------
    > TIP 2: you can get off all lists at once with the unregister command
    >     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
    
    -- 
    "My grandfather once told me that there are two kinds of people: those
    who work and those who take the credit. He told me to try to be in the
    first group; there was less competition there."
         - Indira Gandhi
    
    
  3. Re: incompatible return type for netmask(inet) function between 7.0.3 and 7.1

    Vadim I. Passynkov <pvi@axxent.ca> — 2001-04-24T15:49:55Z

    Justin Clift wrote:
    > 
    
    For 7.0.3 I already found solution for this problem, thanks.
    I ask now about why logical same functions host(inet) and netmask(inet)
    return different types ?
    
    > Hi Vadim,
    > 
    > I don't know if this is of any help, but it might be...
    > 
    > With PostgreSQL 7.0.x, there was a bug with the way inet type data was
    > being returned.  It was being given out as text, but with spaces used
    > for padding stuck on the end of the string.
    > 
    > i.e.  '192.168.1.1     '
    > 
    > This was fixed in 7.1.
    > 
    > i.e. '192.168.1.1'
    > 
    > Depending on how you're doing things, you *might* be able to wrap stuff
    > in a btrim() function for 7.0.x.
    > 
    > i.e. btrim(<inet_field>) should return '192.168.1.1'
    > 
    > Well, you get the idea.  Might be a start of a workaround for you
    > anyway.
    > 
    > Regards and best wishes,
    > 
    > Justin Clift
    > 
    > pgsql-bugs@postgresql.org wrote:
    > >
    > > Vadim Passynkov (pvi@axxent.ca) reports a bug with a severity of 4
    > > The lower the number the more severe it is.
    > >
    > > Short Description
    > > incompatible return type for netmask(inet) function between 7.0.3 and 7.1
    > >
    > > Long Description
    > > Function netmask(inet) change return type from 7.0.3 to 7.1
    > > In 7.0.3 return type was text, in 7.1 return type inet
    > > Realy in 7.1 added text(inet) and of course need that
    > > host and netmask have return type inet, but host in 7.1 still return
    > > text.
    > >
    > > Other problem this changes that dump code from 7.0.3 incompatible
    > > with 7.1.
    > >
    > > Sample Code
    > > Version 7.0.3
    > > template1=# \df netmask
    > >        List of functions
    > >  Result | Function | Arguments
    > > --------+----------+-----------
    > >  text   | netmask  | inet
    > > (1 row)
    > >
    > > template1=# \df host
    > >        List of functions
    > >  Result | Function | Arguments
    > > --------+----------+-----------
    > >  text   | host     | inet
    > > (1 row)
    > >
    > > Version 7.1
    > > template1=# \df netmask
    > >        List of functions
    > >  Result | Function | Arguments
    > > --------+----------+-----------
    > >  inet   | netmask  | inet
    > > (1 row)
    > >
    > > template1=# \df host
    > >        List of functions
    > >  Result | Function | Arguments
    > > --------+----------+-----------
    > >  text   | host     | inet
    > > (1 row)
    > >
    > > No file was uploaded with this report
    > >
    > > ---------------------------(end of broadcast)---------------------------
    > > TIP 2: you can get off all lists at once with the unregister command
    > >     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
    > 
    > --
    > "My grandfather once told me that there are two kinds of people: those
    > who work and those who take the credit. He told me to try to be in the
    > first group; there was less competition there."
    >      - Indira Gandhi
    
    -- 
    
     Vadim I. Passynkov, Axxent Corp.
     mailto:pvi@axxent.ca
    
    
  4. Re: incompatible return type for netmask(inet) function between 7.0.3 and 7.1

    Tom Lane <tgl@sss.pgh.pa.us> — 2001-04-25T16:02:32Z

    "Vadim I. Passynkov" <pvi@axxent.ca> writes:
    > I ask now about why logical same functions host(inet) and netmask(inet)
    > return different types ?
    
    There was a *long* discussion about this last year, and we concluded
    that was the right thing to do.  See the mail archives if you want the
    details --- but the key point is that host() text() and abbrev() are
    primarily useful to allow non-default display formatting of inet/cidr
    values, so they should produce text.  If they produced another inet
    value then they'd be unable to control how that value got formatted
    for display.
    
    			regards, tom lane