Re: Argument casting hierarchy? - Mailing list pgsql-general
From | Adrian Klaver |
---|---|
Subject | Re: Argument casting hierarchy? |
Date | |
Msg-id | 541ea689-9aa2-30c5-f504-441bb85bbe26@aklaver.com Whole thread Raw |
In response to | Re: Argument casting hierarchy? (Wells Oliver <wells.oliver@gmail.com>) |
List | pgsql-general |
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@aklaver.com > <mailto: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:wells.oliver@gmail.com> > <mailto:wellsoliver@gmail.com <mailto:wellsoliver@gmail.com>> > > > -- > Adrian Klaver > adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com> > > > > -- > Wells Oliver > wells.oliver@gmail.com <mailto:wellsoliver@gmail.com> -- Adrian Klaver adrian.klaver@aklaver.com
pgsql-general by date: