Turso's case-insensitive behaviour for tables and views does not match SQLite
#5730 aperta il 5 mar 2026
Metriche repository
- Star
- (19.103 star)
- Metriche merge PR
- (Metriche PR in attesa)
Descrizione
This isn't super obvious from the documentation, but SQLite does case-insensitive comparison only for ASCII characters:
Column names are case-insensitive in the usual way for SQLite column names - upper/lower case equivalence is understood for ASCII-range characters only. (source)
and
The default configuration of SQLite only supports case-insensitive comparisons of ASCII characters. (source)
This might just be a matter of changing Schema.get_object_type, I'm not sure. It compares tables and views using rust's to_lowercase(), which does Unicode folding. But all we need is eq_ignore_ascii_case.
Turso:
turso> create table é(a);
turso> create table É(a);
× Parse error: table é already exists
turso> create view é as select 1;
turso> create view É as select 1;
× Parse error: view é already exists
But SQLite accepts these tables and views.
Because of this, Turso can't open databases that have these sorts of tables (it fails when opening the DB).