# v3.7 - SQLite 相容性提升
## 日期:2026-05-10
## 主要功能
### SQLite API 相容性提升
本版本致力於提升 sql5 Python 客戶端與原生 sqlite3 模組的 API 相容性,確保兩者返回相同的資料結構。
### 新增功能
1. **ResultSet 結構擴充**
- `affected`: 受影響的行數(INSERT/UPDATE/DELETE)
- `lastrowid`: 最後插入行的 ID(AUTOINCREMENT)
2. **Python Cursor 類別增強**
- `description`: 符合 DB-API 2.0 標準
- `rowcount`: 返回受影響行數
- `lastrowid`: 返回最後插入行 ID
3. **FTS5 格式修正**
- FTS5 查詢結果格式與 sqlite3 一致
4. **記憶體模式修正**
- `:memory:` 不再建立磁碟檔案
---
## API 相容性對照
| INSERT affected | N | N ✅ |
| INSERT lastrowid | id | id ✅ |
| INSERT columns | None | [] ✅ |
| UPDATE affected | N | N ✅ |
| DELETE affected | N | N ✅ |
| cursor.description | 有 | 有 ✅ |
| cursor.rowcount | -1/N | -1/N ✅ |
---
## 測試
### 比較測試(22 tests)
```
tests/test_compare_sqlite.py::TestCursorDescription ... PASSED
tests/test_compare_sqlite.py::TestRowTypes ... PASSED
tests/test_compare_sqlite.py::TestRowCount ... PASSED
tests/test_compare_sqlite.py::TestLastRowId ... PASSED
tests/test_compare_sqlite.py::TestAffectedRows ... PASSED
tests/test_compare_sqlite.py::TestNullHandling ... PASSED
tests/test_compare_sqlite.py::TestDataTypes ... PASSED
tests/test_compare_sqlite.py::TestEmptyResults ... PASSED
tests/test_compare_sqlite.py::TestCursorAttributes ... PASSED
tests/test_compare_sqlite.py::TestIterateCursor ... PASSED
tests/test_compare_sqlite.py::TestFTS5Format ... PASSED
22 passed
```
### 完整測試(test.sh)
```
[PASS] Rust unit tests (cargo test) — 353 passed
[PASS] CLI integration tests (shtest.sh) — 114 passed
[PASS] Python pytest tests — 48 passed, 5 skipped
[PASS] Python client test (subprocess) — PASSED
[PASS] WebSocket test (v3.0) — PASSED
```
---
## 技術細節
### ResultSet 結構
```rust
pub struct ResultSet {
pub columns: Vec<String>, // 欄位名稱列表
pub rows: Vec<Vec<Value>>, // 查詢結果列
pub affected: i64, // 受影響的行數
pub lastrowid: Option<i64>, // 最後插入行的 ID
}
```
### JSON 回應格式
```json
{
"ok": true,
"columns": ["id", "name"],
"rows": [[1, "Alice"]],
"affected": 1,
"lastrowid": 1
}
```
---
## 已知限制
1. **多列 INSERT**: `INSERT INTO t VALUES (1), (2), (3)` 需分開執行
2. **JOIN**: 尚未完整支援
---
## 修訂歷史
- 2026-05-10:v3.7 初始版本