Skip to content

Fix CTE view parsing across statement delimiters#660

Open
oiahoon wants to merge 1 commit into
phpmyadmin:masterfrom
oiahoon:fix/terminate-cte-view-statements
Open

Fix CTE view parsing across statement delimiters#660
oiahoon wants to merge 1 commit into
phpmyadmin:masterfrom
oiahoon:fix/terminate-cte-view-statements

Conversation

@oiahoon

@oiahoon oiahoon commented Jul 12, 2026

Copy link
Copy Markdown

Summary

Stop a CTE view's nested parser at the delimiter that separates it from the next SQL statement. Without this boundary, consecutive unparenthesized CREATE VIEW ... AS WITH ... statements are parsed as one view and the second statement is appended to the first view's build output.

Fixes #639.

Changes

  • Bound the CTE expression and ON DUPLICATE KEY UPDATE scans to the current statement.
  • Add a focused regression asserting that two consecutive CTE views remain independent.
  • Regenerate the existing parseCreateViewAsWithAs parser fixture so it records two top-level statements. The fixture input itself is unchanged.

Testing

  • Focused CreateStatementTest and WithStatementTest: 86 tests, 1,506 assertions
  • Full non-CLI suite: 977 tests, 10,167 assertions
  • Changed-file PHPCS and PHPStan
  • Full Psalm
  • composer validate --strict --no-check-publish
  • PHP syntax checks and git diff --check
  • Deterministic parser fixture regeneration

The complete local suite has six CLI-only failures because its command strings do not quote this checkout path, which contains a space. The untouched master baseline reproduces the same six failures; all 977 non-CLI tests pass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Views with CTEs parsed incorrectly

1 participant