You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Record how far SQLite's parser got, so truncated parses do not lie
The corpus derived "meyer must accept the whole case" from a statement
that failed with a semantic message, on the reasoning that it must have
parsed to get that far. That is wrong when the message comes from a
grammar action in the middle of a statement: sqlite3BeginTrigger raises
"no such table" at the trigger_decl reduce, sqlite3RunParser sees
pParse->rc set and abandons the loop, and the trigger body is never
parsed at all. Three such cases have a deliberate syntax error in the
body that SQLite never saw, and the corpus was demanding meyer accept
them.
sqlite3_prepare_v2's pzTail says exactly how far the parser got: the end
of the statement for an ordinary end-of-parse failure, and just past
BEGIN for these. The oracle now records it on every failing statement,
(*Case).Expected turns short tails into unverified byte ranges, and the
harness lets the parser under test fail inside one. 192 of the 4685
cases have such a range; 4 of them were failing.
Regenerated the corpus for the added field: the diff is confined to err
lines, which gain one integer each.
Corpus: 4685/4685 cases passing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JzBeCg7rjweVW3uGPg5G7T
0 commit comments