What is it you're showing me exactly? The valid numeric types accepted (and cast) by both real and numerics?
On Mon, Jul 1, 2019 at 1:15 PM Adrian Klaver <adrian.kla...@aklaver.com> wrote: > On 7/1/19 12:18 PM, Wells Oliver wrote: > > Hi guys, hoping you can help clarify what the 'hierarchy' of casts might > > be in function arguments. > > > > Meaning I have the following two functions > > > > stats.foo1 (a bigint, b bigint) returns a/b::numeric > > > > stats.foo1 (a real, b real) returns a/b::numeric > > > > It's essentially the same function, but I thought I had to create two to > > accept the different types. > > > > However, when I call stats.foo1(3::smallint, 4::smallint) I receive the > old: > > > > ERROR: function stats.foo(smallint, smallint) is not unique > > > > Along w/ the message to explicitly cast. > > > > I am essentially trying to write one function that will cast "down", I > > guess, anything smaller than what's passed. I am guessing I only need > > the real/real argument signature, but I wanted some clarity from the > group. > > From the system catalogs, where float4 = real: > > select typname AS cast_target from pg_cast join pg_type on > pg_cast.casttarget = pg_type.oid where castsource = 'float4'::regtype; > cast_target > ------------- > int8 > int2 > int4 > float8 > numeric > > select typname AS cast_target from pg_cast join pg_type on > pg_cast.casttarget = pg_type.oid where castsource = 'numeric'::regtype; > cast_target > ------------- > int8 > int2 > int4 > float4 > float8 > money > numeric > (7 rows) > > > > > > > I appreciate it. > > > > -- > > Wells Oliver > > wells.oli...@gmail.com <mailto:wellsoli...@gmail.com> > > > -- > Adrian Klaver > adrian.kla...@aklaver.com > -- Wells Oliver wells.oli...@gmail.com <wellsoli...@gmail.com>