先日リリースされたSQLite 3.9には,JSONエンコード/デコードのサポート,全文検索(Full Text Search)バージョン5,式のインデックス(index on expression),エポニマス仮想テーブル(eponymous virtual table)など,数多くの新機能と拡張機能が提供されている。
新たに採用されたセマンティックバージョニング標準に従えば,今回のSQLite 3.9は,旧バージョンとの後方互換性は保証するが,新機能の導入によって前方互換性が失われる変更を含んだ新バージョン,ということになる。導入された新機能には次のものが含まれる。
- JSONのサポート。JSON文字列の検証,JSON配列およびオブジェクト構築,値の更新/挿入/置換によるJSON文字列操作など,一連の機能を実装した
json1
エクステンションで実現される。さらに2つのテーブル値関数によって,JSON文字列から,各要素を列にマッピングした仮想テーブルへの変換が可能になった。 - 式のインデックス。テーブル列を参照する従来のインデックスに加えて,列を含む式によるインデックス定義が可能である。この機能によって,例えば,指定された口座番号に関する指定金額以上の預金変更をすべてリストアップする,といったクエリを,効率的に実行できるようになる。
CREATE INDEX account_change_magnitude ON account_change(acct_no, abs(amt)); SELECT * FROM account_change WHERE acct_no=$xyz AND abs(amt)>=10000;
- エポニマス仮想テーブル。
CREATE VIRTUAL TABLE
を実行せず,単にモジュール名を参照することで利用可能な仮想テーブルである。例として,データベースファイル内のbtreeとオーバーフローページに関する低レベル情報を提供するdbstat
仮想テーブルなどがある。 - 全文検索バージョン5(FTS5)。全文検索が可能な仮想テーブルを生成する,仮想テーブルモジュール。FTS5を使用した仮想テーブルの読み込みは,次のように実行する。
CREATE VIRTUAL TABLE email USING fts5(sender, title, body);
SELECT * FROM email WHERE email MATCH 'fts5'; SELECT * FROM email WHERE email = 'fts5'; SELECT * FROM email('fts5');
その他特筆すべき機能として,CREATE_VIEW
実行時の列名オプションリストの追加がある。これにより,未定義のテーブルを参照するVIEW
を作成しておいて,クエリ実行時にそれをチェックすることが可能になる。
詳細については,SQLite 3.9.0と3.9.1のリリースノートを参照して欲しい。