tursodatabase/turso

Turso's case-insensitive behaviour for tables and views does not match SQLite

Open

#5.730 geöffnet am 5. März 2026

Auf GitHub ansehen
 (2 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Rust (1.001 Forks)github user discovery
compatibilitygood first issue

Repository-Metriken

Stars
 (19.103 Stars)
PR-Merge-Metriken
 (PR-Metriken ausstehend)

Beschreibung

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).

Contributor Guide