Thanks Pavel.
Different columns and data types tolerance is ok, however what about wrong and meaningless syntax?
Best,
Stefan
>-------- Оригинално писмо --------
>От: Pavel Stehule pavel.stehule@gmail.com
>Относно: Re: [BUGS] BUG #14549: pl/pgsql parser
>До: stefanov.sm@abv.bg
>Изпратено на: 17.02.2017 11:19
Hi
2017-02-17 8:58 GMT+01:00
<stefanov.sm@abv.bg>:
The following bug has been logged on the website:
Bug reference: 14549
Logged by: Stefan Stefanov
Email address: stefanov.sm@abv.bg
PostgreSQL version: 9.5.3
Operating system: Red Hat, 64 bit
Description:
Hi all,
I found (the hard way) that in pl/pgsql SELECT INTO statement a syntax error
may remain unnoticed.
This simple example works as expected and produces '1, 2, 3' notice.
DO language plpgsql
$$
DECLARE
vara integer;
varb integer;
varc integer;
BEGIN
SELECT 1, 2, 3 INTO vara, varb, varc;
RAISE NOTICE '% % %', vara, varb, varc;
END;
$$;
However if you omit a comma (or even replace the comma with AS) between varb
and varc in the INTO list then no syntax error is produced and the resulting
notice is '1 2 <NULL>'.
DO language plpgsql
$$
DECLARE
vara integer;
varb integer;
varc integer;
BEGIN
SELECT 1, 2, 3 INTO vara, varb AS varc;
RAISE NOTICE '% % %', vara, varb, varc;
END;
$$;
A few more clearly erratic combinations of SELECT expressions and the INTO
list also 'work' and issue misleading results.
Same in functions. For me it produced a bug that was difficult to see and
track.
Best,
Stefan
It is not a bug - plpgsql is designed be tolerant to different columns and data types in left and right part of assignment.
You can use some tools for easy detecting these issues:
Regards
Pavel
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs