On 7/1/19 1:18 PM, Wells Oliver wrote:
What is it you're showing me exactly? The valid numeric types accepted (and cast) by both real and numerics?
That there is builtin casting for a source of either float4 or numeric to the types listed respectively and that numeric offers more choices. Might help you decide on which type you want to use for a single function.
On Mon, Jul 1, 2019 at 1:15 PM Adrian Klaver <[email protected] <mailto:[email protected]>> 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 > [email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>-- Adrian Klaver[email protected] <mailto:[email protected]> -- Wells Oliver [email protected] <mailto:[email protected]>
-- Adrian Klaver [email protected]
