| From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> | 
|---|---|
| To: | Wells Oliver <wells(dot)oliver(at)gmail(dot)com>, pgsql-general(at)lists(dot)postgresql(dot)org | 
| Subject: | Re: Argument casting hierarchy? | 
| Date: | 2019-07-01 20:15:38 | 
| Message-ID: | 62454612-6eed-de1e-45a6-23943b42d82d@aklaver.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-general | 
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(dot)oliver(at)gmail(dot)com <mailto:wellsoliver(at)gmail(dot)com>
-- 
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Wells Oliver | 2019-07-01 20:18:28 | Re: Argument casting hierarchy? | 
| Previous Message | Adrian Klaver | 2019-07-01 19:43:01 | Re: Statistics tables not being updated anymore |