BUG #14549: pl/pgsql parser

From: stefanov(dot)sm(at)abv(dot)bg
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #14549: pl/pgsql parser
Date: 2017-02-17 07:58:21
Message-ID: 20170217075821.6101.49074@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 14549
Logged by: Stefan Stefanov
Email address: stefanov(dot)sm(at)abv(dot)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

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Pavel Stehule 2017-02-17 09:19:12 Re: BUG #14549: pl/pgsql parser
Previous Message James Keener 2017-02-17 00:11:31 psql \e doc fix