Search Postgresql Archives

Re: Argument casting hierarchy?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux