更新履歴
[1.1.4] - 2026-06-22
🐞 修正
- SQLite識別子をSQL生成前に検証し、複合インデックスに未知のフィールドが含まれる場合は拒否するようにしました。
- 未対応の生SQL断片を文字列フィルタとして渡した場合、SQLへ素通しせず
QueryValidationErrorを送出するようにしました。 - 非同期版のクエリ検証を同期版と揃え、未知フィールド検証とモデル定義に基づくフィルタ値シリアライズを追加しました。
- 非同期版で
date/datetime/list/dictのフィルタが正しく動くようにしました。 __inの通常ケースを修正し、空コレクションは0件一致として扱うようにしました。offsetのみを指定した場合もSQLiteで有効な無制限LIMIT句を生成するようにしました。limit/offsetで負数、小数、真偽値、文字列を拒否するよう検証を厳格化しました。insert_many()に異なるモデル型が混在した場合、明確にTypeErrorを送出するようにしました。- 読み取り処理と接続終了を既存ロックで直列化し、実行中のクエリと
close()が競合しないようにしました。 vacuum()と非同期版のexecute_raw()を既存ロックで保護しました。
🧪 テスト
- 危険な文字列フィルタ、非同期版のフィールド検証、シリアライズ対象フィルタ値、
__in、offset単独指定、ページネーション型検証、混在モデル一括挿入の回帰テストを追加しました。
📚 ドキュメント
- APSW 全機能アクセスに向けた段階的な実装計画を追加しました。
⚠️ 互換性
- 文字列フィルタは
"age > 10"や"name = 'Alice'"のような単純比較のみサポートします。複雑な条件はage__gte=10のようなキーワードフィルタ、または明示的な raw SQL を使ってください。 - コアパッケージのPython 3.9対応は維持します。ただし、一部の開発・オプション依存関係はPython 3.9向けに最新のセキュリティ修正版ホイールを提供していません。信頼できない入力を扱う場合、
speed・encryption・devextrasはPython 3.10以上で利用してください。
[1.1.1] - 2026-05-16
🚀 追加
- 明示的トランザクション: 手動でトランザクションを制御するための
atomic()コンテキストマネージャをNyanSQLiteに、async with atomic()をNyanSQLiteAIOに追加しました。 - 入れ子構造のトランザクション: ネスト(入れ子)された
atomic()ブロックのサポートを追加しました。
🔄 変更
- スレッドセーフ:
NyanSQLiteでthreading.RLockを使用するように変更し、スレッド安全性を向上させました。 - 非同期安全性:
NyanSQLiteAIOにおいて、atomic()使用時のデッドロックを防ぐためにリエントラントな非同期ロックを実装しました。
[1.1.0] - 2026-05-16
🚀 追加
- 非同期サポート:
NyanSQLiteAIOクラスによるasyncioの完全サポート。 - パフォーマンス向上:
asyncio.to_thread内での効率的な行処理により、読み取り操作を最適化。 - ドキュメント更新: 非同期利用に関する日英のドキュメントを追加。
🔄 変更
NyanSQLiteAIOのquery,select,searchメソッドの内部最適化。- 同期版
NyanSQLiteクラスにおいて、読み取り操作のロック保持時間を最小化。
[1.0.1] - 2026-05-15
🐞 修正
- 軽微なバグ修正とパフォーマンスの改善。
[1.0.0] - 2026-05-15
🚀 追加
- Pydantic v2 対応: Pydanticモデルをそのままデータベーススキーマとして利用可能。
- Djangoライクなクエリ構文:
__gte,__in,__likeなどの直感的なフィルタリングをサポート。 - FTS5 全文検索: SQLiteのFTS5拡張を利用した高速な全文検索機能。
- 自動インデックス管理:
Indexed[T]やUniqueIndexed[T]アノテーションによるB-treeインデックスの自動生成。 - 複合インデックス: Pydanticの
Fieldメタデータを介したCompositeIndexのサポート。 - 透過的な型処理:
dictやlistなどの複雑な型を自動的にJSONとしてシリアライズ/デシリアライズ。 - WALモードのサポート: パフォーマンスと並行性の向上のため、デフォルトでWAL(Write-Ahead Logging)モードを有効化。
- コンテキストマネージャ対応:
with構文による自動的なコネクション終了処理。
🔄 変更
- NyanSQLite の初期公開リリース。