Appearance
查看 plan check 結果
何時用這份文件 你剛提交 Plan,畫面顯示了一些 plan check warning / error,想知道每一項是什麼意思 + 該不該管。
前置條件
- 你已提交 Plan(提交一個 SQL 變更)
- 對 SQL 有基本理解
看哪裡
Plans → <你的 Plan> → Checks tab。
每筆 PlanCheckRun 顯示:
| 欄位 | 含意 |
|---|---|
| Type | 檢查類別(Plan Check) |
| Status | success / warning / error |
| Details | 具體掃出的條目(行號 / 對象 / 建議) |
| Started / Finished | 時間戳 |
檢查類別速查
| Type | 看什麼 | 常見問題 |
|---|---|---|
| Syntax | SQL 能否 parse | typo、missing semicolon |
| Statement type | 與宣告類型是否相符 | 宣告 DDL 但含 DML 等 |
| Schema impact | 受影響的 table / column | 大表全表掃描 |
| Naming convention | 命名規則 | snake_case、長度限制 |
| Statement advisor | 各家 lint 規則 | 缺索引、缺 WHERE、explicit type、deprecated syntax |
| Statement compatibility | 與目標 schema 衝突 | 型別不相容、PK 衝突 |
| Risk | 高風險動作 | drop / truncate / 全表 update |
怎麼處理
Success(綠色)
繼續建 Issue。
Warning(黃色)
不會阻擋你建 Issue,但會在審批者 UI 上顯示。建議的處理順序:
- 點開 warning 細節
- 判斷是否可接受:
- 可接受 → 在 Issue 描述補上理由(主動說明,不要等審批者問)
- 不可接受 → 改 SQL 重跑 check
範例 warning + 建議處理:
| Warning | 含意 | 建議 |
|---|---|---|
CREATE INDEX without CONCURRENTLY on large table | 大表加索引會鎖表 | 改用 CONCURRENTLY |
UPDATE without LIMIT on large table | 全表掃描 | 加 WHERE 或分批 |
Statement uses deprecated syntax | 某種寫法即將不支援 | 改成新語法 |
Naming convention: index name exceeds 63 chars | 超 PG 識別字長度 | 縮短 |
Error(紅色)
阻擋 Issue 建立。處理:
- 修正 SQL(最常見)
- 改完 → 自動觸發新的 PlanCheckRun
- 全綠後再建 Issue
如果你確信 error 是誤判,且 workspace 開啟「allow override」:
- 提供具體理由(不是「等不及」「先這樣」)
- 寫進 Issue 描述
- 預期被審批者特別仔細看
- override 紀錄會永久留在 audit log
同一 Plan 多次跑 Check
修改 SQL 後新的 check 會自動觸發;舊的紀錄保留。你會看到歷史 timeline:
text
Run #3 2026-05-24 09:15 ✅ all checks passed
Run #2 2026-05-24 09:10 ⚠ 1 warning, 0 errors
Run #1 2026-05-24 09:05 ❌ 1 error點 Run #1 仍可看到當時的內容(debug 用)。
看不懂某個 check 結果?
- 點 check type → 文件連結(連到 Plan Check 概念)
- 點
Details看完整 server 端 message - 找 DBA / 平台 admin 釐清;不要為了趕時間 override
不要做的事
| 反模式 | 為什麼 |
|---|---|
| 直接 override 所有 error | 違反零信任原則;累積技術債 |
| 看不懂就 ignore warning | warning 是 plan check 對你說「請看一下」 |
| Plan check 失敗就改去 SQL Editor 直接執行 | 繞過審批 + 稽核軌跡;應該修 Plan |
| 為了讓 check 過,故意把 SQL 拆碎 | 不會通過 schema impact 檢查;只是給審批者增加負擔 |
相關
- 概念:Plan Check
- 上游:提交一個 SQL 變更
- 下游:處理被駁回的變更
- 規則:設定項 — SQL Review