Re: [Bug Fix] ECPG: could not use set xxx to default statement
Andrew Dunstan <andrew.dunstan@2ndquadrant.com>
From: Andrew Dunstan <andrew.dunstan@2ndquadrant.com>
To: Michael Meskes <meskes@postgresql.org>,
"Higuchi, Daisuke" <higuchi.daisuke@jp.fujitsu.com>,
'Tom Lane' <tgl@sss.pgh.pa.us>
Cc: "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2019-02-19T12:51:27Z
Lists: pgsql-hackers
On 2/19/19 6:21 AM, Michael Meskes wrote:
> Higuchi-san,
>
>> I attached the patch which cope with missing semicolons.
>> Previous parse.pl find semicolon and dump data to buffer. When
>> attached patch's parse.pl find new tokens before finding a semicolon,
>> it also dumps data to buffer.
> It just occurred to me that check_rules.pl probably uses the same logic
> to identify each rule and thus needs to be changed, too.
>
> Also, IIRC bison allows blanks between the symbol name and the colon,
> or in other words "generic_set:" is equal to "generic_set :". If this
> happens after a "missing" semicolon I think your patch does not notice
> the end of the rule.
>
Yeah, it also seems too possibly liberal about where it matches a rule
name. AUIU this should be the first token on a line; is that right?
OTOH, it won't handle any case where an action block is not the last
thing in the rule, since it only sets $fill_semicolon on seeing a
closing brace (on its own).
I just looked at the bison manual at gnu.org and also at `info bison` on
my local machine, and couldn't see any reference to semicolons being
optional at the end of a rule. Under the heading "Syntax of Grammar
Rules" it says this:
A Bison grammar rule has the following general form:
RESULT: COMPONENTS...;
Making it optional without putting that in the manual is just awful.
cheers
andrew
--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Fix ecpg bugs caused by missing semicolons in the backend grammar.
- 53c2bb78db9f 9.4.22 landed
- 3a682a21b7f9 9.5.17 landed
- de94ed89d5b0 11.3 landed
- 9e138a401d19 12.0 landed
- 904fce2a7695 9.6.13 landed
- 8ec638e69c01 10.8 landed