sql5 4.0.0

SQLite compatible database with CJK FTS5 full-text search and vector similarity
# sql5 v1.5 版本說明(已完成)

## 版本資訊
- **版本**:1.5
- **日期**:2026-05-03
- **名稱**:VIEW 虛擬表支援

## 新增功能

### 1. CREATE VIEW / DROP VIEW ✅ 完成
- `CREATE VIEW name AS select_stmt` - 建立視圖
- `CREATE TEMP VIEW name AS select_stmt` - 建立暫時視圖
- `DROP VIEW name` - 刪除視圖
- `DROP VIEW IF EXISTS name` - 安全刪除

### 2. VIEW 查詢支援 ✅ 完成
### 3. sqlite_master 系統表 ✅ 完成
### 4. REINDEX 命令 ✅ 完成
### 5. ANALYZE 命令 ✅ 完成
- `ANALYZE` - 收集資料庫統計資訊
- 供查詢規劃器優化使用

## 使用方式

```bash
# 建立視圖
CREATE VIEW active_users AS
  SELECT id, name FROM users WHERE active = 1;

# 查詢視圖
SELECT * FROM active_users;

# 刪除視圖
DROP VIEW active_users;

# REINDEX
REINDEX;

# ANALYZE
ANALYZE;
```

## 架構

```
┌─────────────────────────────────────────┐
│            REPL Interface               │
└─────────────────┬───────────────────────┘
┌─────────────────▼───────────────────────┐
│          Executor + Planner              │
│  ┌─────────────────────────────────┐   │
│  │  Catalog                        │   │
│  │  - tables: HashMap<name, Meta> │   │
│  │  - views: HashMap<name, ViewDef>│ │ ← 新增
│  └─────────────────────────────────┘   │
└─────────────────┬───────────────────────┘
```

## SQLite 語法支援

```sql
-- CREATE VIEW 語法
CREATE [TEMPORARY|TEMP] VIEW [IF NOT EXISTS] view_name AS select_stmt;

-- DROP VIEW 語法
DROP VIEW [IF EXISTS] view_name;
```

## 實作細節

### ViewMeta 結構
```rust
pub struct ViewMeta {
    pub name:       String,
    pub query:       SelectStmt,  // 原始 SELECT 語句
    pub temp:        bool,       // 是否為 TEMP VIEW
}
```

### 查詢展開
- 在 planner 中,当 FROM 子句引用 VIEW 時,自動展開為底層 SELECT
- 支援巢狀視圖遞迴展開

## 測試計畫

1. `CREATE VIEW basic` - 基本視圖建立
2. `CREATE VIEW with complex query` - 複雜查詢視圖
3. `CREATE TEMP VIEW` - 暫時視圖
4. `CREATE VIEW IF NOT EXISTS` - 避免重複錯誤
5. `DROP VIEW` - 刪除視圖
6. `DROP VIEW IF EXISTS` - 安全刪除
7. `SELECT FROM view` - 查詢視圖
8. `JOIN view with table` - 視圖與表 JOIN
9. `REINDEX` - 索引重建
10. `ANALYZE` - 統計資訊收集

## 已知限制

1. **TRIGGERs 尚未支援** - 觸發器
2. **ATTACH/DETACH** - 多資料庫尚未支援
3. **VACUUM** - 資料庫壓縮尚未支援
4. **B+Tree 快取** - UPDATE + ROLLBACK 同一列時,B+Tree 可能仍返回修改後的值

## 下一步

1. **TRIGGERs 支援** - 觸發器
2. **ATTACH DATABASE** - 多資料庫
3. **VACUUM** - 資料庫壓縮

## 對應 SQLite 相容性

| SQLite 功能 | sql5 v1.5 狀態 |
|------------|---------------|
| DDL (CREATE/DROP TABLE) | ✅ 完成 |
| DML (INSERT/UPDATE/DELETE) | ✅ 完成 |
| SELECT with WHERE, JOIN | ✅ 完成 |
| Aggregate (COUNT/SUM/AVG/MIN/MAX) | ✅ 完成 |
| Transactions | ✅ 完成 |
| AUTOINCREMENT | ✅ 完成 |
| FOREIGN KEY | ✅ 完成 |
| FTS5 (CJK) | ✅ 完成 |
| CREATE/DROP INDEX | ✅ 完成 (v1.3) |
| PRAGMA | ✅ 完成 (v1.3) |
| ALTER TABLE | ✅ 完成 (v1.3) |
| EXPLAIN | ✅ 完成 (v1.3) |
| WAL Mode | ✅ 完成 (v1.4) |
| **CREATE/DROP VIEW** | ✅ 新增 (v1.5) |
| **REINDEX** | ✅ 新增 (v1.5) |
| **ANALYZE** | ✅ 新增 (v1.5) |
| TRIGGERs | ❌ 待支援 |
| ATTACH | ❌ 待支援 |
| VACUUM | ❌ 待支援 |