Thread: Re: [HACKERS] v7.2.4 bundled ...

Re: [HACKERS] v7.2.4 bundled ...

From
Kevin Brown
Date:
Tom Lane wrote:
> Rod Taylor <rbt@rbt.ca> writes:
> > Updated to tag REL7_2_4 on FreeBSD 4.7 and cannot compile it.  gram.y
> > errors complaining: invalid character: ','.
>
> > bash-2.05b$ bison --version
> > bison (GNU Bison) 1.75
>
> We just had that discussion on pgcore.  The 7.2 grammar was developed
> against bison 1.28; it works with warnings against bison 1.35, but bison
> 1.75 just flat rejects it (not for any significant reason, but just
> because they decided to get anal-retentive about whether they'd allow
> commas in keyword lists).
>
> We could update the 7.2 grammar and compile it with the latest bison,
> but we were worried about whether we might introduce any subtle problems
> if we did.  The 7.2 branch has received zero testing with bison 1.75.
>
> ISTM that the eve of what'll probably be our last dot-release for 7.2
> is not the time to drop a new bison into its toolchain.

For what it's worth, I've fixed all the errors in the 7.2.4 gram.y
file that bison 1.75 complained and then re-ran bison 1.35 against it,
then compared that with the output that the same version of bison
generated from the original grammar file.  The only differences were
references to line numbers -- everything else is identical.

So if any problems occur from using bison 1.75, they will be either
due to bugs in that version of bison or due to our dependence on a bug
in earlier versions, or something like that.

I'm attaching a patch for 7.2.4's parser/gram.y that fixes all of
bison 1.75's complaints.  Since the output of bison 1.35 is
essentially identical between the original and this, I don't see any
reason we shouldn't include the fix in the 7.2.4 release, as long as
we include a warning in the release notes that we haven't done any
real testing with a build against bison 1.75 (or later).


--
Kevin Brown                          kevin@sysexperts.com

Attachment

Re: [HACKERS] v7.2.4 bundled ...

From
Tom Lane
Date:
Kevin Brown <kevin@sysexperts.com> writes:
> I'm attaching a patch for 7.2.4's parser/gram.y that fixes all of
> bison 1.75's complaints.

But parser/gram.y is not the only .y file in the distribution.  To call
ourselves 1.75-safe, we'd have to go through this same exercise for
all of 'em:

$ find REL7_2 -name '*.y'
REL7_2/pgsql/contrib/cube/cubeparse.y
REL7_2/pgsql/contrib/seg/segparse.y
REL7_2/pgsql/src/backend/bootstrap/bootparse.y
REL7_2/pgsql/src/backend/parser/gram.y
REL7_2/pgsql/src/interfaces/ecpg/preproc/preproc.y
REL7_2/pgsql/src/pl/plpgsql/src/gram.y
$

And on top of that, 1.75 isn't the current bison release anymore; the
one that is current has changed the spelling of syntax error messages,
which means that the regression tests will fail (and perhaps clients
that are looking for syntax errors, too).  We have agreed how to fix
this in HEAD, but not actually done it yet --- shall we put that
not-even-written-let-alone-tested code into 7.2.4 as well?

I think it's best to leave well enough alone.  The tarball ships with
working bison output files anyway, so all of this really only matters
to people trying to build 7.2.* from a CVS pull.

            regards, tom lane