[postgresql] Fix for #4308, #4315 -- ambiguity and plpgsql grammar. #4316
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes #4308 and #4315. The issue was caused by adding in rules for PL/PGSQL into PostgreSQL. These rules were added to parse function bodies, but the changes also affected parsing of PostgreSQL. The problem is that the lexing rules overlap between the two languages. You cannot simply add two non-disjoint lexer rules together because you then have an enormous task in trying to clarify the PostgreSQL parser rules, least of which is the ambiguity. This is probably why there's a collection of tests that fail in the examples.errors/ directory.
collabel
was renamed tocolLabel
to be closer to the official source for the grammar, gram.y.The ambiguity no longer exists.
trparse --ambig -i "SELECT 'trailing' AS first;" | trtree -a
yields no ambiguity trees.The plan is to re-add parsing of function bodies with a completely separate grammar for pl/pgsql later.