tursodatabase/turso

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

オープン

#5,730 opened on 2026/03/05

 (2 件のコメント) (0 件のリアクション) (0 人の担当者)Rust (1,001 件のフォーク)github user discovery
compatibilitygood first issue

Repository metrics

Stars
 (19,103 個のスター)
PR merge metrics
 (平均マージ 2d 11h) (30d で 147 merged PRs)

説明

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

コントリビューターガイド