|
2 | 2 |
|
3 | 3 | ## Done |
4 | 4 |
|
5 | | -- Schema-aware validation across SELECT / INSERT / UPDATE / DELETE, |
6 | | - CTEs (incl. `WITH RECURSIVE`), set ops, derived tables, JOIN ON / |
7 | | - USING, scope-aware subqueries. |
| 5 | +- Schema-aware validation across SELECT / INSERT / UPDATE / DELETE / |
| 6 | + MERGE, CTEs (incl. `WITH RECURSIVE`), set ops, derived tables, |
| 7 | + JOIN ON / USING / NATURAL, scope-aware subqueries. |
8 | 8 | - Schema ingestion: `CREATE TABLE`, `ALTER TABLE` (ADD/DROP/RENAME |
9 | 9 | COLUMN), `CREATE VIEW`, `CREATE TABLE … AS SELECT`. |
10 | | -- 12 SQL dialects via `--dialect`. |
11 | | -- ASCII case-insensitive identifier matching. |
| 10 | +- 12 SQL dialects via `--dialect`; Postgres quoted-vs-unquoted |
| 11 | + identifier folding (other dialects keep ASCII case-insensitive |
| 12 | + matching). |
| 13 | +- 3-part qualified column refs (`schema.table.col`). |
| 14 | +- Ambiguity detection for unqualified columns visible in 2+ relations. |
| 15 | +- Set-op (UNION / INTERSECT / EXCEPT) column-arity check. |
| 16 | +- `SELECT *` / `SELECT t.*` projection expansion in CTEs and derived |
| 17 | + tables (resolves outer references and outer `ORDER BY`). |
12 | 18 | - Output formats: text + JSON; split exit codes; `--stdin` mode. |
13 | 19 | - `.sqlshield.toml` configuration with CLI override layering. |
14 | 20 | - Parallel file walker (rayon) with default ignore list. |
15 | 21 | - Language Server (`sqlshield-lsp`) for inline editor diagnostics |
16 | | - in `.py` / `.rs` / `.sql`. |
| 22 | + in `.py` / `.rs` / `.sql`; auto-reload on schema-file changes. |
| 23 | +- First-party VS Code extension (`editors/vscode`) wrapping |
| 24 | + `sqlshield-lsp` over stdio. |
| 25 | +- Live database introspection (`sqlshield-introspect`, exposed via |
| 26 | + `--db-url`): read schema directly from a running Postgres or SQLite |
| 27 | + instance. |
17 | 28 | - Python bindings (`sqlshield-py`). |
18 | 29 |
|
19 | 30 | ## Considering |
20 | 31 |
|
21 | | -- **Live database introspection** — connect to Postgres / MySQL / |
22 | | - Sqlite and read the schema directly, no SQL dump required. |
23 | | -- **Postgres quoted-vs-unquoted identifier folding** — currently we |
24 | | - treat all identifiers as case-insensitive; a quoted-aware mode |
25 | | - would match Postgres semantics more precisely. |
26 | | -- **`MERGE` support** — would round out the DML coverage. |
| 32 | +- **MySQL live introspection** — pending: `mysql_common` uses unstable |
| 33 | + Rust features that haven't reached the project's pinned toolchain. |
| 34 | + A toolchain bump or a different sync driver would unblock this. |
27 | 35 | - **More language extractors** — Go, TypeScript, Java string literals. |
28 | 36 | Each is a small `finder/<lang>.rs` module + tree-sitter grammar. |
29 | | -- **First-party VS Code extension** — currently the LSP is wired via |
30 | | - generic LSP-client extensions. |
31 | 37 |
|
32 | 38 | ## Not planned |
33 | 39 |
|
|
0 commit comments