Thread: 1.0 in function call not regarded as REAL in 7.3.2
Hi! I've triggered a type related problem in postgresql-7.3.2-3 It worked in postgresql-7.2.3-5.80. CREATE OR REPLACE FUNCTION _rmin(REAL, REAL) RETURNS REAL AS ' BEGIN IF $1 <= $2 THEN RETURN $1; ELSE RETURN $2; END IF; END; ' LANGUAGE 'plpgsql' WITH (ISCACHABLE); This works: SELECT _rmin(1.0, CAST(123 AS REAL)); _rmin ------- 1 (1 Zeile) This not: SELECT _rmin(1.0, CAST(123 AS REAL)/25); ERROR: Funktion _rmin(numeric, double precision) existiert nicht Unable to identify a function that satisfies the given argument types You may need to add explicit typecasts Look closely: postmaster now thinks that the first argument 1.0 is NUMERIC, but I added only the /25 for the _second_ argument! cu, boris -- Dipl.-Inf. Boris Folgmann mailto:boris@folgmann.de TeamForge GmbH http://www.teamforge.de
Boris Folgmann <misc@folgmann.com> writes: > Look closely: postmaster now thinks that the first argument 1.0 is NUMERIC, Yup. This is not a bug, it's intentional (and per SQL spec, AFAICT). Your problem is that 123::real/25 yields a double precision result, which is not implicitly castable to real anymore. I'd suggest switching the function arguments to double precision. regards, tom lane