Re: plpgsql: numeric assignment to an integer variable errors out

Поиск
Список
Период
Сортировка
От Nikhil Sontakke
Тема Re: plpgsql: numeric assignment to an integer variable errors out
Дата
Msg-id a301bfd90812290702p50271226j75e0da1e1b7432ab@mail.gmail.com
обсуждение исходный текст
Ответ на plpgsql: numeric assignment to an integer variable errors out  ("Nikhil Sontakke" <nikhil.sontakke@enterprisedb.com>)
Ответы Re: plpgsql: numeric assignment to an integer variable errors out  ("Pavel Stehule" <pavel.stehule@gmail.com>)
Re: plpgsql: numeric assignment to an integer variable errors out  (Bruce Momjian <bruce@momjian.us>)
Список pgsql-hackers
Hi,

<nikhil.sontakke@enterprisedb.com> wrote:
The following plpgsql function errors out with cvs head:

CREATE function test_assign() returns void
AS
$$ declare x int;
BEGIN
x := 9E3/2;
END
$$ LANGUAGE 'plpgsql';

postgres=# select test_assign();
ERROR:  invalid input syntax for integer: "4500.0000000000000000"
CONTEXT:  PL/pgSQL function "test_assign" line 3 at assignment

We do have an existing cast from numeric to type integer. But here basically we convert the value to string in exec_cast_value before calling int4in. And then use of strtol in pg_atoi leads to this complaint. Guess converting the value to string is not always a good strategy.

PFA, patch which uses find_coercion_pathway to find a direct COERCION_PATH_FUNC function and uses that if it is available. Or is there a better approach? Seems to handle the above issue with this patch. 

Regards,
Nikhils
--
http://www.enterprisedb.com
Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: Several tags around PostgreSQL 7.1 broken
Следующее
От: "Kevin Grittner"
Дата:
Сообщение: Re: incoherent view of serializable transactions