Fix qualified table name parsing in trigger bodies #75
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.
The SQL parser was incorrectly allowing qualified table names (with aliases or schema prefixes) in trigger body statements, when according to SQLite specifications, only unqualified table names should be permitted.
Problem
The following SQL was being parsed successfully when it should throw a syntax error:
According to SQLite documentation, UPDATE, DELETE, and INSERT statements in trigger bodies must use unqualified table names only.
Solution
parseTriggerBodyDeleteStatement()andparseTriggerBodyUpdateStatement()that only allow unqualified table namesvalidateUnqualifiedTableName()helper to detect and reject schema qualification (schema.table) and table aliases (table aliasortable AS alias)parseTriggerBodyStatement()to use the specialized parsers for DELETE/UPDATE statementsTesting
Added comprehensive test cases that verify:
The parser now correctly rejects qualified table names in trigger bodies while maintaining full compatibility with valid SQL.
Fixes #74.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.