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 <adrian.klaver@xxxxxxxxxxx
<mailto:adrian.klaver@xxxxxxxxxxx>> 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.oliver@xxxxxxxxx <mailto:wells.oliver@xxxxxxxxx>
<mailto:wellsoliver@xxxxxxxxx <mailto:wellsoliver@xxxxxxxxx>>
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx <mailto:adrian.klaver@xxxxxxxxxxx>
--
Wells Oliver
wells.oliver@xxxxxxxxx <mailto:wellsoliver@xxxxxxxxx>
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx