Re: WIP: RangeTypes - Mailing list pgsql-hackers

From Jeff Davis
Subject Re: WIP: RangeTypes
Date
Msg-id 1296669334.11513.843.camel@jdavis
Whole thread Raw
In response to Re: WIP: RangeTypes  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
On Sun, 2011-01-30 at 17:14 -0500, Tom Lane wrote:
> Jeff Davis <pgsql@j-davis.com> writes:
> > On Sun, 2011-01-30 at 02:55 +0000, Thom Brown wrote:
> >> postgres=# select '[18,20]'::numrange @> 19;
> >> ERROR:  operator does not exist: numrange @> integer
> >> LINE 1: select '[18,20]'::numrange @> 19;
> >> ^
> >> HINT:  No operator matches the given name and argument type(s). You
> >> might need to add explicit type casts.
> 
> > It's because it doesn't know the type on the right side, and assumes
> > it's an int4.
> 
> Well, yeah, it is an int4.  The question ought to be phrased "why does
> the parser fail to promote the int4 to numeric?".  There might be some
> excuse for an "operator is not unique" here, but I don't understand the
> above failure --- it should be able to use an implicit coercion from
> int4 to numeric.

The problem exists for arrays, as well, so I think this is just a
limitation of the type system.
  Regards,Jeff Davis

postgres=# select ARRAY[1.4,1.5,1.6]::numeric[] || 5.0;    ?column?      
-------------------{1.4,1.5,1.6,5.0}
(1 row)

postgres=# select ARRAY[1.4,1.5,1.6]::numeric[] || 5;
ERROR:  operator does not exist: numeric[] || integer
LINE 1: select ARRAY[1.4,1.5,1.6]::numeric[] || 5;                                            ^
HINT:  No operator matches the given name and argument type(s). You
might need to add explicit type casts.





pgsql-hackers by date:

Previous
From: "David E. Wheeler"
Date:
Subject: Re: ALTER EXTENSION UPGRADE, v3
Next
From: Dimitri Fontaine
Date:
Subject: Re: ALTER EXTENSION UPGRADE, v3