Skip to content

Fix quoted SQLite collation parsing - #7493

Open
Boulea7 wants to merge 1 commit into
doctrine:3.10.xfrom
Boulea7:fix-sqlite-collation-quoting
Open

Fix quoted SQLite collation parsing#7493
Boulea7 wants to merge 1 commit into
doctrine:3.10.xfrom
Boulea7:fix-sqlite-collation-quoting

Conversation

@Boulea7

@Boulea7 Boulea7 commented Aug 10, 2026

Copy link
Copy Markdown
Q A
Type bug
Fixed issues #6129

Summary

SQLite schema introspection now parses quoted collation identifiers according to SQLite quoting rules and returns their logical, unquoted names.

The parser distinguishes quoted tokens from the unquoted COLLATE keyword, ignores nested DEFAULT and CHECK expressions, and scans each CREATE TABLE statement once. Collations are matched through Column::getName(), so quoted reserved-word columns such as "DEFAULT" and "CHECK" retain their declared collation.

Testing

  • vendor/bin/phpunit tests/Schema/SqliteSchemaManagerTest.php (42 tests, 62 assertions)
  • vendor/bin/phpunit tests/Functional/Schema/SqliteSchemaManagerTest.php (109 tests, 483 assertions, 15 skipped)
  • Full PHPUnit suite (5098 tests, 7403 assertions, 859 skipped, 5 incomplete)
  • vendor/bin/phpcs (571 files)
  • vendor/bin/phpstan --no-progress

@derrabus

Copy link
Copy Markdown
Member

Please rebase onto the latest changes from 3.10.x in order to fix the CI.

@Boulea7

Boulea7 commented Aug 11, 2026

Copy link
Copy Markdown
Author

Thanks for the heads-up. I’ll rebase this branch onto the latest 3.10.x and update the CI results.

Tokenize column definitions according to SQLite identifier quoting rules so schema introspection returns unquoted collation names without mistaking DEFAULT or CHECK expressions for column collations.

Fixes doctrine#6129
@Boulea7
Boulea7 force-pushed the fix-sqlite-collation-quoting branch from 87dfeb9 to a0892fd Compare August 11, 2026 16:23
@derrabus

Copy link
Copy Markdown
Member

I've had a brief look at your implementation. You've implemented a rather heavy SQL parser here. Is that really necessary to fix your bug? I would like to avoid maintaining a parser, tbh.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants