Re: Argument casting hierarchy? - Mailing list pgsql-general

From Wells Oliver
Subject Re: Argument casting hierarchy?
Date
Msg-id CAOC+FBUBf72TW0ERyr4rbexM9n990NNuJUSr0MENFz_dOapsiQ@mail.gmail.com
Whole thread Raw
In response to Re: Argument casting hierarchy?  (Adrian Klaver <adrian.klaver@aklaver.com>)
Responses Re: Argument casting hierarchy?  (Adrian Klaver <adrian.klaver@aklaver.com>)
List pgsql-general
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.klaver@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.oliver@gmail.com <mailto:wellsoliver@gmail.com>


--
Adrian Klaver
adrian.klaver@aklaver.com


--

pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: Argument casting hierarchy?
Next
From: Adrian Klaver
Date:
Subject: Re: Argument casting hierarchy?