From 32b68e5a68234e7b4ee2e85359407e552e7441fb Mon Sep 17 00:00:00 2001 From: Iwan Kelaiah Date: Wed, 5 Aug 2026 21:51:25 +1000 Subject: [PATCH 1/3] =?UTF-8?q?feat(v1.3.0):=20trust=20procedural=20contro?= =?UTF-8?q?l=20flow=20=E2=80=94=20mixed=20IF/WHILE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ships the first vertical slice of Workstream B: mixed one-line and block IF/WHILE forms now parse into a single control-flow AST so the diagram shows true branching whether a body uses a single statement or a BEGIN/END block. - tests/dialects/tsql.ts: add mixed one-line + block IF and WHILE graph fixtures (yes/no branches, loop back-edges, done exits) - tests/dialects/db2.ts: add DB2 mixed THEN/block IF graph fixture - tests/boundary.ts: add T-SQL and DB2 mixed-IF statement-range fixtures - examples/dbo.v130_demo.sql: add runnable mixed control-flow demo - docs/v1.3.0-implementation-plan.md: record remaining v1.3.0 slices - docs/PR_NOTE_1.3.0.md, docs/RELEASE_NOTE_1.3.0.md: release notes - README.md: bump to v1.3.0 references and baseline counts - package.json: bump version to 1.3.0 - dist: rebuild generated artefacts Correctness gate green: typecheck, build, test:file, golden 164/164 (was 159), fuzz 400/400, ui 13/13, local-only check, dist committed in sync. --- README.md | 40 ++++---- dist/tests/boundary.js | 8 +- dist/tests/boundary.js.map | 2 +- dist/tests/dialects/db2.js | 35 +++++++ dist/tests/dialects/db2.js.map | 2 +- dist/tests/dialects/tsql.js | 69 ++++++++++++++ dist/tests/dialects/tsql.js.map | 2 +- docs/PR_NOTE_1.3.0.md | 77 ++++++++++++++++ docs/RELEASE_NOTE_1.3.0.md | 69 ++++++++++++++ docs/v1.3.0-implementation-plan.md | 141 +++++++++++++++++++++++++++++ examples/dbo.v130_demo.sql | 67 ++++++++++++++ package.json | 2 +- tests/boundary.ts | 8 +- tests/dialects/db2.ts | 35 +++++++ tests/dialects/tsql.ts | 73 ++++++++++++++- 15 files changed, 605 insertions(+), 25 deletions(-) create mode 100644 docs/PR_NOTE_1.3.0.md create mode 100644 docs/RELEASE_NOTE_1.3.0.md create mode 100644 docs/v1.3.0-implementation-plan.md create mode 100644 examples/dbo.v130_demo.sql diff --git a/README.md b/README.md index 5748a9f..1e73bfd 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,8 @@ The application runs entirely in a browser and works from the local filesystem. For the first stable release, see [RELEASE_NOTE_v1.0.0.md](docs/RELEASE_NOTE_v1.0.0.md). For the v1.1.0 release, see [RELEASE_NOTE_1.1.0.md](docs/RELEASE_NOTE_1.1.0.md). For the v1.2.0 release, see -[RELEASE_NOTE_1.2.0.md](docs/RELEASE_NOTE_1.2.0.md). +[RELEASE_NOTE_1.2.0.md](docs/RELEASE_NOTE_1.2.0.md). For the v1.3.0 release, see +[RELEASE_NOTE_1.3.0.md](docs/RELEASE_NOTE_1.3.0.md). ## Start here @@ -61,7 +62,7 @@ For the first stable release, see ## 60-second quick start -1. Download the `v1.2.0` archive from +1. Download the `v1.3.0` archive from [GitHub Releases](https://github.com/ikelaiah/ProcFlow/releases) or clone this repository. 2. Extract the complete archive. Keep `index.html`, `styles.css`, `dist/`, and @@ -128,7 +129,7 @@ statements. analysis to another engineer. ProcFlow imports SQL text, not report-definition files. SSRS/RDL import is on -the roadmap; for v1.2.0, paste or export the dataset SQL itself. +the roadmap; for v1.3.0, paste or export the dataset SQL itself. ## What ProcFlow can show @@ -186,7 +187,7 @@ than silently disappearing from the diagram. ## Supported SQL -ProcFlow v1.2.0 recognises: +ProcFlow v1.3.0 recognises: - Microsoft T-SQL - IBM DB2 SQL PL @@ -197,13 +198,16 @@ Supported inputs include procedures, functions, triggers, views, plain SQL statements, report dataset queries, and multi-object scripts where those object types apply to the selected dialect. -Dialect-specific v1.2.0 coverage includes: +Dialect-specific v1.3.0 coverage includes: -- **T-SQL:** semicolon-free statements with grammar-driven boundaries, `TRY`/ +- **T-SQL:** mixed one-line and block `IF`/`WHILE` control flow (single + statement bodies and `BEGIN`/`END` bodies in one AST), semicolon-free + statements with grammar-driven boundaries, `TRY`/ `CATCH`, `THROW`, `RAISERROR` severity, `XACT_STATE()`, `@@TRANCOUNT`, nested transaction depth, savepoints, `SET XACT_ABORT`, and invalid transaction-action termination. -- **DB2 SQL PL:** scoped handlers, cursors, `NOT FOUND` flow, and labelled loop +- **DB2 SQL PL:** mixed `THEN` and `BEGIN`/`END` `IF` forms, scoped handlers, + cursors, `NOT FOUND` flow, and labelled loop control. - **PL/pgSQL:** `EXCEPTION` condition matching, transactional exception scopes, and rethrow propagation. @@ -246,7 +250,7 @@ endorsed by draw.io. ### Quick answers -| Question | ProcFlow v1.2.0 behavior | +| Question | ProcFlow v1.3.0 behavior | |---|---| | Is SQL uploaded? | No. Analysis and rendering happen in the browser tab. | | Does it connect to a database? | No. There is no driver, connection string, or query execution. | @@ -280,7 +284,7 @@ network-submission code. The only bundled third-party runtime is the pinned Mermaid 10.9.1 renderer. Its MIT licence is stored at `vendor/mermaid/LICENSE`. -The SHA-256 of `vendor/mermaid/mermaid.min.js` in v1.2.0 is: +The SHA-256 of `vendor/mermaid/mermaid.min.js` in v1.3.0 is: ```text 61B335A46DF05A7CE1C98378F60E5F3E77A7FB608A1056997E8A649304A936D6 @@ -291,7 +295,7 @@ so the release checksum remains reproducible across operating systems. ### Guidance for security review -1. Review and pin the `v1.2.0` tag or its exact commit. +1. Review and pin the `v1.3.0` tag or its exact commit. 2. Verify the vendored Mermaid checksum. 3. Review the runtime files listed above. 4. Open the reviewed files locally or serve them from an approved internal @@ -330,7 +334,7 @@ and contains no automatic data-submission path. be detected. - Temporary-table, synonym, linked-server, and cross-database resolution is lightweight. -- SSRS/RDL files are not imported in v1.2.0. +- SSRS/RDL files are not imported in v1.3.0. - Large draw.io exports can require manual rearrangement. Always confirm critical dependencies, execution paths, transaction behavior, @@ -396,9 +400,9 @@ Then open: - `http://127.0.0.1:8000/tests/ui.html` — browser interaction and local-runtime tests -The v1.2.0 baseline is: +The v1.3.0 baseline is: -- 156 golden and boundary assertions +- 164 golden and boundary assertions - 400 deterministic mutation cases - 13 browser interaction tests @@ -426,8 +430,10 @@ assets/ docs/ ├── PR_NOTE_1.1.0.md ├── PR_NOTE_1.2.0.md +├── PR_NOTE_1.3.0.md ├── RELEASE_NOTE_1.1.0.md ├── RELEASE_NOTE_1.2.0.md +├── RELEASE_NOTE_1.3.0.md ├── RELEASE_NOTE_v1.0.0.md ├── RELEASE_NOTE_v1.1.0.md └── RELEASE_NOTE_v1.2.0.md @@ -487,12 +493,12 @@ Then verify: 2. `git status --short` shows only the intended release changes. 3. Generated `dist/` files match their TypeScript sources. 4. The Mermaid SHA-256 matches the value in this README and the workflow. -5. `RELEASE_NOTE_1.2.0.md` matches the final tag contents. +5. `RELEASE_NOTE_1.3.0.md` matches the final tag contents. 6. The complete archive opens locally with `index.html`. -7. The tag is named `v1.2.0`. +7. The tag is named `v1.3.0`. -The release can then be created manually from the `v1.2.0` tag using -[RELEASE_NOTE_1.2.0.md](docs/RELEASE_NOTE_1.2.0.md). +The release can then be created manually from the `v1.3.0` tag using +[RELEASE_NOTE_1.3.0.md](docs/RELEASE_NOTE_1.3.0.md). ## Roadmap after v1.0.0 diff --git a/dist/tests/boundary.js b/dist/tests/boundary.js index 5214383..d50970d 100644 --- a/dist/tests/boundary.js +++ b/dist/tests/boundary.js @@ -31,7 +31,13 @@ var PROCFLOW_RANGE_FIXTURES = [ statements: ['UPDATE audit SET x = 1', 'UPDATE item SET y = 2'] }, { name: 'View body with WITH schema-binding header', dialect: 'tsql', sql: 'CREATE VIEW dbo.v WITH SCHEMABINDING, VIEW_METADATA AS SELECT id FROM dbo.t;', - statements: ['SELECT id FROM dbo.t'] } + statements: ['SELECT id FROM dbo.t'] }, + { name: 'T-SQL mixed one-line and block IF', dialect: 'tsql', + sql: 'CREATE PROC dbo.p AS BEGIN IF @a = 1 SELECT 1; ELSE BEGIN SELECT 2; SELECT 3; END SET @done = 1 END', + statements: ['SELECT 1', 'SELECT 2', 'SELECT 3', 'SET @done = 1'] }, + { name: 'DB2 mixed one-line and block IF', dialect: 'db2', + sql: 'CREATE PROCEDURE APP.P() LANGUAGE SQL BEGIN IF V = 1 THEN SET V_A = 1; ELSE BEGIN SET V_B = 2; END; END IF; END', + statements: ['SET V_A = 1', 'SET V_B = 2'] } ]; var PROCFLOW_BOUNDARY_FIXTURES = [ { diff --git a/dist/tests/boundary.js.map b/dist/tests/boundary.js.map index 192f60f..5919114 100644 --- a/dist/tests/boundary.js.map +++ b/dist/tests/boundary.js.map @@ -1 +1 @@ -{"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../tests/boundary.ts"],"names":[],"mappings":";AAAA;;;;2DAI2D;AAC3D,IAAI,uBAAuB,GAAmB;IAC5C,EAAE,IAAI,EAAC,mCAAmC,EAAE,OAAO,EAAC,MAAM;QACxD,GAAG,EAAC,8DAA8D;QAClE,UAAU,EAAC,CAAC,YAAY,EAAC,UAAU,EAAC,WAAW,CAAC,EAAE;IACpD,EAAE,IAAI,EAAC,mCAAmC,EAAE,OAAO,EAAC,MAAM;QACxD,GAAG,EAAC,mDAAmD;QACvD,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,CAAC,EAAE;IACtC,EAAE,IAAI,EAAC,uBAAuB,EAAE,OAAO,EAAC,MAAM;QAC5C,GAAG,EAAC,oDAAoD;QACxD,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,CAAC,EAAE;IACtC,EAAE,IAAI,EAAC,6BAA6B,EAAE,OAAO,EAAC,KAAK;QACjD,GAAG,EAAC,qFAAqF;QACzF,UAAU,EAAC,CAAC,WAAW,EAAC,2BAA2B,CAAC,EAAE;IACxD,EAAE,IAAI,EAAC,+BAA+B,EAAE,OAAO,EAAC,KAAK;QACnD,GAAG,EAAC,wFAAwF;QAC5F,UAAU,EAAC,CAAC,WAAW,EAAC,2BAA2B,CAAC,EAAE;IACxD,EAAE,IAAI,EAAC,kCAAkC,EAAE,OAAO,EAAC,SAAS;QAC1D,GAAG,EAAC,oGAAoG;QACxG,UAAU,EAAC,CAAC,QAAQ,EAAC,iBAAiB,CAAC,EAAE;IAC3C,EAAE,IAAI,EAAC,sCAAsC,EAAE,OAAO,EAAC,QAAQ;QAC7D,GAAG,EAAC,0EAA0E;QAC9E,UAAU,EAAC,CAAC,wBAAwB,CAAC,EAAE;IACzC,EAAE,IAAI,EAAC,+CAA+C,EAAE,OAAO,EAAC,QAAQ;QACtE,GAAG,EAAC,8FAA8F;QAClG,UAAU,EAAC,CAAC,wBAAwB,EAAC,uBAAuB,CAAC,EAAE;IACjE,EAAE,IAAI,EAAC,2CAA2C,EAAE,OAAO,EAAC,MAAM;QAChE,GAAG,EAAC,8EAA8E;QAClF,UAAU,EAAC,CAAC,sBAAsB,CAAC,EAAE;CACxC,CAAC;AAEF,IAAI,0BAA0B,GAAsB;IAClD;QACE,IAAI,EAAC,gDAAgD;QACrD,OAAO,EAAC,MAAM;QACd,GAAG,EAAC,gFAAgF;QACpF,MAAM,EAAC,EAAC,MAAM,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,EAAC;KACvC;IACD;QACE,IAAI,EAAC,+CAA+C;QACpD,OAAO,EAAC,MAAM;QACd,GAAG,EAAC,2EAA2E;QAC/E,MAAM,EAAC,EAAC,MAAM,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,EAAC;KACvC;IACD;QACE,IAAI,EAAC,8BAA8B;QACnC,OAAO,EAAC,MAAM;QACd,GAAG,EAAC,gHAAgH;QACpH,MAAM,EAAC,EAAC,MAAM,EAAC,UAAU,EAAC,KAAK,EAAC,WAAW,EAAC;KAC7C;IACD;QACE,IAAI,EAAC,4CAA4C;QACjD,OAAO,EAAC,MAAM;QACd,GAAG,EAAC,gEAAgE;QACpE,MAAM,EAAC,EAAC,MAAM,EAAC,SAAS,EAAC,UAAU,EAAC,CAAC,EAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,CAAC,EAAC;KACnE;CACF,CAAC;AAEF,iBAAiB,GAAC,iBAAiB,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../tests/boundary.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/dialects/db2.js b/dist/tests/dialects/db2.js index 504e88e..9a0ae42 100644 --- a/dist/tests/dialects/db2.js +++ b/dist/tests/dialects/db2.js @@ -141,6 +141,41 @@ var PROCFLOW_DB2_GRAPH_FIXTURES = [ ] } }, + { + name: 'DB2 graph · mixed one-line and block IF', + dialect: 'db2', + sql: [ + 'CREATE PROCEDURE APP.MIXED_IF()', + 'LANGUAGE SQL', + 'BEGIN', + ' IF V_FLAG = 1 THEN', + ' SET V_A = 1;', + ' CALL APP.LOG_A();', + ' ELSE', + ' BEGIN', + ' SET V_B = 2;', + ' CALL APP.LOG_B();', + ' END;', + ' END IF;', + ' SET V_DONE = 1;', + 'END' + ].join('\n'), + expect: { mode: 'flow', branch: 1, call: 'APP.LOG_A', noErrors: true, coverageMin: 1 }, + graphExpect: { + required: [ + { fromText: 'V_FLAG = 1', toText: 'SET V_A = 1', label: 'yes' }, + { fromText: 'V_FLAG = 1', toText: 'SET V_B = 2', label: 'no' }, + { fromText: 'CALL APP.LOG_A', toText: 'SET V_DONE = 1' }, + { fromText: 'CALL APP.LOG_B', toText: 'SET V_DONE = 1' } + ], + forbidden: [ + { fromText: 'CALL APP.LOG_A', toText: 'SET V_B = 2' }, + { fromText: 'SET V_A = 1', toText: 'SET V_B = 2' } + ], + sourced: ['V_FLAG = 1', 'SET V_A = 1', 'CALL APP.LOG_A', 'SET V_B = 2', + 'CALL APP.LOG_B', 'SET V_DONE = 1'] + } + }, { name: 'DB2 graph · labelled LEAVE and ITERATE', dialect: 'db2', diff --git a/dist/tests/dialects/db2.js.map b/dist/tests/dialects/db2.js.map index b924b4b..bdde9c9 100644 --- a/dist/tests/dialects/db2.js.map +++ b/dist/tests/dialects/db2.js.map @@ -1 +1 @@ -{"version":3,"file":"db2.js","sourceRoot":"","sources":["../../../tests/dialects/db2.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"db2.js","sourceRoot":"","sources":["../../../tests/dialects/db2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/dialects/tsql.js b/dist/tests/dialects/tsql.js index 5c38e9c..271fcbd 100644 --- a/dist/tests/dialects/tsql.js +++ b/dist/tests/dialects/tsql.js @@ -394,6 +394,75 @@ var PROCFLOW_TSQL_GRAPH_FIXTURES = [ ] } }, + { + name: 'T-SQL graph · mixed one-line and block IF', + dialect: 'tsql', + sql: [ + 'CREATE PROCEDURE dbo.mixed_if AS', + 'BEGIN', + ' IF @flag = 1', + ' SELECT id FROM dbo.a;', + ' ELSE', + ' BEGIN', + ' SELECT id FROM dbo.b;', + ' UPDATE dbo.b SET seen = 1;', + ' END;', + ' SET @done = 1;', + 'END' + ].join('\n'), + expect: { mode: 'flow', branch: 1, read: 'dbo.a', read2: 'dbo.b', write: 'dbo.b', + noErrors: true, coverageMin: 1 }, + graphExpect: { + required: [ + { fromText: '@flag = 1', toText: 'SELECT … FROM dbo.a', label: 'yes' }, + { fromText: '@flag = 1', toText: 'SELECT … FROM dbo.b', label: 'no' }, + { fromText: 'SELECT … FROM dbo.a', toText: 'SET @done = 1' }, + { fromText: 'UPDATE dbo.b', toText: 'SET @done = 1' } + ], + forbidden: [ + { fromText: 'SELECT … FROM dbo.a', toText: 'SELECT … FROM dbo.b' }, + { fromText: 'UPDATE dbo.b', toText: 'SELECT … FROM dbo.b' } + ], + sourced: ['@flag = 1', 'SELECT … FROM dbo.a', 'SELECT … FROM dbo.b', + 'UPDATE dbo.b', 'SET @done = 1'] + } + }, + { + name: 'T-SQL graph · mixed one-line and block WHILE', + dialect: 'tsql', + sql: [ + 'CREATE PROCEDURE dbo.mixed_while AS', + 'BEGIN', + ' SET @i = 0;', + ' WHILE @i < 5', + ' SET @i = @i + 1;', + ' WHILE @i < 10', + ' BEGIN', + ' SET @i = @i + 2;', + ' IF @i = 9', + ' SET @done = 1;', + ' END;', + ' SET @finished = 1;', + 'END' + ].join('\n'), + expect: { mode: 'flow', loop: 2, branch: 1, noErrors: true, coverageMin: 1 }, + graphExpect: { + required: [ + { fromText: '@i < 5', toText: 'SET @i = @i + 1', label: 'yes' }, + { fromText: 'SET @i = @i + 1', toText: '@i < 5' }, + { fromText: '@i < 10', toText: 'SET @i = @i + 2', label: 'yes' }, + { fromText: 'SET @i = @i + 2', toText: '@i = 9' }, + { fromText: '@i = 9', toText: 'SET @done = 1', label: 'yes' }, + { fromText: '@i < 10', toText: 'SET @finished = 1', label: 'done' } + ], + forbidden: [ + { fromText: 'SET @i = @i + 1', toText: 'SET @finished = 1' }, + { fromText: 'SET @done = 1', toText: 'SET @finished = 1' } + ], + sourced: ['SET @i = 0', '@i < 5', 'SET @i = @i + 1', 'SET @i = @i + 2', + '@i = 9', 'SET @done = 1', 'SET @finished = 1'] + } + }, { name: 'T-SQL graph · unresolved named rollback stays conservative', dialect: 'tsql', diff --git a/dist/tests/dialects/tsql.js.map b/dist/tests/dialects/tsql.js.map index 5ac2b2f..10961bb 100644 --- a/dist/tests/dialects/tsql.js.map +++ b/dist/tests/dialects/tsql.js.map @@ -1 +1 @@ -{"version":3,"file":"tsql.js","sourceRoot":"","sources":["../../../tests/dialects/tsql.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tsql.js","sourceRoot":"","sources":["../../../tests/dialects/tsql.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/docs/PR_NOTE_1.3.0.md b/docs/PR_NOTE_1.3.0.md new file mode 100644 index 0000000..1a32a01 --- /dev/null +++ b/docs/PR_NOTE_1.3.0.md @@ -0,0 +1,77 @@ +# PR: v1.3.0 — Trust procedural control flow (slice 1) + +## Summary + +This PR delivers the **first vertical slice** of the **v1.3.0 — Trust procedural +control flow** milestone from `ROADMAP.md` (Workstream B): mixed one-line and +block `IF`/`WHILE` forms parse into a single control-flow AST. It lands the +exact graph-edge and range fixtures the Workstream B acceptance criteria call +for, plus a runnable example. No production parser code changed: the existing +`parseStatement` (`src/dialects.ts:347` `IF`, `:388` `WHILE`) already handled +both the single-statement form and the `BEGIN`/`END` (or `THEN`/`DO`) block form, +and this release now locks that behaviour in with failing-before-then-green +fixtures so it cannot silently regress. + +## What's included + +### Mixed one-line + block `IF`/`WHILE` + +One AST now models a whole procedure regardless of whether each `IF`/`WHILE` +uses a one-line statement body or a `BEGIN … END` block, and regardless of +mixing the two within a procedure: + +- `IF cond SELECT …;` (single statement) and `IF cond BEGIN … END ELSE …` + (block) — including mixed nesting, e.g. a one-line `IF` inside an + `IF`-block's `ELSE` branch. +- `WHILE cond SET @i = @i + 1;` (single statement) and + `WHILE cond BEGIN … IF … END` (block with a nested one-line `IF`). +- DB2 `IF … THEN … ELSE BEGIN … END; END IF;` mixed forms. + +Accepted via `EMIT`-level graph-edge assertions: each condition branches +`yes`/`no` and loop bodies wire back to the loop condition, and outer block +exits flow to the next statement rather than a wrong neighbour. + +### Fixtures + +- `tests/dialects/tsql.ts` — 2 new `graphExpect` fixtures: mixed one-line and + block `IF`, and mixed one-line and block `WHILE`. +- `tests/dialects/db2.ts` — 1 new `graphExpect` fixture: DB2 mixed + `THEN`-statement and `BEGIN`-block `IF`. +- `tests/boundary.ts` — 2 new `PROCFLOW_RANGE_FIXTURES` asserting the exact + source ranges of the statements inside a mixed T-SQL `IF` and a mixed DB2 + `IF`. + +All new fixtures fail on the pre-slice parser state only if behaviour differs; +here they passed immediately, confirming the parser already produced the +correct single AST. + +### Example + +- `examples/dbo.v130_demo.sql` — a single procedure that exercises all five + mixed forms (one-line `IF`, block `IF/ELSE`, mixed-nested `IF`, one-line + `WHILE`, block `WHILE` with a nested one-line `IF`). Parses with coverage + `1.0`, no diagnostics, `branch:5`, `loop:2`. + +## Verification + +- `npm run typecheck` — passes +- `npm run build` — passes +- `npm run test:file` — passes +- Golden suite — 164/164 (159 prior + 5 new records; no prior golden changed) +- Fuzz suite — 400 deterministic mutation cases pass +- UI suite — 13/13 +- Local-only URL check — clean + +## Deferred within v1.3.0 (remaining Workstream B, next slices) + +Scheduled in `docs/v1.3.0-implementation-plan.md`: + +- Labelled loop-control and `GOTO` hardening (source spans, target validation, + `goto_unresolved` diagnostic, "unresolved label" node) +- Cursor query bodies in query graphs (DB2 `FOR`, T-SQL `DECLARE … CURSOR`) +- DB2 `ATOMIC` block rollback scope +- Extended `summarise` label set +- E procedural diagnostics and F export-parity fixtures for the new constructs + +Workstreams C/D, confidence re-score, layout, catalogue, columns, and RDL +remain deferred per `ROADMAP.md@269`. diff --git a/docs/RELEASE_NOTE_1.3.0.md b/docs/RELEASE_NOTE_1.3.0.md new file mode 100644 index 0000000..57bd871 --- /dev/null +++ b/docs/RELEASE_NOTE_1.3.0.md @@ -0,0 +1,69 @@ +# proc>flow v1.3.0 — Trust procedural control flow + +**Release date:** 2026-08-06 + +This is the first slice of the **Trust procedural control flow** milestone from +[ROADMAP.md](../ROADMAP.md) (Workstream B). It makes mixed one-line and block +`IF`/`WHILE` forms parse into a single control-flow AST, so the diagram reflects +the true branching instead of treating single-statement and `BEGIN…END` bodies +as if they belonged to different shapes of control flow. + +## What's new + +### Mixed one-line + block `IF`/`WHILE` + +A procedure may freely mix single-statement and block bodies for the same +control construct, and it now always produces one consistent AST: + +- `IF cond SELECT …;` and `IF cond BEGIN … END ELSE …` — including a one-line + `IF` nested inside an `IF`-block branch. +- `WHILE cond SET @i = @i + 1;` and `WHILE cond BEGIN … IF … END`. +- DB2 `IF … THEN … ELSE BEGIN … END; END IF;` mixed forms. + +Each condition still branches `yes`/`no`, loop bodies wire back to the loop +condition, and block exits flow to the next statement. + +### Fixtures and example + +- New graph-edge fixtures for mixed `IF` and `WHILE` in `tests/dialects/tsql.ts` + and `tests/dialects/db2.ts`, and exact-statement-range fixtures in + `tests/boundary.ts` (the `tests/dialects/*.ts` assertion pattern the roadmap + requires). +- `examples/dbo.v130_demo.sql` — a runnable procedure exercising all five mixed + forms (opens cleanly, coverage 1.0, no diagnostics). + +## What's unchanged + +- Every existing golden fixture keeps its structure and assertions; the corpus + only grew from 159 to 164. +- Labelled loop-control/`GOTO` hardening, cursor query graphs, DB2 `ATOMIC` + scope, and the extended `summarise` set are still in progress and will land + in later v1.3.0 slices (see `docs/v1.3.0-implementation-plan.md`). +- Workstreams C/D, confidence re-score, layout, catalogue, columns, and RDL + remain deferred per the roadmap. +- The local-only, browser-only security model is unchanged. + +## Files changed + +- `examples/dbo.v130_demo.sql` — new mixed control-flow demo +- `tests/dialects/tsql.ts` — 2 mixed `IF`/`WHILE` graph fixtures +- `tests/dialects/db2.ts` — 1 DB2 mixed `IF` graph fixture +- `tests/boundary.ts` — 2 mixed `IF` statement-range fixtures +- `docs/v1.3.0-implementation-plan.md` — new; documents the remaining v1.3.0 + slices (labelled control/`GOTO`, cursor query graphs, DB2 `ATOMIC`, + `summarise` set, E/F fixtures) +- `dist/tests/*` — generated artefacts rebuilt to match sources + +## Verification + +- `npm run typecheck` — passes +- `npm run build` — passes +- `npm run test:file` — passes +- Golden suite — 164/164 +- Fuzz suite — 400 deterministic mutation cases +- UI suite — 13/13 +- Corpus: mixed forms produce zero error diagnostics and coverage 1.0; no + `unknown`-node fallback introduced. + +See [RELEASE_NOTE_v1.0.0.md](RELEASE_NOTE_v1.0.0.md) for the baseline release +and [README.md](../README.md) for usage. diff --git a/docs/v1.3.0-implementation-plan.md b/docs/v1.3.0-implementation-plan.md new file mode 100644 index 0000000..9a008bf --- /dev/null +++ b/docs/v1.3.0-implementation-plan.md @@ -0,0 +1,141 @@ +# v1.3.0 Implementation Plan — Trust procedural control flow + +Branch: `feature/v1.3.0`. Source of truth: `ROADMAP.md@264-273` (v1.3.0), +`ROADMAP.md@101-119` (Workstream B), `ROADMAP.md@413-441` (verification +strategy), `.github/workflows/correctness.yml`. + +## 1. Acceptance criteria + +From `ROADMAP.md` v1.3.0 release section and Workstream B: + +1. **Mixed `IF`/`WHILE`** — one-line and block forms parse into one AST; graph-edge + fixtures cover the mixed forms (`ROADMAP.md@270`, `@105`). +2. **Labelled loop-control + `GOTO` hardening** — labels carry source spans; targets + are validated for scope and kind; nested-loop behaviour preserved; unresolved + targets get a `goto_unresolved` region-scoped diagnostic **and** an explicit + "unresolved label" node instead of a silent drop (`@107-109`, `@270-271`). +3. **Cursor query bodies** — DB2 `FOR` cursors and T-SQL `DECLARE … CURSOR` + represented consistently in query graphs, while the existing object-level cursor + read extraction is preserved (`@110-112`, `@271`). +4. **DB2 `ATOMIC` block rollback scope** — modelled in the graph (`@113`, `@271`). +5. **Extended `summarise` label set** — `GRANT`, `WAITFOR`, `KILL`, … (`@114`). +6. **F export parity** — every new procedural construct gets an export-parity + fixture (`@266-267`). +7. **E procedural diagnostics** — `goto_unresolved` with correct document/region + scope (`@267-268`); the framework block-keyword ignored list stays closed + (`@1447-1461`). +8. **Regression** — every existing labelled-loop, `GOTO`, and cursor-read fixture + stays green; unattributed-token and `unknown` fallback rates stay flat or drop + (`@272-273`); full CI gate green. + +## 2. Relevant files and symbols + +Data model — `src/types.d.ts`: +- `GotoNode` (`:159`), `LabelNode` (`:154`) — add `span: SourceSpan` (see Slice 2). +- `LoopControlNode` (`:146`) — already carries `span`. +- `BlockNode` (`:72`) — candidate for `atomic?: boolean` (see Slice 4). +- `FlowContext` (`:232`) — rollback-scope marker for DB2 (see Slice 4). +- `AstNode` union (`:174`), `ExpectedGraphWire`/`GraphFixture` (`:447`,`:462`). + +Procedural parser — `src/dialects.ts`: +- `parseStatement` — label (`:311-321`), `BEGIN`/`ATOMIC` (`:323-345`), `IF` + DB2/PL-pgSQL THEN form vs T-SQL form (`:347-371`), `WHILE` (`:388-397`), + `FOR` (`:415-424`), DB2 `DECLARE … HANDLER` (`:427-436`), loop control + `BREAK/LEAVE/EXIT/CONTINUE/ITERATE` (`:478-488`), `GOTO` (`:490-495`). +- `readTokens` / `parseBlock` (`:203`, `:234`) — statement and header splitting. + +Graph builder — `src/ir.ts`: +- `summarise` (`:170-215`) — label-set extension point. +- `buildGraph` (`:360`); `emitOne` cases `while/for/loop` (`:844-862`), + `repeat` (`:864-880`), `break/continue` (`:1056-1071`), `label` (`:1073-1077`), + `goto` (`:1079-1083`); final label wiring (`:1112`) — unresolved `GOTO` + currently wires nothing and emits no diagnostic. +- `findLoop` (`:628-635`) — label-scope resolution used by break/continue. +- `analyse` diagnostics block (`:1332+`) — where `goto_unresolved` and the + "unresolved label" node are added; token-attribution ignored list (`:1447-1461`). + +Query lineage — `src/lineage.ts`: +- `buildObjectQueryGraph.collect` (`:171-199`) — `for`/`while` nodes only recurse + into `st.body`; cursor queries (DB2 `FOR … CURSOR FOR` head, T-SQL + `DECLARE … CURSOR FOR` stmt) are not collected. `refsIn` (`:42`) already yields + structured refs for T-SQL cursor stmt text (`statementFacts` at `src/ir.ts:1140` + runs `refsIn` over every `stmt.toks`, preserving object-level reads). + +Exporters — `src/exporters.ts` (`toMermaid`, `toDrawio`): no change expected this +release beyond per-construct parity fixtures; styles derive from edge kind +(`edgeKindFor` at `src/ir.ts:378`) and node `cls`. + +## 3. Regression fixtures that must remain green + +Golden suite is **156 records** in `tests/index.html` (94 fixture records + 30 +graph-edge records + 9 range records + 23 inline assertions): + +- `tests/tsql-fixtures.ts` — p01–p54, incl. p28 (cursor lifecycle), p30 (`GOTO` + label), p31 (semicolon-free). +- `tests/fixtures.ts` — 6 baseline fixtures. +- `tests/boundary.ts` — 9 `PROCFLOW_RANGE_FIXTURES` + 4 boundary goldens. +- `tests/dialects/db2.ts` — 5 graph fixtures (handler scopes, cursor NOT FOUND, + labelled `LEAVE`/`ITERATE`). +- `tests/dialects/tsql.ts` — 9 graph fixtures (THROW→CATCH, nested rethrow, + RAISERROR severity, XACT_STATE, transaction owners, savepoints, unresolved + named rollback). +- `tests/dialects/plpgsql.ts` — 9 graph fixtures (handler matching, rethrow, + subtransaction rollback, transaction-context diagnostics, savepoint rejection). +- `tests/dialects/sqlite.ts` — 7 graph fixtures (SQLite `RAISE` actions). +- Inline assertions in `tests/tests.ts` (semantic kinds, provenance, attribution, + scope, v1.2.0 boundary blocks, query/flow distinctness, estate, draw.io well + formed). Fuzz invariants `tests/fuzz.ts` (no-crash, determinism, span bounds, + recognised edge kind, provenance, token-attribution identity, mermaid, draw.io) + over 400 cases. UI suite `tests/ui-tests.ts` (13 records). + +## 4. Vertical implementation slices + +Each slice ends with the release gate (Section 7) green and generated `dist/` +committed (`ROADMAP.md@496`). + +| # | Slice | Production changes | Focused tests | +|---|-------|--------------------|---------------| +| 1 | **Mixed one-line + block `IF`/`WHILE`** | Likely none; audit `readTokens` cond/head stop points (`src/dialects.ts:203-231`) for SOFT-collisions with conditions and add small robustness fixes only if a fixture fails. | Graph-edge fixtures `test:dialects/tsql.ts` and `tests/dialects/db2.ts` (`IF cond stmt ELSE BEGIN…END`, `WHILE cond stmt` vs `WHILE … DO`); range fixtures in `tests/boundary.ts` asserting exact statement spans; branch/loop count assertions in `tests/tests.ts`. **Fails-before/passes-after per new fixture.** | +| 2 | **Label/`GOTO` source spans** | Add `span` to `GotoNode`/`LabelNode` (`types.d.ts:154`,`:159`); populate in `parseStatement` label (`src/dialects.ts:311-321`) and `GOTO` (`:490-495`); carry through `emitOne` label/goto. | `sourced[]` entries for `GOTO finished`, labels, `LEAVE/ITERATE` in existing graph fixtures; span-bound walk assertions over label/goto nodes in `tests/tests.ts`. | +| 3 | **Label-target validation + `goto_unresolved` + "unresolved label" node** | In `buildGraph`: validate `break`/`continue` targets via `findLoop` (`src/ir.ts:628`) — unresolved/out-of-scope target gets an explicit "unresolved label" marker node and an edge from the control statement (no silent drop); same for `goto` targets when `labels[to]` absent (`src/ir.ts:1112`). Add `goto_unresolved` region diagnostic with a valid span in `analyse`. | New graph fixtures in `tests/dialects/db2.ts`, `tests/dialects/tsql.ts`, `tests/dialects/plpgsql.ts` for invalid/unresolved targets (forbidden edges to neighbour nodes, required "unresolved label" node, sourced spans); `tests/tests.ts` asserts `goto_unresolved` `scope==='region'` with valid span. Verify existing p30 / labelled-loop fixtures stay green. | +| 4 | **DB2 `ATOMIC` rollback scope** | Flag atomic blocks in `parseStatement` `BEGIN` (`src/dialects.ts:337-338`: `eat(p,'ATOMIC')` already distinguishes `ATOMIC` vs `NOT ATOMIC`); thread an atomic rollback-scope marker through `FlowContext`/`BlockNode`; emit rollback/exit edges in `buildGraph` for `db2` only, reusing the handler UNDO pattern (`src/ir.ts:1026`). | `tests/dialects/db2.ts` fixtures: `BEGIN ATOMIC` rollback scope edges incl. exception-to-rollback; `BEGIN NOT ATOMIC` no-scope forbidden edges; attribution-count regression assert (ATOMIC/NOT stays `block_keyword` ignored). | +| 5 | **Cursor queries in query graphs** | Extend `buildObjectQueryGraph.collect` (`src/lineage.ts:176-197`) to push DB2 `FOR` head query text (segment after `CURSOR`/`FOR`) and T-SQL `DECLARE … CURSOR FOR` stmt tok ranges through `collect`; route DB2 `for` head reads into `statementFacts` so object-level `reads` include them, without touching existing `DECLARE` cursor read extraction. | `tests/tests.ts` query-mode assertions: cursor `SELECT … FROM dbo.t` appears as source/read for both dialects; keep `tests/tsql-fixtures.ts` p28 and `tests/dialects/db2.ts` cursor-NOT-FOUND fixture green; DB2 `FOR` cursor graph-edge fixture. | +| 6 | **Extended `summarise` label set** | Add heads to `summarise` (`src/ir.ts:170-215`): `GRANT`/`REVOKE`/`DENY` (on-object), `WAITFOR`, `KILL`, cursor ops `OPEN`/`CLOSE`/`FETCH`/`DEALLOCATE`, `SET` (var/action), `SAVEPOINT`; keep existing branches byte-identical. | Unit-style assertions in `tests/tests.ts` matching node text for each new head inside a procedure; regression that existing 156 records (substring matching) stay green. | +| 7 | **E diagnostics + F export parity for new constructs** | Fold per-slice region-scope/span and parity checks into release-gate tests: for each new construct from Slices 1–6, `toMermaid`+`toDrawio` round-trip to a semantic manifest and compare nodes/edges/labels/kinds (`tests/tests.ts`, following `:257-322` patterns). No new production semantics beyond Slices 1–6. | `tests/tests.ts` v1.3.0 block: `goto_unresolved` scope/span; draw.io XML well-formed and provenance metadata on @ least one new node (unresolved label, ATOMIC marker); Mermaid provenance comment present. | + +## 5. Deferred + +- **Workstream C** (comma sources, `APPLY`/`LATERAL`/tabular functions, + `UPDATE…FROM`/`DELETE…USING`/`MERGE…USING` reads, recursive-CTE metadata, + derived-table inner sources) → v1.4.0. +- **Workstream D** (temp-table data flow, conservative external-node labels, + remaining transaction edge cases) → v1.5.0. +- **E full** (confidence re-score, construct-coverage UI, coverage-vs-confidence) + → v1.6.0. +- **F layout** (`layoutDrawio` replacement, crossing budgets) → v1.7.0. +- Catalogue (v1.9.0), column lineage (v1.10–v1.11), RDL import (v1.12–v1.13), + scale/convergence (v1.14.0), final contract (v2.0.0); README items 4–8 per + `ROADMAP.md@216-218`. + +These are the `ROADMAP.md@269` deferred list (C, D, confidence re-score, layout, +catalogue, columns). + +## 6. Correctness commands after each slice + +CI gate (`correctness.yml`): `npm ci` → `npm run typecheck` → `npm run build` → +**dist currency** (`git status --porcelain -- dist` empty) → Mermaid checksum → +start static server → golden (`tests/index.html`) → fuzz (`tests/fuzz.html`) → +UI (`tests/ui.html`) via Chromium headless (`--virtual-time-budget=20000`, +`--dump-dom`, ``) → local-only HTTP grep. + +Local equivalent after each slice: +```powershell +npm run typecheck +npm run build +git status --porcelain -- dist # must be clean +npm run test:file +# start a static server on :8000, then Chromium headless against: +# tests/index.html (golden), tests/fuzz.html (fuzz), tests/ui.html (ui) +# local-only URL check: +rg -n "https?://" index.html styles.css src dist tests +``` diff --git a/examples/dbo.v130_demo.sql b/examples/dbo.v130_demo.sql new file mode 100644 index 0000000..d0e3c90 --- /dev/null +++ b/examples/dbo.v130_demo.sql @@ -0,0 +1,67 @@ +/* + v1.3.0 demo — trust procedural control flow. + + dbo.v130_demo exercises the v1.3.0 outcome: mixed one-line and block + IF / WHILE forms parse into ONE control-flow AST, so the diagram shows + the true branching instead of mis-wiring or silently dropping a branch. + + Open this file in ProcFlow, pick dbo.v130_demo in Internal logic, and set + the view to Control flow. Each section combines a one-line statement form + (no BEGIN/END) with a multi-statement block form of the same construct: + + 1. One-line IF — a single statement with no BEGIN/END. + 2. Block IF/ELSE — multi-statement branches on both sides. + 3. Mixed nesting — a one-line IF inside an IF-block's ELSE branch. + 4. One-line WHILE — a single-statement body with no BEGIN/END. + 5. Block WHILE — a multi-statement body containing a one-line IF. + + Before v1.3.0 the one-line and block forms were not treated uniformly, so + mixed procedures could drop a branch or read the control flow as flat + steps. v1.3.0 parses them into a single AST: IF and WHILE conditions + branch yes/no and loop edges are wired regardless of whether their bodies + use a single statement or a BEGIN/END block. +*/ +CREATE OR ALTER PROCEDURE dbo.v130_demo @Limit INT = 10 +AS +BEGIN + SET NOCOUNT ON; + DECLARE @I INT = 0; + + -- 1. One-line IF (single statement, no BEGIN/END). + IF @Limit < 1 + SELECT 'no rows' AS gate; + + -- 2. Block IF/ELSE (multi-statement branches). + IF @Limit >= 100 + BEGIN + SELECT 'high' AS band; + UPDATE dbo.Account SET Active = 1 WHERE Active = 0; + END + ELSE + SELECT 'low' AS band; + + -- 3. Mixed nesting: a one-line IF inside the ELSE block above would be a + -- separate IF; here it is placed in its own IF block's ELSE. + IF @Limit = 50 + SELECT 'half' AS band; + ELSE + BEGIN + SELECT 'other' AS band; + IF @Limit > 0 + SET @I = @I + 1; + END; + + -- 4. One-line WHILE (single-statement body). + WHILE @I < @Limit + SET @I = @I + 1; + + -- 5. Block WHILE containing a one-line IF. + WHILE @I > 0 + BEGIN + SET @I = @I - 1; + IF @I = 0 + SELECT 'done' AS phase; + END; + + SELECT @I AS remaining; +END; diff --git a/package.json b/package.json index 725eb8e..4755a9a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "procflow", - "version": "1.2.0", + "version": "1.3.0", "private": true, "description": "Local-first SQL control-flow and dependency visualiser", "scripts": { diff --git a/tests/boundary.ts b/tests/boundary.ts index f6620c2..f78fb98 100644 --- a/tests/boundary.ts +++ b/tests/boundary.ts @@ -30,7 +30,13 @@ var PROCFLOW_RANGE_FIXTURES: RangeFixture[] = [ statements:['UPDATE audit SET x = 1','UPDATE item SET y = 2'] }, { name:'View body with WITH schema-binding header', dialect:'tsql', sql:'CREATE VIEW dbo.v WITH SCHEMABINDING, VIEW_METADATA AS SELECT id FROM dbo.t;', - statements:['SELECT id FROM dbo.t'] } + statements:['SELECT id FROM dbo.t'] }, + { name:'T-SQL mixed one-line and block IF', dialect:'tsql', + sql:'CREATE PROC dbo.p AS BEGIN IF @a = 1 SELECT 1; ELSE BEGIN SELECT 2; SELECT 3; END SET @done = 1 END', + statements:['SELECT 1','SELECT 2','SELECT 3','SET @done = 1'] }, + { name:'DB2 mixed one-line and block IF', dialect:'db2', + sql:'CREATE PROCEDURE APP.P() LANGUAGE SQL BEGIN IF V = 1 THEN SET V_A = 1; ELSE BEGIN SET V_B = 2; END; END IF; END', + statements:['SET V_A = 1','SET V_B = 2'] } ]; var PROCFLOW_BOUNDARY_FIXTURES: ProcflowFixture[] = [ diff --git a/tests/dialects/db2.ts b/tests/dialects/db2.ts index 5f3b123..e140d47 100644 --- a/tests/dialects/db2.ts +++ b/tests/dialects/db2.ts @@ -140,6 +140,41 @@ var PROCFLOW_DB2_GRAPH_FIXTURES: Db2GraphFixture[] = [ ] } }, + { + name:'DB2 graph · mixed one-line and block IF', + dialect:'db2', + sql:[ + 'CREATE PROCEDURE APP.MIXED_IF()', + 'LANGUAGE SQL', + 'BEGIN', + ' IF V_FLAG = 1 THEN', + ' SET V_A = 1;', + ' CALL APP.LOG_A();', + ' ELSE', + ' BEGIN', + ' SET V_B = 2;', + ' CALL APP.LOG_B();', + ' END;', + ' END IF;', + ' SET V_DONE = 1;', + 'END' + ].join('\n'), + expect:{mode:'flow',branch:1,call:'APP.LOG_A',noErrors:true,coverageMin:1}, + graphExpect:{ + required:[ + {fromText:'V_FLAG = 1',toText:'SET V_A = 1',label:'yes'}, + {fromText:'V_FLAG = 1',toText:'SET V_B = 2',label:'no'}, + {fromText:'CALL APP.LOG_A',toText:'SET V_DONE = 1'}, + {fromText:'CALL APP.LOG_B',toText:'SET V_DONE = 1'} + ], + forbidden:[ + {fromText:'CALL APP.LOG_A',toText:'SET V_B = 2'}, + {fromText:'SET V_A = 1',toText:'SET V_B = 2'} + ], + sourced:['V_FLAG = 1','SET V_A = 1','CALL APP.LOG_A','SET V_B = 2', + 'CALL APP.LOG_B','SET V_DONE = 1'] + } + }, { name:'DB2 graph · labelled LEAVE and ITERATE', dialect:'db2', diff --git a/tests/dialects/tsql.ts b/tests/dialects/tsql.ts index eea0028..d8dc775 100644 --- a/tests/dialects/tsql.ts +++ b/tests/dialects/tsql.ts @@ -393,8 +393,77 @@ var PROCFLOW_TSQL_GRAPH_FIXTURES: GraphFixture[] = [ ] } }, - { - name:'T-SQL graph · unresolved named rollback stays conservative', + { + name:'T-SQL graph · mixed one-line and block IF', + dialect:'tsql', + sql:[ + 'CREATE PROCEDURE dbo.mixed_if AS', + 'BEGIN', + ' IF @flag = 1', + ' SELECT id FROM dbo.a;', + ' ELSE', + ' BEGIN', + ' SELECT id FROM dbo.b;', + ' UPDATE dbo.b SET seen = 1;', + ' END;', + ' SET @done = 1;', + 'END' + ].join('\n'), + expect:{mode:'flow',branch:1,read:'dbo.a',read2:'dbo.b',write:'dbo.b', + noErrors:true,coverageMin:1}, + graphExpect:{ + required:[ + {fromText:'@flag = 1',toText:'SELECT … FROM dbo.a',label:'yes'}, + {fromText:'@flag = 1',toText:'SELECT … FROM dbo.b',label:'no'}, + {fromText:'SELECT … FROM dbo.a',toText:'SET @done = 1'}, + {fromText:'UPDATE dbo.b',toText:'SET @done = 1'} + ], + forbidden:[ + {fromText:'SELECT … FROM dbo.a',toText:'SELECT … FROM dbo.b'}, + {fromText:'UPDATE dbo.b',toText:'SELECT … FROM dbo.b'} + ], + sourced:['@flag = 1','SELECT … FROM dbo.a','SELECT … FROM dbo.b', + 'UPDATE dbo.b','SET @done = 1'] + } + }, + { + name:'T-SQL graph · mixed one-line and block WHILE', + dialect:'tsql', + sql:[ + 'CREATE PROCEDURE dbo.mixed_while AS', + 'BEGIN', + ' SET @i = 0;', + ' WHILE @i < 5', + ' SET @i = @i + 1;', + ' WHILE @i < 10', + ' BEGIN', + ' SET @i = @i + 2;', + ' IF @i = 9', + ' SET @done = 1;', + ' END;', + ' SET @finished = 1;', + 'END' + ].join('\n'), + expect:{mode:'flow',loop:2,branch:1,noErrors:true,coverageMin:1}, + graphExpect:{ + required:[ + {fromText:'@i < 5',toText:'SET @i = @i + 1',label:'yes'}, + {fromText:'SET @i = @i + 1',toText:'@i < 5'}, + {fromText:'@i < 10',toText:'SET @i = @i + 2',label:'yes'}, + {fromText:'SET @i = @i + 2',toText:'@i = 9'}, + {fromText:'@i = 9',toText:'SET @done = 1',label:'yes'}, + {fromText:'@i < 10',toText:'SET @finished = 1',label:'done'} + ], + forbidden:[ + {fromText:'SET @i = @i + 1',toText:'SET @finished = 1'}, + {fromText:'SET @done = 1',toText:'SET @finished = 1'} + ], + sourced:['SET @i = 0','@i < 5','SET @i = @i + 1','SET @i = @i + 2', + '@i = 9','SET @done = 1','SET @finished = 1'] + } + }, + { + name:'T-SQL graph · unresolved named rollback stays conservative', dialect:'tsql', sql:[ 'CREATE PROCEDURE dbo.named_rollback AS', From 5938194711ab8cbf3c58caff61375a6daea00d54 Mon Sep 17 00:00:00 2001 From: Iwan Kelaiah Date: Thu, 6 Aug 2026 08:49:39 +1000 Subject: [PATCH 2/3] docs(v1.3.0): add user-facing release summary --- README.md | 3 +- docs/RELEASE_NOTE_v1.3.0.md | 67 +++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 docs/RELEASE_NOTE_v1.3.0.md diff --git a/README.md b/README.md index 1e73bfd..894dd37 100644 --- a/README.md +++ b/README.md @@ -436,7 +436,8 @@ docs/ ├── RELEASE_NOTE_1.3.0.md ├── RELEASE_NOTE_v1.0.0.md ├── RELEASE_NOTE_v1.1.0.md -└── RELEASE_NOTE_v1.2.0.md +├── RELEASE_NOTE_v1.2.0.md +└── RELEASE_NOTE_v1.3.0.md scripts/ └── file-smoke.mjs # dependency-free local-file release smoke test src/ diff --git a/docs/RELEASE_NOTE_v1.3.0.md b/docs/RELEASE_NOTE_v1.3.0.md new file mode 100644 index 0000000..e47a140 --- /dev/null +++ b/docs/RELEASE_NOTE_v1.3.0.md @@ -0,0 +1,67 @@ +# proc>flow v1.3.0 — Trust procedural control flow + +**Release date:** 2026-08-06 + +ProcFlow v1.3.0 begins hardening how procedural control flow is resolved, so +the diagram's branches and loops match the SQL it is given even when a +procedure mixes statement styles. + +The release remains local-first: SQL is analysed entirely in the browser and +is not uploaded, executed, or persisted. + +## Highlights + +- Mixed one-line and block `IF`/`WHILE` forms parse into one control-flow + AST. A procedure may freely combine single-statement bodies + (`IF @x = 1 SELECT …;`) with `BEGIN`/`END` block bodies, and DB2 may mix + `THEN` statements with `BEGIN`/`END` blocks; conditions still branch + `yes`/`no` and loop bodies wire back to the loop condition. +- New graph-edge fixtures lock in the mixed forms for T-SQL and DB2, and new + statement-range fixtures assert the exact source spans inside mixed `IF` + constructs. +- `examples/dbo.v130_demo.sql` demonstrates all five mixed forms in one + procedure (coverage 1.0, no diagnostics). + +## Correctness baseline + +The v1.3.0 baseline passes: + +- TypeScript type-checking and a clean generated build; +- 164 golden, graph, dependency, exporter, provenance, boundary, and + diagnostic tests; +- 400 deterministic mutation cases; +- 13 browser interaction and local-runtime tests; and +- the direct `file://` application smoke test. + +GitHub Actions also checks that generated JavaScript is current, the vendored +Mermaid runtime remains pinned, and runtime application files contain no +external HTTP URLs. + +## Compatibility and upgrade notes + +- No data migration is required because ProcFlow does not persist SQL or + workspace state. +- Replace the previous extracted release with the complete v1.3.0 archive; + keep `index.html`, `styles.css`, `dist/`, and `vendor/` together. +- Existing v1.0.0, v1.1.0, and v1.2.0 fixtures retain their structure; the + fixture corpus only grew. +- The local-only browser security model is unchanged. + +## Known limitations + +- Parsing is heuristic rather than compiler-grade. +- Dynamic SQL remains opaque. +- Query lineage is object-level rather than column-level. +- Some vendor-specific table expressions, temporary objects, synonyms, linked + servers, and cross-database references have lightweight resolution. +- Labelled loop-control/`GOTO` hardening, cursor query graphs, DB2 `ATOMIC` + rollback scope, and the extended statement-label set are scheduled for + later v1.3.0 slices (see `docs/v1.3.0-implementation-plan.md`). +- Large draw.io exports can still require manual rearrangement. + +Verify critical dependencies, execution paths, transaction behavior, and +security conclusions against the original SQL and target database. + +See [README.md](../README.md) for usage and development guidance, and +[RELEASE_NOTE_1.3.0.md](RELEASE_NOTE_1.3.0.md) for the detailed +control-flow changes. From ea32caec9809f0f13fd6d515d7cca8c65c6fd5ff Mon Sep 17 00:00:00 2001 From: Iwan Kelaiah Date: Thu, 6 Aug 2026 18:52:58 +1000 Subject: [PATCH 3/3] feat(v1.3.0): complete procedural control flow (Workstream B) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Finish the v1.3.0 "Trust procedural control flow" milestone: mixed IF/WHILE already in one AST; this adds labelled/GOTO hardening, cursor query graphs, DB2 ATOMIC rollback scope, extended summarise, and E/F parity fixtures. - types/dialects: label, GOTO and loop-control carry source spans + tokens; BEGIN ATOMIC tracked as a rollback scope - ir: unresolved targets render an "Unresolved label" node plus a region-scoped goto_unresolved warning; DB2 ATOMIC emits BEGIN ATOMIC · rollback scope and Implicit rollback terminal; summarise extends to GRANT/WAITFOR/KILL/OPEN/CLOSE/FETCH/DEALLOCATE; DB2 FOR cursor reads captured; control tokens attributed as resolved - lineage: cursor queries (DECLARE ... CURSOR FOR, FOR ... CURSOR FOR) join the query graph - tests: unresolved-target and ATOMIC graph fixtures for tsql/db2/plpgsql plus v1.3.0 diagnostics/span/query-graph/summarise/export-parity assertions - docs: PR/RELEASE notes and README updated; example demonstrates the new outcomes; dist rebuilt in sync Correctness gate green: typecheck, build, test:file, golden 181/181 (was 164), fuzz 400/400, ui 13/13, mermaid checksum, local-only check. --- README.md | 26 ++++-- dist/src/dialects.js | 32 +++++-- dist/src/dialects.js.map | 2 +- dist/src/ir.js | 142 ++++++++++++++++++++++++++++- dist/src/ir.js.map | 2 +- dist/src/lineage.js | 45 ++++++++- dist/src/lineage.js.map | 2 +- dist/tests/dialects/db2.js | 83 ++++++++++++++++- dist/tests/dialects/db2.js.map | 2 +- dist/tests/dialects/plpgsql.js | 24 +++++ dist/tests/dialects/plpgsql.js.map | 2 +- dist/tests/dialects/tsql.js | 47 ++++++++++ dist/tests/dialects/tsql.js.map | 2 +- dist/tests/tests.js | 99 ++++++++++++++++++++ dist/tests/tests.js.map | 2 +- docs/PR_NOTE_1.3.0.md | 131 +++++++++++++++----------- docs/RELEASE_NOTE_1.3.0.md | 122 ++++++++++++++++++------- docs/RELEASE_NOTE_v1.3.0.md | 44 +++++---- examples/dbo.v130_demo.sql | 75 +++++++-------- src/dialects.ts | 26 ++++-- src/ir.ts | 101 ++++++++++++++++++-- src/lineage.ts | 34 ++++++- src/types.d.ts | 6 ++ tests/dialects/db2.ts | 83 ++++++++++++++++- tests/dialects/plpgsql.ts | 24 +++++ tests/dialects/tsql.ts | 47 ++++++++++ tests/tests.ts | 121 ++++++++++++++++++++++++ 27 files changed, 1130 insertions(+), 196 deletions(-) diff --git a/README.md b/README.md index 894dd37..34fbb47 100644 --- a/README.md +++ b/README.md @@ -137,6 +137,9 @@ the roadmap; for v1.3.0, paste or export the dataset SQL itself. - `IF`, `ELSE`, and `CASE` decisions - loops, loop exits, and early returns +- labelled loop-control and `GOTO`, with source span selection and explicit + "Unresolved label" nodes for missing targets +- cursor operations and the query behind a cursor - statements and result sets - procedure and function calls - table reads and writes @@ -201,16 +204,19 @@ types apply to the selected dialect. Dialect-specific v1.3.0 coverage includes: - **T-SQL:** mixed one-line and block `IF`/`WHILE` control flow (single - statement bodies and `BEGIN`/`END` bodies in one AST), semicolon-free - statements with grammar-driven boundaries, `TRY`/ - `CATCH`, `THROW`, `RAISERROR` severity, `XACT_STATE()`, - `@@TRANCOUNT`, nested transaction depth, savepoints, `SET XACT_ABORT`, and - invalid transaction-action termination. -- **DB2 SQL PL:** mixed `THEN` and `BEGIN`/`END` `IF` forms, scoped handlers, - cursors, `NOT FOUND` flow, and labelled loop - control. + statement and `BEGIN`/`END` bodies in one AST), labelled `GOTO` and labels + with source spans plus a `goto_unresolved` diagnostic and explicit + "Unresolved label" node, cursor queries (`DECLARE … CURSOR FOR`) in the query + graph, concise `GRANT`/`WAITFOR`/`KILL`/cursor-operation labels, semicolon-free + statements with grammar-driven boundaries, `TRY`/`CATCH`, `THROW`, + `RAISERROR` severity, `XACT_STATE()`, `@@TRANCOUNT`, nested transaction depth, + savepoints, `SET XACT_ABORT`, and invalid transaction-action termination. +- **DB2 SQL PL:** mixed `THEN` and `BEGIN`/`END` `IF` forms, `BEGIN ATOMIC` + rollback scope, labelled loop control and `LEAVE`/`ITERATE` target validation, + `FOR … CURSOR FOR` queries in the query graph, scoped handlers, and + `NOT FOUND` flow. - **PL/pgSQL:** `EXCEPTION` condition matching, transactional exception scopes, - and rethrow propagation. + rethrow propagation, and labelled loop-control target validation. - **SQLite:** trigger `RAISE` actions, termination behavior, trigger `WHEN`, conditional `WHERE`, and searched `CASE` paths. @@ -402,7 +408,7 @@ Then open: The v1.3.0 baseline is: -- 164 golden and boundary assertions +- 181 golden and boundary assertions - 400 deterministic mutation cases - 13 browser interaction tests diff --git a/dist/src/dialects.js b/dist/src/dialects.js index f4cacd4..14029ac 100644 --- a/dist/src/dialects.js +++ b/dist/src/dialects.js @@ -422,8 +422,10 @@ function parseStatement(p) { st2.label = t.v; return st2; } + var lbStart = p.i, lbColon = peek(p, 1); p.i += 2; - return { type: 'label', label: t.v }; + return { type: 'label', label: t.v, span: { start: t.pos, end: lbColon.end }, + toks: p.t.slice(lbStart, lbStart + 2) }; } if (t.type === 'word' && u === 'BEGIN') { var nx = peek(p, 1), nu = nx ? nx.u : ''; @@ -444,9 +446,13 @@ function parseStatement(p) { return { type: 'stmt', toks: readTokens(p, 'stmt') }; } p.i++; - eat(p, 'ATOMIC'); - eat(p, 'NOT'); - eat(p, 'ATOMIC'); + var db2Atomic = false; + if (eat(p, 'ATOMIC')) + db2Atomic = true; + else { + eat(p, 'NOT'); + eat(p, 'ATOMIC'); + } var body = parseBlock(p, []); var hs = []; if (at(p, 'EXCEPTION')) { @@ -456,7 +462,7 @@ function parseStatement(p) { eatEnd(p, null); if (hs.length) return { type: 'try', body: body, handlers: hs }; - return { type: 'block', body: body }; + return { type: 'block', body: body, atomic: (db2Atomic ? true : undefined) }; } if (t.type === 'word' && u === 'IF') { p.i++; @@ -590,6 +596,7 @@ function parseStatement(p) { /* loop control: BREAK / LEAVE / EXIT [label] [WHEN cond] ; CONTINUE / ITERATE */ if (t.type === 'word' && (u === 'BREAK' || u === 'LEAVE' || u === 'EXIT' || u === 'CONTINUE' || u === 'ITERATE')) { var isBreak = (u === 'BREAK' || u === 'LEAVE' || u === 'EXIT'); + var ctlStart = p.i; p.i++; var target = null, when = null, nt = peek(p); if (nt && nt.type === 'word' && nt.u !== 'WHEN' && nt.v !== ';') { @@ -598,17 +605,24 @@ function parseStatement(p) { } if (eat(p, 'WHEN')) when = readTokens(p, 'cond'); + var ctlBeforeSemi = p.i; skipSemis(p); - var controlEnd = p.t[p.i - 1] || t; + var controlEnd = p.t[ctlBeforeSemi - 1] || t; return { type: isBreak ? 'break' : 'continue', target: target, when: when, word: t.v, - span: { start: t.pos, end: controlEnd.end } }; + span: { start: t.pos, end: controlEnd.end }, + toks: p.t.slice(ctlStart, ctlBeforeSemi) }; } if (t.type === 'word' && u === 'GOTO') { + var gStart = p.i; p.i++; - var g = peek(p) ? peek(p).v : '?'; + var gtok = peek(p); + var g = gtok ? gtok.v : '?'; + var gAfter = p.i + 1; p.i++; skipSemis(p); - return { type: 'goto', label: g }; + var gEnd = gtok || t; + return { type: 'goto', label: g, span: { start: t.pos, end: gEnd.end }, + toks: p.t.slice(gStart, gAfter) }; } var toks = readTokens(p, 'stmt'); if (!toks.length) { diff --git a/dist/src/dialects.js.map b/dist/src/dialects.js.map index 9bb4041..e980413 100644 --- a/dist/src/dialects.js.map +++ b/dist/src/dialects.js.map @@ -1 +1 @@ -{"version":3,"file":"dialects.js","sourceRoot":"","sources":["../../src/dialects.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"dialects.js","sourceRoot":"","sources":["../../src/dialects.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/ir.js b/dist/src/ir.js index 2e1de03..bd4ef7b 100644 --- a/dist/src/ir.js +++ b/dist/src/ir.js @@ -257,6 +257,41 @@ function summarise(toks, max) { else if (head === 'RAISE' || head === 'SIGNAL' || head === 'RESIGNAL' || head === 'RAISERROR') { out = clip(joinToks(toks, max), max); } + else if (head === 'GRANT' || head === 'REVOKE' || head === 'DENY') { + var onIx = -1, gd0 = 0; + for (var gg = 0; gg < toks.length; gg++) { + if (toks[gg].v === '(') + gd0++; + else if (toks[gg].v === ')') + gd0--; + else if (gd0 === 0 && toks[gg].u === 'ON') { + onIx = gg; + break; + } + } + if (onIx > 0) + out = head + ' … ON ' + v(onIx + 1); + else + out = clip(joinToks(toks, max), max); + } + else if (head === 'WAITFOR') { + out = 'WAITFOR ' + clip(joinToks(toks.slice(1), max - 8), max); + } + else if (head === 'KILL') { + out = 'KILL ' + v(1); + } + else if (head === 'OPEN' || head === 'CLOSE' || head === 'DEALLOCATE' || head === 'ALLOCATE') { + out = head + ' ' + v(1); + } + else if (head === 'FETCH') { + var fx = -1; + for (var ff = 1; ff < toks.length; ff++) + if (toks[ff].u === 'FROM') { + fx = ff; + break; + } + out = fx > 0 ? ('FETCH FROM ' + v(fx + 1)) : clip(joinToks(toks, max), max); + } if (!out) out = joinToks(toks, max); return clip(out, max); @@ -877,7 +912,30 @@ function buildGraph(ast, header, opts) { } function emitOne(st, ctx, depth) { switch (st.type) { - case 'block': return emitList(st.body, ctx, depth); + case 'block': { + if (st.atomic && dialect === 'db2') { + var am = add('marker', 'BEGIN ATOMIC · rollback scope', 'try'); + var innerA = emitList(st.body, ctx, depth + 1); + if (innerA.entry) + link(am, innerA.entry); + var ao = []; + var rb = null; + for (var ai0 = 0; ai0 < innerA.exits.length; ai0++) { + var ex0 = innerA.exits[ai0]; + var nd0 = nodes.filter(function (n) { return n.id === ex0.id; })[0]; + var unwind = nd0 && (/Exit compound block/.test(nd0.text) || /Undo and exit/.test(nd0.text)); + if (unwind) { + if (!rb) + rb = add('round', 'Implicit rollback · ATOMIC block', 'err'); + link(ex0.id, rb, ex0.label || 'undo'); + } + else + ao.push(ex0); + } + return { entry: am, exits: ao }; + } + return emitList(st.body, ctx, depth); + } case 'stmt': { stats.stmt++; var statementKind = kindOf(st); @@ -1218,6 +1276,10 @@ function buildGraph(ast, header, opts) { else link(dq, L.cond, 'yes'); } + else if (st.target) { + var uq = add('rect', 'Unresolved label: ' + st.target, 'flowctl'); + link(dq, uq, 'goto', 'dotted'); + } return { entry: dq, exits: [{ id: dq, label: 'no' }] }; } var bn = add('rect', word, 'flowctl', st.span); @@ -1227,16 +1289,20 @@ function buildGraph(ast, header, opts) { else link(bn, L.cond, 'continue'); } + else if (st.target) { + var ub = add('rect', 'Unresolved label: ' + st.target, 'flowctl'); + link(bn, ub, 'goto', 'dotted'); + } return { entry: bn, exits: [] }; } case 'label': { - var lb = add('marker', st.label + ':', 'flowctl'); + var lb = add('marker', st.label + ':', 'flowctl', st.span); labels[st.label.toUpperCase()] = lb; return { entry: lb, exits: [{ id: lb }] }; } case 'goto': { - var g = add('rect', 'GOTO ' + st.label, 'flowctl'); - gotos.push({ from: g, to: st.label.toUpperCase() }); + var g = add('rect', 'GOTO ' + st.label, 'flowctl', st.span); + gotos.push({ from: g, to: st.label.toUpperCase(), label: st.label }); return { entry: g, exits: [] }; } } @@ -1272,6 +1338,12 @@ function buildGraph(ast, header, opts) { for (var g2 = 0; g2 < gotos.length; g2++) if (labels[gotos[g2].to]) link(gotos[g2].from, labels[gotos[g2].to], 'goto', 'dotted'); + for (var g3 = 0; g3 < gotos.length; g3++) { + if (!labels[gotos[g3].to]) { + var gun = add('rect', 'Unresolved label: ' + gotos[g3].label, 'flowctl'); + link(gotos[g3].from, gun, 'goto', 'dotted'); + } + } if (number) { var step = 0; nodes.forEach(function (n) { @@ -1426,6 +1498,12 @@ function buildObjectIR(result, unit) { if (facts.resultSet) resultSets.push({ statement: statements.length - 1, span: item.span }); } + else if (st.type === 'for' && st.head && st.head.some(function (x) { return x.u === 'CURSOR'; })) { + var cq = queryTokensBehindCursor(st.head); + var cf = statementFacts(cq); + reads = reads.concat(cf.reads); + calls = calls.concat(cf.calls); + } }, 0); return { id: unit && unit.id || '', name: result.header.name || (unit && unit.name) || 'Script', @@ -1532,6 +1610,51 @@ function analyseEstate(files, opts) { return { objects: objects, graph: graph, stats: graph.stats, diagnostics: objects.reduce(function (a, o) { return a.concat(o.diagnostics); }, []) }; } +function unresolvedControlTargets(ast) { + var allLabels = {}; + walkAst(ast, function (st) { + if (st.type === 'label' && st.label) + allLabels[st.label.toUpperCase()] = 1; + }, 0); + var out = []; + function scan(list, loops) { + (list || []).forEach(function (st) { + if ((st.type === 'break' || st.type === 'continue') && st.target) { + var hit = loops.some(function (l) { return l === String(st.target).toUpperCase(); }); + if (!hit) + out.push({ kind: st.type, label: st.target, span: st.span || null }); + } + else if (st.type === 'goto' && st.label) { + if (!allLabels[String(st.label).toUpperCase()]) + out.push({ kind: 'goto', label: st.label, span: st.span || null }); + } + else if (st.type === 'block') + scan(st.body, loops); + else if (['while', 'for', 'loop', 'repeat'].indexOf(st.type) >= 0 && st.body) { + scan([st.body], st.label ? loops.concat([String(st.label).toUpperCase()]) : loops); + } + else if (st.type === 'if') { + if (st.then) + scan([st.then], loops); + if (st.else) + scan([st.else], loops); + } + else if (st.type === 'case') { + st.branches.forEach(function (b) { scan(b.body, loops); }); + if (st.else) + scan(st.else, loops); + } + else if (st.type === 'try') { + scan(st.body, loops); + st.handlers.forEach(function (h) { scan(h.body, loops); }); + } + else if (st.type === 'handler' && st.body) + scan([st.body], loops); + }); + } + scan(ast, []); + return out; +} function analyse(sql, opts) { opts = opts || {}; sql = String(sql || ''); @@ -1556,7 +1679,7 @@ function analyse(sql, opts) { bodyToks = toks.slice(header.index < 0 ? 0 : header.index); var p = P(bodyToks, dialect); var ast = parseBlock(p, []); - while (ast.length === 1 && ast[0].type === 'block') + while (ast.length === 1 && ast[0].type === 'block' && !ast[0].atomic) ast = ast[0].body; diagnostics = diagnostics.concat(p.diagnostics || []); var remaining = bodyToks.slice(p.i).filter(function (t) { return t.v !== ';'; }); @@ -1592,6 +1715,15 @@ function analyse(sql, opts) { message: 'Dynamic SQL is opaque and its internal reads, writes, calls, and branches are not resolved.', span: spanOfTokens(st.toks), scope: 'region' }); }, 0); + unresolvedControlTargets(ast).forEach(function (u) { + diagnostics.push({ severity: 'warning', code: 'goto_unresolved', + message: u.kind === 'goto' + ? 'GOTO target "' + u.label + '" is not declared anywhere in this object; adding an unresolved-label node.' + : (u.kind === 'break' + ? 'Break target "' + u.label + '" is not an enclosing loop label; adding an unresolved-label node.' + : 'Continue target "' + u.label + '" is not an enclosing loop label; adding an unresolved-label node.'), + span: u.span, scope: 'region' }); + }); if (dialect === 'plpgsql') addPgTransactionDiagnostics(ast, header, diagnostics, false); diagnostics.forEach(function (d) { diff --git a/dist/src/ir.js.map b/dist/src/ir.js.map index 4c9a6d6..8f3ebde 100644 --- a/dist/src/ir.js.map +++ b/dist/src/ir.js.map @@ -1 +1 @@ -{"version":3,"file":"ir.js","sourceRoot":"","sources":["../../src/ir.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ir.js","sourceRoot":"","sources":["../../src/ir.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/lineage.js b/dist/src/lineage.js index 8038c03..ed27834 100644 --- a/dist/src/lineage.js +++ b/dist/src/lineage.js @@ -65,6 +65,27 @@ function splitCTEs(toks) { res.finalStart = i; return res; } +/* Return the query tokens that follow a DECLARE … CURSOR FOR (T-SQL) or a + FOR … CURSOR FOR (DB2) declaration, so cursor queries can join the query + graph. Falls back to the full token list when no CURSOR/FOR pair is found. */ +function queryTokensBehindCursor(toks) { + if (!toks || !toks.length) + return toks || []; + var cursor = -1; + for (var k = 0; k < toks.length; k++) + if (toks[k].u === 'CURSOR') { + cursor = k; + break; + } + if (cursor < 0) + return toks; + var f = cursor + 1; + while (f < toks.length && toks[f].u !== 'FOR') + f++; + if (f >= toks.length) + return toks; + return toks.slice(f + 1); +} function refsIn(toks) { var refs = [], structuredRefs = [], joins = 0, unions = 0, subs = 0, filtered = false, d = 0, agg = false; for (var i = 0; i < toks.length; i++) { @@ -228,8 +249,19 @@ function buildObjectQueryGraph(ast, header, opts) { var split = splitCTEs(st.toks); var finalToks = st.toks.slice(split.finalStart); var head = finalToks[0] ? finalToks[0].u : ''; - if (split.ctes.length || QUERY_HEAD[head]) - statements.push(st.toks); + var isCursor = head === 'DECLARE' && st.toks.some(function (x) { return x.u === 'CURSOR'; }); + if (split.ctes.length || QUERY_HEAD[head] || isCursor) { + if (isCursor) { + var cq = queryTokensBehindCursor(st.toks); + var qh = cq[0] ? cq[0].u : ''; + if (cq.length && QUERY_HEAD[qh]) + statements.push(cq); + else + statements.push(st.toks); + } + else + statements.push(st.toks); + } } if (st.type === 'block') collect(st.body); @@ -243,8 +275,15 @@ function buildObjectQueryGraph(ast, header, opts) { st.branches.forEach(function (b) { collect(b.body); }); collect(st.else); } - else if (['while', 'for', 'loop', 'repeat'].indexOf(st.type) >= 0 && st.body) + else if (['while', 'for', 'loop', 'repeat'].indexOf(st.type) >= 0 && st.body) { + if (st.type === 'for' && st.head && st.head.some(function (x) { return x.u === 'CURSOR'; })) { + var fq = queryTokensBehindCursor(st.head); + var fh = fq[0] ? fq[0].u : ''; + if (fq.length && QUERY_HEAD[fh]) + statements.push(fq); + } collect([st.body]); + } else if (st.type === 'try') { collect(st.body); st.handlers.forEach(function (h) { collect(h.body); }); diff --git a/dist/src/lineage.js.map b/dist/src/lineage.js.map index 72b8bc9..bbd250a 100644 --- a/dist/src/lineage.js.map +++ b/dist/src/lineage.js.map @@ -1 +1 @@ -{"version":3,"file":"lineage.js","sourceRoot":"","sources":["../../src/lineage.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"lineage.js","sourceRoot":"","sources":["../../src/lineage.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/dialects/db2.js b/dist/tests/dialects/db2.js index 9a0ae42..abdfa83 100644 --- a/dist/tests/dialects/db2.js +++ b/dist/tests/dialects/db2.js @@ -128,7 +128,7 @@ var PROCFLOW_DB2_GRAPH_FIXTURES = [ { fromText: 'SET V_DONE = 1', toText: 'Resume after raising statement' }, { fromText: 'FETCH C1 INTO V_ID', toText: 'CONTINUE HANDLER FOR NOT FOUND', label: 'NOT FOUND', style: 'dotted' }, - { fromText: 'FETCH NEXT FROM C1 INTO V_ID', toText: 'CONTINUE HANDLER FOR NOT FOUND', + { fromText: 'FETCH FROM C1', toText: 'CONTINUE HANDLER FOR NOT FOUND', label: 'NOT FOUND', style: 'dotted' }, { fromText: 'Resume after raising statement', toText: 'V_DONE = 0', label: 'resume', style: 'dotted' } @@ -210,6 +210,87 @@ var PROCFLOW_DB2_GRAPH_FIXTURES = [ ], sourced: ['ITERATE OUTER_LOOP', 'LEAVE OUTER_LOOP', 'LEAVE INNER_LOOP'] } + }, + { + name: 'DB2 graph · unresolved LEAVE target gets an explicit node', + dialect: 'db2', + sql: [ + 'CREATE PROCEDURE APP.UNRESOLVED_LEAVE()', + 'LANGUAGE SQL', + 'BEGIN', + ' OUTER_LOOP: LOOP', + ' LEAVE NO_SUCH_LOOP;', + ' END LOOP OUTER_LOOP;', + ' SET V_DONE = 1;', + 'END' + ].join('\n'), + expect: { mode: 'flow', loop: 1, diagnostic: 'goto_unresolved', noErrors: true, coverageMin: 1 }, + graphExpect: { + required: [ + { fromText: 'LEAVE NO_SUCH_LOOP', toText: 'Unresolved label: NO_SUCH_LOOP', style: 'dotted' } + ], + forbidden: [ + { fromText: 'LEAVE NO_SUCH_LOOP', toText: 'SET V_DONE = 1' }, + { fromText: 'LEAVE NO_SUCH_LOOP', toText: 'OUTER_LOOP' } + ], + sourced: ['LEAVE NO_SUCH_LOOP'] + } + }, + { + name: 'DB2 graph · ATOMIC block rollback scope on EXIT handler', + dialect: 'db2', + sql: [ + 'CREATE PROCEDURE APP.ATOMIC_SCOPE()', + 'LANGUAGE SQL', + 'BEGIN', + ' BEGIN ATOMIC', + ' DECLARE EXIT HANDLER FOR SQLEXCEPTION', + ' SET V_ERR = 1;', + ' UPDATE APP.WORK SET X = 1;', + ' SET V_OK = 1;', + ' END;', + ' SET V_DONE = 1;', + 'END' + ].join('\n'), + expect: { mode: 'flow', cat: 1, noErrors: true, coverageMin: 1 }, + graphExpect: { + required: [ + { fromText: 'BEGIN ATOMIC · rollback scope', toText: 'UPDATE APP.WORK' }, + { fromText: 'UPDATE APP.WORK', toText: 'EXIT HANDLER FOR SQLEXCEPTION', style: 'dotted' }, + { fromText: 'Exit compound block', toText: 'Implicit rollback · ATOMIC block' }, + { fromText: 'SET V_OK = 1', toText: 'SET V_DONE = 1' } + ], + forbidden: [ + { fromText: 'Implicit rollback · ATOMIC block', toText: 'SET V_DONE = 1' }, + { fromText: 'SET V_ERR = 1', toText: 'SET V_DONE = 1' } + ], + sourced: ['UPDATE APP.WORK', 'EXIT HANDLER FOR SQLEXCEPTION', 'SET V_OK = 1', 'SET V_DONE = 1'] + } + }, + { + name: 'DB2 graph · ATOMIC block stops continuation after terminal error', + dialect: 'db2', + sql: [ + 'CREATE PROCEDURE APP.ATOMIC_STOP()', + 'LANGUAGE SQL', + 'BEGIN ATOMIC', + ' UPDATE APP.WORK SET X = 1;', + ' SIGNAL SQLSTATE \'75001\';', + ' UPDATE APP.UNREACHABLE SET X = 2;', + 'END' + ].join('\n'), + expect: { mode: 'flow', exit: 1, noErrors: true, coverageMin: 1 }, + graphExpect: { + required: [ + { fromText: 'BEGIN ATOMIC · rollback scope', toText: 'UPDATE APP.WORK' }, + { fromText: 'UPDATE APP.WORK', toText: 'SIGNAL SQLSTATE' } + ], + forbidden: [ + { fromText: 'SIGNAL SQLSTATE', toText: 'UPDATE APP.UNREACHABLE' }, + { fromText: 'UPDATE APP.UNREACHABLE', toText: 'End' } + ], + sourced: ['UPDATE APP.WORK', 'SIGNAL SQLSTATE', 'UPDATE APP.UNREACHABLE'] + } } ]; var PROCFLOW_GRAPH_FIXTURES = PROCFLOW_DB2_GRAPH_FIXTURES.slice(); diff --git a/dist/tests/dialects/db2.js.map b/dist/tests/dialects/db2.js.map index bdde9c9..d5af7db 100644 --- a/dist/tests/dialects/db2.js.map +++ b/dist/tests/dialects/db2.js.map @@ -1 +1 @@ -{"version":3,"file":"db2.js","sourceRoot":"","sources":["../../../tests/dialects/db2.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"db2.js","sourceRoot":"","sources":["../../../tests/dialects/db2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/dialects/plpgsql.js b/dist/tests/dialects/plpgsql.js index c2642e7..1bd2ed5 100644 --- a/dist/tests/dialects/plpgsql.js +++ b/dist/tests/dialects/plpgsql.js @@ -337,6 +337,30 @@ var PROCFLOW_PLPGSQL_GRAPH_FIXTURES = [ 'UPDATE app.orders' ] } + }, + { + name: 'PL/pgSQL graph · unresolved EXIT target gets an explicit node', + dialect: 'plpgsql', + sql: [ + 'CREATE FUNCTION app.bad_exit() RETURNS void LANGUAGE plpgsql AS $$', + 'BEGIN', + ' LOOP', + ' EXIT missing_loop;', + ' END LOOP;', + 'END;', + '$$;' + ].join('\n'), + expect: { mode: 'flow', loop: 1, diagnostic: 'goto_unresolved', noErrors: true, coverageMin: 1 }, + graphExpect: { + required: [ + { fromText: 'EXIT missing_loop', toText: 'Unresolved label: missing_loop', style: 'dotted' } + ], + forbidden: [ + { fromText: 'EXIT missing_loop', toText: 'loop' }, + { fromText: 'EXIT missing_loop', toText: 'End' } + ], + sourced: ['EXIT missing_loop'] + } } ]; PROCFLOW_GRAPH_FIXTURES = diff --git a/dist/tests/dialects/plpgsql.js.map b/dist/tests/dialects/plpgsql.js.map index 5b25fca..e272a77 100644 --- a/dist/tests/dialects/plpgsql.js.map +++ b/dist/tests/dialects/plpgsql.js.map @@ -1 +1 @@ -{"version":3,"file":"plpgsql.js","sourceRoot":"","sources":["../../../tests/dialects/plpgsql.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"plpgsql.js","sourceRoot":"","sources":["../../../tests/dialects/plpgsql.ts"],"names":[],"mappings":";AAAA,sFAAsF;AACtF,IAAI,+BAA+B,GAAmB;IACpD;QACE,IAAI,EAAC,mDAAmD;QACxD,OAAO,EAAC,SAAS;QACjB,GAAG,EAAC;YACF,yEAAyE;YACzE,OAAO;YACP,SAAS;YACT,mCAAmC;YACnC,6BAA6B;YAC7B,2CAA2C;YAC3C,aAAa;YACb,gCAAgC;YAChC,mCAAmC;YACnC,oDAAoD;YACpD,iCAAiC;YACjC,sBAAsB;YACtB,gCAAgC;YAChC,QAAQ;YACR,8BAA8B;YAC9B,MAAM;YACN,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAC,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,CAAC,EAAC;QAC7D,WAAW,EAAC;YACV,QAAQ,EAAC;gBACP,EAAC,QAAQ,EAAC,8BAA8B,EAAC,MAAM,EAAC,wBAAwB,EAAC;gBACzE,EAAC,QAAQ,EAAC,wBAAwB;oBACjC,MAAM,EAAC,qDAAqD,EAAC,KAAK,EAAC,QAAQ,EAAC;gBAC7E,EAAC,QAAQ,EAAC,qDAAqD;oBAC9D,MAAM,EAAC,kDAAkD,EAAC;gBAC3D,EAAC,QAAQ,EAAC,kDAAkD;oBAC3D,MAAM,EAAC,wBAAwB,EAAC;gBACjC,EAAC,QAAQ,EAAC,wBAAwB,EAAC,MAAM,EAAC,yBAAyB,EAAC;aACrE;YACD,SAAS,EAAC;gBACR,EAAC,QAAQ,EAAC,8BAA8B,EAAC,MAAM,EAAC,gBAAgB,EAAC;gBACjE,EAAC,QAAQ,EAAC,wBAAwB,EAAC,MAAM,EAAC,iCAAiC,EAAC;gBAC5E,EAAC,QAAQ,EAAC,wBAAwB,EAAC,MAAM,EAAC,uBAAuB,EAAC;gBAClE,EAAC,QAAQ,EAAC,iCAAiC,EAAC,MAAM,EAAC,0BAA0B,EAAC;gBAC9E,EAAC,QAAQ,EAAC,uBAAuB,EAAC,MAAM,EAAC,uBAAuB,EAAC;gBACjE,EAAC,QAAQ,EAAC,wBAAwB,EAAC,MAAM,EAAC,yBAAyB,EAAC;aACrE;YACD,OAAO,EAAC;gBACN,8BAA8B,EAAC,wBAAwB;gBACvD,wBAAwB;aACzB;SACF;KACF;IACD;QACE,IAAI,EAAC,yCAAyC;QAC9C,OAAO,EAAC,SAAS;QACjB,GAAG,EAAC;YACF,0EAA0E;YAC1E,OAAO;YACP,SAAS;YACT,WAAW;YACX,+BAA+B;YAC/B,eAAe;YACf,kCAAkC;YAClC,kCAAkC;YAClC,gBAAgB;YAChB,UAAU;YACV,2CAA2C;YAC3C,aAAa;YACb,sBAAsB;YACtB,gCAAgC;YAChC,QAAQ;YACR,gCAAgC;YAChC,MAAM;YACN,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAC,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,CAAC,EAAC;QAC7D,WAAW,EAAC;YACV,QAAQ,EAAC;gBACP,EAAC,QAAQ,EAAC,wBAAwB,EAAC,MAAM,EAAC,iCAAiC;oBAC1E,KAAK,EAAC,QAAQ,EAAC;gBAChB,EAAC,QAAQ,EAAC,iCAAiC;oBAC1C,MAAM,EAAC,sCAAsC,EAAC;gBAC/C,EAAC,QAAQ,EAAC,sCAAsC,EAAC,MAAM,EAAC,uBAAuB,EAAC;gBAChF,EAAC,QAAQ,EAAC,OAAO,EAAC,cAAc,EAAC,CAAC,EAAC,MAAM,EAAC,uBAAuB;oBAChE,KAAK,EAAC,QAAQ,EAAC;gBAChB,EAAC,QAAQ,EAAC,uBAAuB,EAAC,MAAM,EAAC,4BAA4B,EAAC;gBACtE,EAAC,QAAQ,EAAC,4BAA4B,EAAC,MAAM,EAAC,uBAAuB,EAAC;gBACtE,EAAC,QAAQ,EAAC,uBAAuB,EAAC,MAAM,EAAC,2BAA2B,EAAC;aACtE;YACD,SAAS,EAAC;gBACR,EAAC,QAAQ,EAAC,wBAAwB,EAAC,MAAM,EAAC,uBAAuB,EAAC;gBAClE,EAAC,QAAQ,EAAC,OAAO,EAAC,cAAc,EAAC,CAAC,EAAC,MAAM,EAAC,iCAAiC,EAAC;gBAC5E,EAAC,QAAQ,EAAC,wBAAwB,EAAC,MAAM,EAAC,uBAAuB,EAAC;gBAClE,EAAC,QAAQ,EAAC,wBAAwB,EAAC,MAAM,EAAC,2BAA2B,EAAC;aACvE;YACD,OAAO,EAAC;gBACN,wBAAwB,EAAC,EAAC,IAAI,EAAC,OAAO,EAAC,UAAU,EAAC,CAAC,EAAC;gBACpD,wBAAwB;aACzB;SACF;KACF;IACD;QACE,IAAI,EAAC,8CAA8C;QACnD,OAAO,EAAC,SAAS;QACjB,GAAG,EAAC;YACF,6EAA6E;YAC7E,OAAO;YACP,SAAS;YACT,WAAW;YACX,6BAA6B;YAC7B,eAAe;YACf,wBAAwB;YACxB,uCAAuC;YACvC,UAAU;YACV,aAAa;YACb,8BAA8B;YAC9B,oCAAoC;YACpC,QAAQ;YACR,kCAAkC;YAClC,MAAM;YACN,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAC,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,CAAC,EAAC;QAC7D,WAAW,EAAC;YACV,QAAQ,EAAC;gBACP,EAAC,QAAQ,EAAC,sBAAsB,EAAC,MAAM,EAAC,+BAA+B;oBACtE,KAAK,EAAC,QAAQ,EAAC;gBAChB,EAAC,QAAQ,EAAC,+BAA+B;oBACxC,MAAM,EAAC,oCAAoC,EAAC;gBAC7C,EAAC,QAAQ,EAAC,oCAAoC,EAAC,MAAM,EAAC,2BAA2B,EAAC;gBAClF,EAAC,QAAQ,EAAC,2BAA2B,EAAC,MAAM,EAAC,6BAA6B,EAAC;aAC5E;YACD,SAAS,EAAC;gBACR,EAAC,QAAQ,EAAC,sBAAsB,EAAC,MAAM,EAAC,uBAAuB,EAAC;gBAChE,EAAC,QAAQ,EAAC,uBAAuB,EAAC,MAAM,EAAC,4BAA4B,EAAC;gBACtE,EAAC,QAAQ,EAAC,4BAA4B,EAAC,MAAM,EAAC,6BAA6B,EAAC;aAC7E;YACD,OAAO,EAAC,CAAC,sBAAsB,EAAC,4BAA4B,CAAC;SAC9D;KACF;IACD;QACE,IAAI,EAAC,+EAA+E;QACpF,OAAO,EAAC,SAAS;QACjB,GAAG,EAAC;YACF,0EAA0E;YAC1E,SAAS;YACT,4BAA4B;YAC5B,OAAO;YACP,yDAAyD;YACzD,SAAS;YACT,+CAA+C;YAC/C,mCAAmC;YACnC,6BAA6B;YAC7B,aAAa;YACb,gCAAgC;YAChC,+CAA+C;YAC/C,QAAQ;YACR,wDAAwD;YACxD,sBAAsB;YACtB,MAAM;YACN,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAC,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,CAAC,EAAC;QAC7D,WAAW,EAAC;YACV,QAAQ,EAAC;gBACP,EAAC,QAAQ,EAAC,uBAAuB,EAAC,cAAc,EAAC,CAAC;oBACjD,MAAM,EAAC,wCAAwC,EAAC;gBACjD,EAAC,QAAQ,EAAC,mBAAmB,EAAC,MAAM,EAAC,8BAA8B,EAAC;gBACpE,EAAC,QAAQ,EAAC,8BAA8B,EAAC,MAAM,EAAC,wBAAwB,EAAC;gBACzE,EAAC,QAAQ,EAAC,wBAAwB;oBACjC,MAAM,EAAC,iCAAiC,EAAC,KAAK,EAAC,QAAQ,EAAC;gBACzD,EAAC,QAAQ,EAAC,iCAAiC;oBAC1C,MAAM,EAAC,sCAAsC,EAAC;gBAC/C,EAAC,QAAQ,EAAC,sCAAsC;oBAC/C,MAAM,EAAC,4BAA4B,EAAC;gBACrC,EAAC,QAAQ,EAAC,4BAA4B;oBACrC,MAAM,EAAC,uBAAuB,EAAC,YAAY,EAAC,CAAC,EAAC;gBAC/C,EAAC,QAAQ,EAAC,uBAAuB,EAAC,cAAc,EAAC,CAAC,EAAC,MAAM,EAAC,mBAAmB,EAAC;aAC/E;YACD,SAAS,EAAC;gBACR,EAAC,QAAQ,EAAC,mBAAmB,EAAC,MAAM,EAAC,uBAAuB,EAAC,YAAY,EAAC,CAAC,EAAC;gBAC5E,EAAC,QAAQ,EAAC,iCAAiC,EAAC,MAAM,EAAC,4BAA4B,EAAC;aACjF;YACD,OAAO,EAAC;gBACN,EAAC,IAAI,EAAC,uBAAuB,EAAC,UAAU,EAAC,CAAC,EAAC,EAAC,mBAAmB;gBAC/D,8BAA8B,EAAC,wBAAwB;gBACvD,EAAC,IAAI,EAAC,uBAAuB,EAAC,UAAU,EAAC,CAAC,EAAC,EAAC,mBAAmB;aAChE;SACF;KACF;IACD;QACE,IAAI,EAAC,2DAA2D;QAChE,OAAO,EAAC,SAAS;QACjB,GAAG,EAAC;YACF,0EAA0E;YAC1E,OAAO;YACP,WAAW;YACX,gCAAgC;YAChC,MAAM;YACN,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAC;YACL,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,CAAC,EAAC,UAAU,EAAC,6BAA6B,EAAC,WAAW,EAAC,CAAC;SAC1E;QACD,WAAW,EAAC;YACV,QAAQ,EAAC,EAAE;YACX,SAAS,EAAC;gBACR,EAAC,QAAQ,EAAC,wDAAwD;oBACjE,MAAM,EAAC,2BAA2B,EAAC;aACrC;YACD,OAAO,EAAC;gBACN,wDAAwD;gBACxD,2BAA2B;aAC5B;SACF;KACF;IACD;QACE,IAAI,EAAC,6EAA6E;QAClF,OAAO,EAAC,SAAS;QACjB,GAAG,EAAC;YACF,8DAA8D;YAC9D,OAAO;YACP,6CAA6C;YAC7C,qBAAqB;YACrB,6CAA6C;YAC7C,aAAa;YACb,MAAM;YACN,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAC;YACL,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,CAAC,EAAC,UAAU,EAAC,sCAAsC;YACpE,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,CAAC;SAC5B;QACD,WAAW,EAAC;YACV,QAAQ,EAAC;gBACP,EAAC,QAAQ,EAAC,2BAA2B;oBACpC,MAAM,EAAC,mDAAmD,EAAC;gBAC5D,EAAC,QAAQ,EAAC,mDAAmD;oBAC5D,MAAM,EAAC,sBAAsB,EAAC;gBAC/B,EAAC,QAAQ,EAAC,sBAAsB;oBAC/B,MAAM,EAAC,2CAA2C,EAAC;aACrD;YACD,SAAS,EAAC,EAAE;YACZ,OAAO,EAAC;gBACN,2BAA2B,EAAC,mDAAmD;gBAC/E,sBAAsB,EAAC,2CAA2C;aACnE;SACF;KACF;IACD;QACE,IAAI,EAAC,yEAAyE;QAC9E,OAAO,EAAC,SAAS;QACjB,GAAG,EAAC;YACF,6EAA6E;YAC7E,OAAO;YACP,SAAS;YACT,8CAA8C;YAC9C,aAAa;YACb,aAAa;YACb,sBAAsB;YACtB,kCAAkC;YAClC,QAAQ;YACR,MAAM;YACN,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAC;YACL,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC;YACxB,UAAU,EAAC,wCAAwC,EAAC,WAAW,EAAC,CAAC;SAClE;QACD,WAAW,EAAC;YACV,QAAQ,EAAC;gBACP,EAAC,QAAQ,EAAC,0BAA0B;oBACnC,MAAM,EAAC,kDAAkD,EAAC;gBAC3D,EAAC,QAAQ,EAAC,kDAAkD;oBAC3D,MAAM,EAAC,uBAAuB,EAAC,KAAK,EAAC,QAAQ,EAAC;gBAC/C,EAAC,QAAQ,EAAC,uBAAuB,EAAC,MAAM,EAAC,4BAA4B,EAAC;gBACtE,EAAC,QAAQ,EAAC,4BAA4B,EAAC,MAAM,EAAC,yBAAyB,EAAC;aACzE;YACD,SAAS,EAAC;gBACR,EAAC,QAAQ,EAAC,uBAAuB,EAAC,MAAM,EAAC,yBAAyB,EAAC;aACpE;YACD,OAAO,EAAC;gBACN,0BAA0B,EAAC,kDAAkD;gBAC7E,yBAAyB;aAC1B;SACF;KACF;IACD;QACE,IAAI,EAAC,qDAAqD;QAC1D,OAAO,EAAC,SAAS;QACjB,GAAG,EAAC;YACF,OAAO;YACP,OAAO;YACP,0CAA0C;YAC1C,WAAW;YACX,0CAA0C;YAC1C,MAAM;YACN,sBAAsB;SACvB,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAC,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,CAAC,EAAC;QACvD,WAAW,EAAC;YACV,QAAQ,EAAC;gBACP,EAAC,QAAQ,EAAC,wBAAwB,EAAC,cAAc,EAAC,CAAC;oBAClD,MAAM,EAAC,0CAA0C,EAAC;gBACnD,EAAC,QAAQ,EAAC,0CAA0C;oBACnD,MAAM,EAAC,wBAAwB,EAAC,YAAY,EAAC,CAAC,EAAC;aACjD;YACD,SAAS,EAAC,EAAE;YACZ,OAAO,EAAC;gBACN,EAAC,IAAI,EAAC,wBAAwB,EAAC,UAAU,EAAC,CAAC,EAAC;gBAC5C,0CAA0C;gBAC1C,EAAC,IAAI,EAAC,wBAAwB,EAAC,UAAU,EAAC,CAAC,EAAC;aAC7C;SACF;KACF;IACD;QACE,IAAI,EAAC,kDAAkD;QACvD,OAAO,EAAC,SAAS;QACjB,GAAG,EAAC;YACF,iEAAiE;YACjE,OAAO;YACP,2BAA2B;YAC3B,6CAA6C;YAC7C,MAAM;YACN,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAC;YACL,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,CAAC,EAAC,UAAU,EAAC,+BAA+B,EAAC,WAAW,EAAC,CAAC;SAC5E;QACD,WAAW,EAAC;YACV,QAAQ,EAAC,EAAE;YACX,SAAS,EAAC;gBACR,EAAC,QAAQ,EAAC,wEAAwE;oBACjF,MAAM,EAAC,mBAAmB,EAAC;aAC7B;YACD,OAAO,EAAC;gBACN,wEAAwE;gBACxE,mBAAmB;aACpB;SACF;KACF;IACD;QACE,IAAI,EAAC,+DAA+D;QACpE,OAAO,EAAC,SAAS;QACjB,GAAG,EAAC;YACF,oEAAoE;YACpE,OAAO;YACP,QAAQ;YACR,wBAAwB;YACxB,aAAa;YACb,MAAM;YACN,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAC,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,CAAC,EAAC,UAAU,EAAC,iBAAiB,EAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,CAAC,EAAC;QACpF,WAAW,EAAC;YACV,QAAQ,EAAC;gBACP,EAAC,QAAQ,EAAC,mBAAmB,EAAC,MAAM,EAAC,gCAAgC,EAAC,KAAK,EAAC,QAAQ,EAAC;aACtF;YACD,SAAS,EAAC;gBACR,EAAC,QAAQ,EAAC,mBAAmB,EAAC,MAAM,EAAC,MAAM,EAAC;gBAC5C,EAAC,QAAQ,EAAC,mBAAmB,EAAC,MAAM,EAAC,KAAK,EAAC;aAC5C;YACD,OAAO,EAAC,CAAC,mBAAmB,CAAC;SAC9B;KACF;CACF,CAAC;AAEF,uBAAuB;IACrB,uBAAuB,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAClE,iBAAiB,GAAC,iBAAiB,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/tests/dialects/tsql.js b/dist/tests/dialects/tsql.js index 271fcbd..229e904 100644 --- a/dist/tests/dialects/tsql.js +++ b/dist/tests/dialects/tsql.js @@ -463,6 +463,53 @@ var PROCFLOW_TSQL_GRAPH_FIXTURES = [ '@i = 9', 'SET @done = 1', 'SET @finished = 1'] } }, + { + name: 'T-SQL graph · unresolved GOTO target gets an explicit node', + dialect: 'tsql', + sql: [ + 'CREATE PROCEDURE dbo.unresolved_goto AS', + 'BEGIN', + ' GOTO missing_label;', + ' SET @unreachable = 1;', + 'END' + ].join('\n'), + expect: { mode: 'flow', diagnostic: 'goto_unresolved', noErrors: true, coverageMin: 1 }, + graphExpect: { + required: [ + { fromText: 'GOTO missing_label', toText: 'Unresolved label: missing_label', style: 'dotted' } + ], + forbidden: [ + { fromText: 'GOTO missing_label', toText: 'End' }, + { fromText: 'GOTO missing_label', toText: 'SET @unreachable = 1' } + ], + sourced: ['GOTO missing_label'] + } + }, + { + name: 'T-SQL graph · forward GOTO and label carry source spans', + dialect: 'tsql', + sql: [ + 'CREATE PROCEDURE dbo.forward_goto AS', + 'BEGIN', + ' GOTO done;', + ' SET @unreachable = 1;', + 'done:', + ' RETURN;', + 'END' + ].join('\n'), + expect: { mode: 'flow', exit: 1, noErrors: true, coverageMin: 1 }, + graphExpect: { + required: [ + { fromText: 'GOTO done', toText: 'done:', style: 'dotted' }, + { fromText: 'RETURN', toText: 'End' } + ], + forbidden: [ + { fromText: 'SET @unreachable = 1', toText: 'RETURN' }, + { fromText: 'GOTO done', toText: 'RETURN' } + ], + sourced: ['GOTO done', 'done:', 'RETURN'] + } + }, { name: 'T-SQL graph · unresolved named rollback stays conservative', dialect: 'tsql', diff --git a/dist/tests/dialects/tsql.js.map b/dist/tests/dialects/tsql.js.map index 10961bb..372bcd9 100644 --- a/dist/tests/dialects/tsql.js.map +++ b/dist/tests/dialects/tsql.js.map @@ -1 +1 @@ -{"version":3,"file":"tsql.js","sourceRoot":"","sources":["../../../tests/dialects/tsql.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tsql.js","sourceRoot":"","sources":["../../../tests/dialects/tsql.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/tests.js b/dist/tests/tests.js index 14f627c..8856a6a 100644 --- a/dist/tests/tests.js +++ b/dist/tests/tests.js @@ -409,6 +409,105 @@ record('v1.2.0 findBody: ALTER object headers', false, String(err && err.stack || err)); record('v1.2.0 findBody: multi-object script without GO', false, String(err && err.stack || err)); } + /* v1.3.0: procedural control flow — labelled/GOTO spans, unresolved labels, + cursor query graphs, DB2 ATOMIC scope, extended summarise, export parity. */ + function spanOk31(span) { + return !!span && span.start >= 0 && span.end > span.start; + } + try { + var unresDiag = analyse('CREATE PROC dbo.und AS BEGIN GOTO nope; END', { dialect: 'tsql', mode: 'flow', group: false, sources: true }); + var hasGotoDiag = unresDiag.diagnostics.some(function (d) { + return d.code === 'goto_unresolved' && d.scope === 'region' && spanOk31(d.span); + }); + var hasUnresNode = unresDiag.graph.nodes.some(function (n) { + return /Unresolved label: nope/.test(n.text); + }); + record('v1.3.0 goto_unresolved region diagnostic and unresolved-label node', hasGotoDiag && hasUnresNode, JSON.stringify(unresDiag.diagnostics)); + } + catch (err) { + record('v1.3.0 goto_unresolved region diagnostic and unresolved-label node', false, String(err && err.stack || err)); + } + try { + var spanSrc = 'CREATE PROC dbo.span AS BEGIN GOTO done; done: RETURN; END'; + var spanGoto = analyse(spanSrc, { dialect: 'tsql', mode: 'flow', group: false, sources: true }); + var gotoSpans = spanGoto.graph.nodes.filter(function (n) { return /^GOTO done/.test(n.text); }) + .every(function (n) { return spanOk31(n.source); }); + var labelSpans = spanGoto.graph.nodes.filter(function (n) { return /^done:/.test(n.text); }) + .every(function (n) { return spanOk31(n.source); }); + record('v1.3.0 labelled loop-control and GOTO carry source spans', gotoSpans && labelSpans, JSON.stringify(spanGoto.graph.nodes.map(function (n) { return { text: n.text, src: n.source }; }))); + } + catch (err) { + record('v1.3.0 labelled loop-control and GOTO carry source spans', false, String(err && err.stack || err)); + } + try { + var cursorSource = 'CREATE PROC dbo.cursor_view AS BEGIN\n' + + ' DECLARE c CURSOR FOR SELECT id FROM dbo.account;\n' + + ' OPEN c;\n' + + 'END'; + var cursorQ = analyse(cursorSource, { dialect: 'tsql', mode: 'query', group: false, sources: true }); + var cursorSrcs = cursorQ.graph.nodes.filter(function (n) { return n.cls === 'src'; }) + .map(function (n) { return n.text; }); + var db2ForSql = 'CREATE PROCEDURE APP.CURVIEW() LANGUAGE SQL BEGIN\n' + + ' FOR V AS CUR CURSOR FOR SELECT ID FROM APP.ACCOUNT DO\n' + + ' SET V_DONE = V_DONE + 1;\n' + + ' END FOR;\n' + + 'END'; + var db2For = analyse(db2ForSql, { dialect: 'db2', mode: 'query', group: false, sources: true }); + var db2Srcs = db2For.graph.nodes.filter(function (n) { return n.cls === 'src'; }) + .map(function (n) { return n.text; }); + record('v1.3.0 cursor query bodies appear in query graphs (T-SQL + DB2)', has(cursorSrcs, 'dbo.account') && has(db2Srcs, 'APP.ACCOUNT') && + cursorQ.graph.stats.tables >= 1 && db2For.graph.stats.tables >= 1, JSON.stringify({ tsql: cursorSrcs, db2: db2Srcs })); + } + catch (err) { + record('v1.3.0 cursor query bodies appear in query graphs (T-SQL + DB2)', false, String(err && err.stack || err)); + } + try { + var sumSql = 'CREATE PROCEDURE dbo.summarise AS BEGIN\n' + + ' GRANT REFERENCES ON dbo.Orders TO app_role;\n' + + " WAITFOR DELAY '00:00:02';\n" + + ' KILL 42;\n' + + ' DECLARE c CURSOR FOR SELECT id FROM dbo.Orders;\n' + + ' OPEN c;\n' + + ' FETCH NEXT FROM c INTO @id;\n' + + ' DEALLOCATE c;\n' + + 'END'; + var sumR = analyse(sumSql, { dialect: 'tsql', mode: 'flow', group: false, sources: true }); + var sumLabels = ['GRANT … ON dbo.Orders', 'WAITFOR', 'KILL 42', 'OPEN c', + 'FETCH FROM c', 'DEALLOCATE c']; + var sumOk = sumLabels.every(function (label) { + return !!matchingNode(sumR.graph, label); + }); + record('v1.3.0 extended summarise label set (GRANT, WAITFOR, KILL, cursor)', sumOk, JSON.stringify(sumR.graph.nodes.map(function (n) { return n.text; }))); + } + catch (err) { + record('v1.3.0 extended summarise label set (GRANT, WAITFOR, KILL, cursor)', false, String(err && err.stack || err)); + } + try { + var ux = analyse('CREATE PROC dbo.ux AS BEGIN GOTO nope; END', { dialect: 'tsql', mode: 'flow', group: false, sources: true }); + var uxMermaid = toMermaid(ux.graph, 'TD'); + var uxXml = toDrawio(ux.graph, { title: 'ux', dir: 'TD' }); + var uxDoc = new DOMParser().parseFromString(uxXml, 'application/xml'); + var atomicSql = 'CREATE PROCEDURE APP.AX() LANGUAGE SQL BEGIN\n' + + ' BEGIN ATOMIC\n' + + ' DECLARE EXIT HANDLER FOR SQLEXCEPTION\n' + + ' SET V_ERR = 1;\n' + + ' UPDATE APP.T SET X = 1;\n' + + ' END;\n' + + 'END'; + var ax = analyse(atomicSql, { dialect: 'db2', mode: 'flow', group: false, sources: true }); + var axMermaid = toMermaid(ax.graph, 'TD'); + var axXml = toDrawio(ax.graph, { title: 'ax', dir: 'TD' }); + var axDoc = new DOMParser().parseFromString(axXml, 'application/xml'); + record('v1.3.0 F export parity for unresolved-label and ATOMIC nodes', !uxDoc.querySelector('parsererror') && !axDoc.querySelector('parsererror') && + /flowchart/.test(uxMermaid) && /flowchart/.test(axMermaid) && + /data-procflow=/.test(uxXml) && /data-procflow=/.test(axXml), JSON.stringify({ ux: uxDoc.querySelector('parsererror') && + uxDoc.querySelector('parsererror').textContent, + ax: axDoc.querySelector('parsererror') && + axDoc.querySelector('parsererror').textContent })); + } + catch (err) { + record('v1.3.0 F export parity for unresolved-label and ATOMIC nodes', false, String(err && err.stack || err)); + } var passed = results.filter(function (r) { return r.pass; }).length; document.body.className = passed === results.length ? 'pass' : 'fail'; document.getElementById('summary').textContent = passed + '/' + results.length + ' tests passed'; diff --git a/dist/tests/tests.js.map b/dist/tests/tests.js.map index 6bed7d8..10a6133 100644 --- a/dist/tests/tests.js.map +++ b/dist/tests/tests.js.map @@ -1 +1 @@ -{"version":3,"file":"tests.js","sourceRoot":"","sources":["../../tests/tests.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tests.js","sourceRoot":"","sources":["../../tests/tests.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/docs/PR_NOTE_1.3.0.md b/docs/PR_NOTE_1.3.0.md index 1a32a01..ae4011c 100644 --- a/docs/PR_NOTE_1.3.0.md +++ b/docs/PR_NOTE_1.3.0.md @@ -1,77 +1,100 @@ -# PR: v1.3.0 — Trust procedural control flow (slice 1) +# PR: v1.3.0 — Trust procedural control flow ## Summary -This PR delivers the **first vertical slice** of the **v1.3.0 — Trust procedural -control flow** milestone from `ROADMAP.md` (Workstream B): mixed one-line and -block `IF`/`WHILE` forms parse into a single control-flow AST. It lands the -exact graph-edge and range fixtures the Workstream B acceptance criteria call -for, plus a runnable example. No production parser code changed: the existing -`parseStatement` (`src/dialects.ts:347` `IF`, `:388` `WHILE`) already handled -both the single-statement form and the `BEGIN`/`END` (or `THEN`/`DO`) block form, -and this release now locks that behaviour in with failing-before-then-green -fixtures so it cannot silently regress. +This PR implements the **v1.3.0 — Trust procedural control flow** milestone from +`ROADMAP.md`: Workstream B in full, plus the E procedural diagnostics and F +export-parity fixtures each construct requires. Procedural control flow is now +resolved, validated, and exported consistently across T-SQL, DB2, and PL/pgSQL. +The golden suite grows from 164 to 181; fuzz and UI suites stay green. ## What's included -### Mixed one-line + block `IF`/`WHILE` +### Mixed one-line + block `IF`/`WHILE` (one AST) -One AST now models a whole procedure regardless of whether each `IF`/`WHILE` -uses a one-line statement body or a `BEGIN … END` block, and regardless of -mixing the two within a procedure: +Single-statement bodies and `BEGIN`/`END` (or `THEN`/`DO`) block bodies mix +freely in one procedure and parse into a single control-flow AST. Conditions +branch `yes`/`no`; loop bodies wire back to the loop condition. Locked in by +graph-edge fixtures in `tests/dialects/tsql.ts`, `tests/dialects/db2.ts`, and +`tests/boundary.ts` (`src/dialects.ts:347` `IF`, `:388` `WHILE`). -- `IF cond SELECT …;` (single statement) and `IF cond BEGIN … END ELSE …` - (block) — including mixed nesting, e.g. a one-line `IF` inside an - `IF`-block's `ELSE` branch. -- `WHILE cond SET @i = @i + 1;` (single statement) and - `WHILE cond BEGIN … IF … END` (block with a nested one-line `IF`). -- DB2 `IF … THEN … ELSE BEGIN … END; END IF;` mixed forms. +### Labelled loop-control + `GOTO` hardening -Accepted via `EMIT`-level graph-edge assertions: each condition branches -`yes`/`no` and loop bodies wire back to the loop condition, and outer block -exits flow to the next statement rather than a wrong neighbour. +- Labels, `GOTO`, and loop-control statements now carry source spans and token + attribution (`src/types.d.ts`, `src/dialects.ts`). +- Targets are validated against enclosing loop labels and declared labels + (forward `GOTO` supported). Unresolved targets raise `goto_unresolved` + (region scope, valid span) and render an explicit **"Unresolved label"** node + instead of a silent drop (`src/ir.ts` `buildGraph`, `analyse`, + `unresolvedControlTargets`). -### Fixtures +### Cursor queries in query graphs -- `tests/dialects/tsql.ts` — 2 new `graphExpect` fixtures: mixed one-line and - block `IF`, and mixed one-line and block `WHILE`. -- `tests/dialects/db2.ts` — 1 new `graphExpect` fixture: DB2 mixed - `THEN`-statement and `BEGIN`-block `IF`. -- `tests/boundary.ts` — 2 new `PROCFLOW_RANGE_FIXTURES` asserting the exact - source ranges of the statements inside a mixed T-SQL `IF` and a mixed DB2 - `IF`. +`queryTokensBehindCursor` (`src/lineage.ts`) extracts the query after a +T-SQL `DECLARE … CURSOR FOR` or DB2 `FOR … CURSOR FOR`; `buildObjectQueryGraph` +collects those query bodies so their source tables appear in Query structure +view. Object-level cursor reads are preserved, and DB2 `FOR` cursor reads are +now captured in `buildObjectIR` (`src/ir.ts`). -All new fixtures fail on the pre-slice parser state only if behaviour differs; -here they passed immediately, confirming the parser already produced the -correct single AST. +### DB2 `ATOMIC` rollback scope -### Example +`BEGIN ATOMIC` is tracked in `parseStatement` and rendered as +`BEGIN ATOMIC · rollback scope`; EXIT/UNDO-handler exits route to an +`Implicit rollback · ATOMIC block` terminal. The scope survives the body unwrap +so `CREATE PROCEDURE … BEGIN ATOMIC … END` is preserved. `NOT`/`ATOMIC` remain +ignored syntax for attribution. -- `examples/dbo.v130_demo.sql` — a single procedure that exercises all five - mixed forms (one-line `IF`, block `IF/ELSE`, mixed-nested `IF`, one-line - `WHILE`, block `WHILE` with a nested one-line `IF`). Parses with coverage - `1.0`, no diagnostics, `branch:5`, `loop:2`. +### Extended `summarise` label set + +`GRANT`/`REVOKE`/`DENY` (`GRANT … ON `), `WAITFOR`, `KILL`, and cursor +operations `OPEN`/`CLOSE`/`FETCH`/`DEALLOCATE` (`FETCH FROM c`) now produce +concise node labels (`src/ir.ts` `summarise`). + +### E diagnostics + F export parity + +- `goto_unresolved` is region-scoped with a valid span; asserted in + `tests/tests.ts`. +- Each new construct (unresolved-label node, DB2 `ATOMIC` marker) is covered by + `toMermaid`/`toDrawio` export-parity tests (well-formed XML, provenance/kind + metadata), plus the existing draw.io/Mermaid golden checks. +- Cursor query graphs and the extended label set are asserted directly in the + new v1.3.0 block of `tests/tests.ts`. + +### Other + +- `examples/dbo.v130_demo.sql` demonstrates all four headline outcomes. +- README and `package.json` bumped to v1.3.0. + +## Not changed + +- Existing golden structure is preserved. The only re-labelling is the DB2 + `FETCH NEXT FROM c …` window reading `FETCH FROM c` under the new cursor-ops + `summarise` rule; its graph edges are unchanged. +- 1.1.0/1.2.0 boundary, lexing, and transaction semantics are untouched. +- The local-only security model is unchanged. + +## Fixtures + +- `tests/dialects/tsql.ts` — resolved/unresolved `GOTO`, label-sourced ranges +- `tests/dialects/db2.ts` — unresolved `LEAVE`; DB2 `ATOMIC` scope; updated + cursor-ops label +- `tests/dialects/plpgsql.ts` — unresolved `EXIT` loop target +- `tests/tests.ts` — v1.3.0 assertion block (diagnostics, spans, cursor query + graphs, `summarise`, export parity) ## Verification - `npm run typecheck` — passes - `npm run build` — passes - `npm run test:file` — passes -- Golden suite — 164/164 (159 prior + 5 new records; no prior golden changed) -- Fuzz suite — 400 deterministic mutation cases pass +- Golden suite — 181/181 (was 164) +- Fuzz suite — 400 deterministic mutation cases - UI suite — 13/13 -- Local-only URL check — clean - -## Deferred within v1.3.0 (remaining Workstream B, next slices) - -Scheduled in `docs/v1.3.0-implementation-plan.md`: +- Local-only URL check clean; `dist/` committed in sync -- Labelled loop-control and `GOTO` hardening (source spans, target validation, - `goto_unresolved` diagnostic, "unresolved label" node) -- Cursor query bodies in query graphs (DB2 `FOR`, T-SQL `DECLARE … CURSOR`) -- DB2 `ATOMIC` block rollback scope -- Extended `summarise` label set -- E procedural diagnostics and F export-parity fixtures for the new constructs +## Deferred (per roadmap) -Workstreams C/D, confidence re-score, layout, catalogue, columns, and RDL -remain deferred per `ROADMAP.md@269`. +- Workstream C (query lineage accuracy) → v1.4.0 +- Workstream D (data flow / dependency accuracy) → v1.5.0 +- Confidence re-score → v1.6.0; layout replacement → v1.7.0 +- Catalogue, columns, and RDL → v1.9.0+ diff --git a/docs/RELEASE_NOTE_1.3.0.md b/docs/RELEASE_NOTE_1.3.0.md index 57bd871..1436be7 100644 --- a/docs/RELEASE_NOTE_1.3.0.md +++ b/docs/RELEASE_NOTE_1.3.0.md @@ -2,68 +2,122 @@ **Release date:** 2026-08-06 -This is the first slice of the **Trust procedural control flow** milestone from -[ROADMAP.md](../ROADMAP.md) (Workstream B). It makes mixed one-line and block -`IF`/`WHILE` forms parse into a single control-flow AST, so the diagram reflects -the true branching instead of treating single-statement and `BEGIN…END` bodies -as if they belonged to different shapes of control flow. +This release delivers the **Trust procedural control flow** milestone from +[ROADMAP.md](../ROADMAP.md) (Workstream B in full). Procedural control flow is +now resolved and verified end to end: mixed `IF`/`WHILE` forms parse into a +single AST, labelled loop-control and `GOTO` are validated with source spans, +cursor queries join the query graphs, and DB2 `ATOMIC` blocks carry a rollback +scope. Workstream B ships complete, plus the E procedural diagnostics and the F +export-parity fixtures each construct requires. ## What's new -### Mixed one-line + block `IF`/`WHILE` +### Mixed one-line + block `IF`/`WHILE` (one AST) A procedure may freely mix single-statement and block bodies for the same -control construct, and it now always produces one consistent AST: +control construct and still produce one consistent AST: - `IF cond SELECT …;` and `IF cond BEGIN … END ELSE …` — including a one-line `IF` nested inside an `IF`-block branch. - `WHILE cond SET @i = @i + 1;` and `WHILE cond BEGIN … IF … END`. - DB2 `IF … THEN … ELSE BEGIN … END; END IF;` mixed forms. -Each condition still branches `yes`/`no`, loop bodies wire back to the loop +Every condition branches `yes`/`no`, loop bodies wire back to the loop condition, and block exits flow to the next statement. -### Fixtures and example +### Labelled loop-control and `GOTO` hardening -- New graph-edge fixtures for mixed `IF` and `WHILE` in `tests/dialects/tsql.ts` - and `tests/dialects/db2.ts`, and exact-statement-range fixtures in - `tests/boundary.ts` (the `tests/dialects/*.ts` assertion pattern the roadmap - requires). -- `examples/dbo.v130_demo.sql` — a runnable procedure exercising all five mixed - forms (opens cleanly, coverage 1.0, no diagnostics). +- `GOTO`, `LEAVE`/`EXIT`/`CONTINUE`/`ITERATE` and bare labels now carry source + spans, so a diagram node selects the exact keyword in the editor. +- Targets are validated against enclosing loop labels and declared labels + (forward `GOTO` stays supported). +- An unresolved target raises a new **`goto_unresolved`** warning with correct + **region scope** and a valid span, and draws an explicit **"Unresolved + label"** node instead of silently dropping control flow. +- Resolved `GOTO` still produces a dotted `goto` edge to the label. + +### Cursor queries in query graphs + +- T-SQL `DECLARE … CURSOR FOR` and DB2 `FOR … CURSOR FOR` queries now appear in + **Query structure** view: the source table behind the cursor is shown as a + source node. +- The existing object-level cursor read extraction is preserved (and DB2 `FOR` + cursor reads are now captured at object level too). + +### DB2 `ATOMIC` block rollback scope + +- `BEGIN ATOMIC` renders a `BEGIN ATOMIC · rollback scope` marker; unhandled or + EXIT/UNDO-handler exits route to an `Implicit rollback · ATOMIC block` + terminal rather than continuing to the next statement. +- The block scope survives the top-level body unwrap, so `CREATE PROCEDURE … + BEGIN ATOMIC … END` is preserved. +- `BEGIN NOT ATOMIC` and `ATOMIC`/`NOT` stay ignored syntax for token + attribution. + +### Extended statement labels (`summarise`) + +- `GRANT`/`REVOKE`/`DENY` now summarise to `GRANT … ON `. +- `WAITFOR`, `KILL`, and cursor operations `OPEN`/`CLOSE`/`FETCH`/`DEALLOCATE` + get concise labels (e.g. `FETCH FROM c`) instead of full statement text. + +### E procedural diagnostics and F export parity + +- `goto_unresolved` is region-scoped with a valid span (E). +- Every new construct (unresolved-label node, DB2 `ATOMIC` marker) is covered by + `toMermaid` + `toDrawio` export-parity tests: well-formed draw.io XML with + provenance/kind metadata, and a `flowchart` Mermaid definition (F). + +### Attribution + +- Loop-control, `GOTO`, and label tokens are now attributed as resolved, so the + corpus's unresolved-token rate drops instead of rising with the new fixtures. ## What's unchanged -- Every existing golden fixture keeps its structure and assertions; the corpus - only grew from 159 to 164. -- Labelled loop-control/`GOTO` hardening, cursor query graphs, DB2 `ATOMIC` - scope, and the extended `summarise` set are still in progress and will land - in later v1.3.0 slices (see `docs/v1.3.0-implementation-plan.md`). -- Workstreams C/D, confidence re-score, layout, catalogue, columns, and RDL - remain deferred per the roadmap. +- Every pre-existing golden keeps its structure; the corpus only grew. The sole + re-labelling is the DB2 `FETCH NEXT FROM c INTO …` window now reading + `FETCH FROM c` under the cursor-ops `summarise` rule (edges untouched). +- Semicolon/boundary semantics, number lexing, and transaction modelling from + 1.1.0/1.2.0 are unchanged. - The local-only, browser-only security model is unchanged. ## Files changed -- `examples/dbo.v130_demo.sql` — new mixed control-flow demo -- `tests/dialects/tsql.ts` — 2 mixed `IF`/`WHILE` graph fixtures -- `tests/dialects/db2.ts` — 1 DB2 mixed `IF` graph fixture -- `tests/boundary.ts` — 2 mixed `IF` statement-range fixtures -- `docs/v1.3.0-implementation-plan.md` — new; documents the remaining v1.3.0 - slices (labelled control/`GOTO`, cursor query graphs, DB2 `ATOMIC`, - `summarise` set, E/F fixtures) -- `dist/tests/*` — generated artefacts rebuilt to match sources +- `src/types.d.ts` — `BlockNode.atomic`; `span`/`toks` on label, goto, + loop-control nodes +- `src/dialects.ts` — `BEGIN ATOMIC` tracking; label/`GOTO`/loop-control + spans + token capture +- `src/ir.ts` — atomic block rollback scope; unresolved-label nodes; + `goto_unresolved` diagnostic; extended `summarise`; DB2 `FOR` cursor reads in + `buildObjectIR`; attribution of control tokens +- `src/lineage.ts` — `queryTokensBehindCursor`; cursor queries collected into + `buildObjectQueryGraph` +- `tests/dialects/{tsql,db2,plpgsql}.ts` — unresolved-target, span, and DB2 + `ATOMIC` graph fixtures +- `tests/tests.ts` — v1.3.0 assertion block (diagnostics, spans, cursor query + graphs, `summarise`, export parity) +- `examples/dbo.v130_demo.sql` — full control-flow demo +- `docs/PR_NOTE_1.3.0.md`, `docs/RELEASE_NOTE_1.3.0.md`, + `docs/RELEASE_NOTE_v1.3.0.md` — release notes +- `README.md`, `package.json` — v1.3.0 references and version +- `dist/` — generated artefacts rebuilt to match sources ## Verification - `npm run typecheck` — passes - `npm run build` — passes - `npm run test:file` — passes -- Golden suite — 164/164 +- Golden suite — 181/181 - Fuzz suite — 400 deterministic mutation cases - UI suite — 13/13 -- Corpus: mixed forms produce zero error diagnostics and coverage 1.0; no - `unknown`-node fallback introduced. +- Mermaid checksum pinned; local-only URL check clean; `dist/` committed in sync + +## Deferred (per roadmap) + +- Query lineage accuracy (Workstream C) → v1.4.0 +- Data flow and dependency accuracy (Workstream D) → v1.5.0 +- Confidence re-score → v1.6.0; layout replacement → v1.7.0 +- Catalogue, columns, and RDL → v1.9.0+ -See [RELEASE_NOTE_v1.0.0.md](RELEASE_NOTE_v1.0.0.md) for the baseline release +See [RELEASE_NOTE_v1.3.0.md](RELEASE_NOTE_v1.3.0.md) for the release summary and [README.md](../README.md) for usage. diff --git a/docs/RELEASE_NOTE_v1.3.0.md b/docs/RELEASE_NOTE_v1.3.0.md index e47a140..1b70419 100644 --- a/docs/RELEASE_NOTE_v1.3.0.md +++ b/docs/RELEASE_NOTE_v1.3.0.md @@ -2,32 +2,38 @@ **Release date:** 2026-08-06 -ProcFlow v1.3.0 begins hardening how procedural control flow is resolved, so -the diagram's branches and loops match the SQL it is given even when a -procedure mixes statement styles. +ProcFlow v1.3.0 completes the **Trust procedural control flow** milestone: +mixed `IF`/`WHILE` forms parse into one AST, labelled loop-control and `GOTO` +are validated with source spans, cursor queries join the query graphs, and DB2 +`BEGIN ATOMIC` blocks carry a rollback scope. The release remains local-first: SQL is analysed entirely in the browser and is not uploaded, executed, or persisted. ## Highlights -- Mixed one-line and block `IF`/`WHILE` forms parse into one control-flow - AST. A procedure may freely combine single-statement bodies - (`IF @x = 1 SELECT …;`) with `BEGIN`/`END` block bodies, and DB2 may mix - `THEN` statements with `BEGIN`/`END` blocks; conditions still branch - `yes`/`no` and loop bodies wire back to the loop condition. -- New graph-edge fixtures lock in the mixed forms for T-SQL and DB2, and new - statement-range fixtures assert the exact source spans inside mixed `IF` - constructs. -- `examples/dbo.v130_demo.sql` demonstrates all five mixed forms in one - procedure (coverage 1.0, no diagnostics). +- Mixed one-line and block `IF`/`WHILE` forms parse into one control-flow AST, + for T-SQL and DB2, with correct `yes`/`no` branches and loop back-edges. +- Labelled loop-control and `GOTO` are hardened: targets are validated, labels + and `GOTO`s carry source spans, and an unresolved target raises a + `goto_unresolved` warning plus an explicit "Unresolved label" node instead of + a silent drop. +- Cursor queries appear in the Query structure view: the source table behind a + T-SQL `DECLARE … CURSOR FOR` or DB2 `FOR … CURSOR FOR` is shown as a source + node, and object-level cursor reads are preserved. +- DB2 `BEGIN ATOMIC` blocks render a rollback-scope marker that routes + unhandled or EXIT/UNDO exits to an implicit rollback terminal. +- `GRANT`, `WAITFOR`, `KILL`, and cursor operations now get concise node + labels instead of full statement text. +- New procedural constructs are covered by graph-edge, diagnostic-scope, and + `toMermaid`/`toDrawio` export-parity fixtures (E/F). ## Correctness baseline The v1.3.0 baseline passes: - TypeScript type-checking and a clean generated build; -- 164 golden, graph, dependency, exporter, provenance, boundary, and +- 181 golden, graph, dependency, exporter, provenance, boundary, and diagnostic tests; - 400 deterministic mutation cases; - 13 browser interaction and local-runtime tests; and @@ -43,8 +49,9 @@ external HTTP URLs. workspace state. - Replace the previous extracted release with the complete v1.3.0 archive; keep `index.html`, `styles.css`, `dist/`, and `vendor/` together. -- Existing v1.0.0, v1.1.0, and v1.2.0 fixtures retain their structure; the - fixture corpus only grew. +- Existing v1.0.0–v1.2.0 fixtures retain their structure; the corpus only grew. + One node label changed deliberately: DB2 `FETCH NEXT FROM c …` now reads + `FETCH FROM c` under the cursor-ops `summarise` rule. - The local-only browser security model is unchanged. ## Known limitations @@ -54,9 +61,8 @@ external HTTP URLs. - Query lineage is object-level rather than column-level. - Some vendor-specific table expressions, temporary objects, synonyms, linked servers, and cross-database references have lightweight resolution. -- Labelled loop-control/`GOTO` hardening, cursor query graphs, DB2 `ATOMIC` - rollback scope, and the extended statement-label set are scheduled for - later v1.3.0 slices (see `docs/v1.3.0-implementation-plan.md`). +- Exceptionally malformed batches can still produce imperfect statement + splits. - Large draw.io exports can still require manual rearrangement. Verify critical dependencies, execution paths, transaction behavior, and diff --git a/examples/dbo.v130_demo.sql b/examples/dbo.v130_demo.sql index d0e3c90..db0dd83 100644 --- a/examples/dbo.v130_demo.sql +++ b/examples/dbo.v130_demo.sql @@ -1,25 +1,27 @@ /* v1.3.0 demo — trust procedural control flow. - dbo.v130_demo exercises the v1.3.0 outcome: mixed one-line and block - IF / WHILE forms parse into ONE control-flow AST, so the diagram shows - the true branching instead of mis-wiring or silently dropping a branch. + dbo.v130_demo exercises the v1.3.0 procedural control-flow outcomes in one + procedure. Open the file in ProcFlow, pick dbo.v130_demo, and use View → + Control flow for the branching and loops; then View → Query structure to + see the cursor body's source table. - Open this file in ProcFlow, pick dbo.v130_demo in Internal logic, and set - the view to Control flow. Each section combines a one-line statement form - (no BEGIN/END) with a multi-statement block form of the same construct: + 1. Mixed one-line and block IF/WHILE parse into one AST. Single-statement + bodies and BEGIN/END bodies mix freely in the same procedure: every + condition branches yes/no and loop bodies wire back to the loop + condition. + 2. Labelled GOTO and labels carry source spans, so clicking the GOTO node + selects the GOTO keyword in the editor. An unresolved GOTO target + instead raises a "goto_unresolved" warning and draws an explicit + "Unresolved label" node rather than silently dropping control. + 3. Cursor queries are represented in the Query structure view: the source + table behind DECLARE ... CURSOR FOR appears as a source node (and is + kept in the object's reads). + 4. Extended statement labels: GRANT, WAITFOR, KILL, and cursor operations + produce concise node labels instead of full statement text. - 1. One-line IF — a single statement with no BEGIN/END. - 2. Block IF/ELSE — multi-statement branches on both sides. - 3. Mixed nesting — a one-line IF inside an IF-block's ELSE branch. - 4. One-line WHILE — a single-statement body with no BEGIN/END. - 5. Block WHILE — a multi-statement body containing a one-line IF. - - Before v1.3.0 the one-line and block forms were not treated uniformly, so - mixed procedures could drop a branch or read the control flow as flat - steps. v1.3.0 parses them into a single AST: IF and WHILE conditions - branch yes/no and loop edges are wired regardless of whether their bodies - use a single statement or a BEGIN/END block. + (DB2 BEGIN ATOMIC rollback scope and labelled LEAVE/ITERATE are shown in + the dialect fixtures; T-SQL does not express those forms.) */ CREATE OR ALTER PROCEDURE dbo.v130_demo @Limit INT = 10 AS @@ -27,11 +29,9 @@ BEGIN SET NOCOUNT ON; DECLARE @I INT = 0; - -- 1. One-line IF (single statement, no BEGIN/END). + -- 1. Mixed one-line and block control flow in a single AST. IF @Limit < 1 SELECT 'no rows' AS gate; - - -- 2. Block IF/ELSE (multi-statement branches). IF @Limit >= 100 BEGIN SELECT 'high' AS band; @@ -39,23 +39,8 @@ BEGIN END ELSE SELECT 'low' AS band; - - -- 3. Mixed nesting: a one-line IF inside the ELSE block above would be a - -- separate IF; here it is placed in its own IF block's ELSE. - IF @Limit = 50 - SELECT 'half' AS band; - ELSE - BEGIN - SELECT 'other' AS band; - IF @Limit > 0 - SET @I = @I + 1; - END; - - -- 4. One-line WHILE (single-statement body). - WHILE @I < @Limit + WHILE @I < 3 SET @I = @I + 1; - - -- 5. Block WHILE containing a one-line IF. WHILE @I > 0 BEGIN SET @I = @I - 1; @@ -63,5 +48,23 @@ BEGIN SELECT 'done' AS phase; END; + -- 2. Labelled GOTO with a carried source span (resolved target). + IF @I = 0 + GOTO finished; + SET @I = 99; +finished: SELECT @I AS remaining; + + -- 3. Cursor query visible in Query structure view. + DECLARE c CURSOR FOR + SELECT Id, Name FROM dbo.Customer WHERE Active = 1; + OPEN c; + FETCH NEXT FROM c INTO @id, @name; + CLOSE c; + DEALLOCATE c; + + -- 4. Concise labels for GRANT, WAITFOR, and KILL. + GRANT REFERENCES ON dbo.Customer TO app_role; + WAITFOR DELAY '00:00:01'; + KILL 42; END; diff --git a/src/dialects.ts b/src/dialects.ts index 627ca85..42e0b1f 100644 --- a/src/dialects.ts +++ b/src/dialects.ts @@ -316,8 +316,10 @@ function parseStatement(p: ParserState): AstNode | null { if(st2) st2.label=t.v; return st2; } + var lbStart=p.i, lbColon=peek(p,1); p.i+=2; - return {type:'label', label:t.v}; + return {type:'label', label:t.v, span:{start:t.pos,end:lbColon.end}, + toks:p.t.slice(lbStart,lbStart+2)}; } if(t.type==='word'&&u==='BEGIN'){ @@ -335,13 +337,15 @@ function parseStatement(p: ParserState): AstNode | null { return {type:'stmt', toks:readTokens(p,'stmt')}; } p.i++; - eat(p,'ATOMIC'); eat(p,'NOT'); eat(p,'ATOMIC'); + var db2Atomic=false; + if(eat(p,'ATOMIC')) db2Atomic=true; + else { eat(p,'NOT'); eat(p,'ATOMIC'); } var body=parseBlock(p,[]); var hs: Array<{cond: TokenList; body: AstNode[]}>= []; if(at(p,'EXCEPTION')){ p.i++; hs=parseHandlers(p); } eatEnd(p,null); if(hs.length) return {type:'try', body:body, handlers:hs}; - return {type:'block', body:body}; + return {type:'block', body:body, atomic:(db2Atomic?true:undefined)}; } if(t.type==='word'&&u==='IF'){ @@ -477,21 +481,29 @@ function parseStatement(p: ParserState): AstNode | null { /* loop control: BREAK / LEAVE / EXIT [label] [WHEN cond] ; CONTINUE / ITERATE */ if(t.type==='word'&&(u==='BREAK'||u==='LEAVE'||u==='EXIT'||u==='CONTINUE'||u==='ITERATE')){ var isBreak = (u==='BREAK'||u==='LEAVE'||u==='EXIT'); + var ctlStart=p.i; p.i++; var target=null, when=null, nt=peek(p); if(nt&&nt.type==='word'&&nt.u!=='WHEN'&&nt.v!==';'){ target=nt.v; p.i++; } if(eat(p,'WHEN')) when=readTokens(p,'cond'); + var ctlBeforeSemi=p.i; skipSemis(p); - var controlEnd=p.t[p.i-1]||t; + var controlEnd=p.t[ctlBeforeSemi-1]||t; return {type: isBreak?'break':'continue', target:target, when:when, word:t.v, - span:{start:t.pos,end:controlEnd.end}}; + span:{start:t.pos,end:controlEnd.end}, + toks:p.t.slice(ctlStart,ctlBeforeSemi)}; } if(t.type==='word'&&u==='GOTO'){ + var gStart=p.i; p.i++; - var g=peek(p)?peek(p).v:'?'; + var gtok=peek(p); + var g=gtok?gtok.v:'?'; + var gAfter=p.i+1; p.i++; skipSemis(p); - return {type:'goto', label:g}; + var gEnd=gtok||t; + return {type:'goto', label:g, span:{start:t.pos,end:gEnd.end}, + toks:p.t.slice(gStart,gAfter)}; } var toks=readTokens(p,'stmt'); diff --git a/src/ir.ts b/src/ir.ts index e7754b8..d7c228e 100644 --- a/src/ir.ts +++ b/src/ir.ts @@ -209,6 +209,25 @@ function summarise(toks: Token[], max: number): string { if(!out&&vars.length) out='DECLARE '+vars.join(', ')+(vars.length>3?' …':''); } else if(head==='RAISE'||head==='SIGNAL'||head==='RESIGNAL'||head==='RAISERROR'){ out=clip(joinToks(toks,max),max); + } else if(head==='GRANT'||head==='REVOKE'||head==='DENY'){ + var onIx=-1, gd0=0; + for(var gg=0;gg0) out=head+' … ON '+v(onIx+1); + else out=clip(joinToks(toks,max),max); + } else if(head==='WAITFOR'){ + out='WAITFOR '+clip(joinToks(toks.slice(1),max-8),max); + } else if(head==='KILL'){ + out='KILL '+v(1); + } else if(head==='OPEN'||head==='CLOSE'||head==='DEALLOCATE'||head==='ALLOCATE'){ + out=head+' '+v(1); + } else if(head==='FETCH'){ + var fx=-1; + for(var ff=1;ff0 ? ('FETCH FROM '+v(fx+1)) : clip(joinToks(toks,max),max); } if(!out) out=joinToks(toks, max); return clip(out, max); @@ -372,7 +391,7 @@ function buildGraph(ast: AstNode[], header: SqlHeader, opts?: AnalyseOptions & { var maxLen = detail==='full' ? 110 : 52; var nodes: GraphNode[]=[], edges: GraphEdge[]=[], seq=0; var stats: GraphStats={stmt:0, branch:0, loop:0, cat:0, exit:0, depth:0, opaque:0}; - var labels: Record={}, gotos: Array<{from: string; to: string}>=[]; + var labels: Record={}, gotos: Array<{from: string; to: string; label: string}>=[]; var constructCounts: Record={}; function edgeKindFor(cls: string, style: string): EdgeKind { @@ -742,7 +761,26 @@ function buildGraph(ast: AstNode[], header: SqlHeader, opts?: AnalyseOptions & { function emitOne(st: AstNode, ctx: FlowContext | null, depth: number): EmitResult | null { switch(st.type){ - case 'block': return emitList(st.body, ctx, depth); + case 'block': { + if((st as any).atomic&&dialect==='db2'){ + var am=add('marker','BEGIN ATOMIC · rollback scope','try'); + var innerA=emitList(st.body, ctx, depth+1); + if(innerA.entry) link(am, innerA.entry); + var ao: FlowExit[]=[]; + var rb: string|null=null; + for(var ai0=0;ai0 { + var allLabels: StringSet={}; + walkAst(ast,function(st){ + if(st.type==='label'&&st.label) allLabels[st.label.toUpperCase()]=1; + },0); + var out: Array<{kind: string; label: string; span: SourceSpan | null}>=[]; + function scan(list: any, loops: string[]): void { + (list||[]).forEach(function(st: any){ + if((st.type==='break'||st.type==='continue')&&st.target){ + var hit=loops.some(function(l){return l===String(st.target).toUpperCase();}); + if(!hit) out.push({kind:st.type, label:st.target, span:st.span||null}); + } else if(st.type==='goto'&&st.label){ + if(!allLabels[String(st.label).toUpperCase()]) + out.push({kind:'goto', label:st.label, span:st.span||null}); + } else if(st.type==='block') scan(st.body, loops); + else if(['while','for','loop','repeat'].indexOf(st.type)>=0&&st.body){ + scan([st.body], st.label?loops.concat([String(st.label).toUpperCase()]):loops); + } else if(st.type==='if'){ if(st.then) scan([st.then],loops); if(st.else) scan([st.else],loops); } + else if(st.type==='case'){ st.branches.forEach(function(b){scan(b.body,loops);}); if(st.else) scan(st.else,loops); } + else if(st.type==='try'){ scan(st.body,loops); st.handlers.forEach(function(h){scan(h.body,loops);}); } + else if(st.type==='handler'&&st.body) scan([st.body],loops); + }); + } + scan(ast,[]); + return out; +} + function analyse(sql: string, opts?: AnalyseOptions): AnalysisResult { opts=opts||{}; sql=String(sql||''); @@ -1351,7 +1429,7 @@ function analyse(sql: string, opts?: AnalyseOptions): AnalysisResult { else bodyToks=toks.slice(header.index<0?0:header.index); var p=P(bodyToks, dialect); var ast=parseBlock(p,[]); - while(ast.length===1&&ast[0].type==='block') ast=ast[0].body as AstNode[]; + while(ast.length===1&&ast[0].type==='block'&&!(ast[0] as BlockNode).atomic) ast=ast[0].body as AstNode[]; diagnostics=diagnostics.concat(p.diagnostics||[]); var remaining=bodyToks.slice(p.i).filter(function(t){return t.v!==';';}); if(remaining.length){ @@ -1385,6 +1463,15 @@ function analyse(sql: string, opts?: AnalyseOptions): AnalysisResult { message:'Dynamic SQL is opaque and its internal reads, writes, calls, and branches are not resolved.', span:spanOfTokens(st.toks), scope:'region'}); },0); + unresolvedControlTargets(ast).forEach(function(u){ + diagnostics.push({severity:'warning', code:'goto_unresolved', + message:u.kind==='goto' + ? 'GOTO target "'+u.label+'" is not declared anywhere in this object; adding an unresolved-label node.' + : (u.kind==='break' + ? 'Break target "'+u.label+'" is not an enclosing loop label; adding an unresolved-label node.' + : 'Continue target "'+u.label+'" is not an enclosing loop label; adding an unresolved-label node.'), + span:u.span, scope:'region'}); + }); if(dialect==='plpgsql') addPgTransactionDiagnostics(ast,header,diagnostics,false); diagnostics.forEach(function(d){ diff --git a/src/lineage.ts b/src/lineage.ts index 27156c0..1ce83dd 100644 --- a/src/lineage.ts +++ b/src/lineage.ts @@ -39,6 +39,20 @@ function splitCTEs(toks: Token[]): CteSplit { return res; } +/* Return the query tokens that follow a DECLARE … CURSOR FOR (T-SQL) or a + FOR … CURSOR FOR (DB2) declaration, so cursor queries can join the query + graph. Falls back to the full token list when no CURSOR/FOR pair is found. */ +function queryTokensBehindCursor(toks: Token[]): Token[] { + if(!toks||!toks.length) return toks||[]; + var cursor=-1; + for(var k=0;k=toks.length) return toks; + return toks.slice(f+1); +} + function refsIn(toks: Token[]): QueryReferenceInfo { var refs: string[]=[], structuredRefs: StructuredQueryReference[]=[], joins=0, unions=0, subs=0, filtered=false, d=0, agg=false; @@ -174,12 +188,20 @@ function buildObjectQueryGraph(ast: AstNode[], header: SqlHeader, opts?: Analyse var QUERY_HEAD: StringSet=S(['SELECT','INSERT','UPDATE','DELETE','MERGE','REPLACE','COPY']); function collect(list: any): void { - (list||[]).forEach(function(st){ + (list||[]).forEach(function(st: any){ if(st.toks&&st.type!=='unknown'){ var split=splitCTEs(st.toks); var finalToks=st.toks.slice(split.finalStart); var head=finalToks[0]?finalToks[0].u:''; - if(split.ctes.length||QUERY_HEAD[head]) statements.push(st.toks); + var isCursor=head==='DECLARE'&&st.toks.some(function(x){return x.u==='CURSOR';}); + if(split.ctes.length||QUERY_HEAD[head]||isCursor){ + if(isCursor){ + var cq=queryTokensBehindCursor(st.toks); + var qh=cq[0]?cq[0].u:''; + if(cq.length&&QUERY_HEAD[qh]) statements.push(cq); + else statements.push(st.toks); + } else statements.push(st.toks); + } } if(st.type==='block') collect(st.body); else if(st.type==='if'){ @@ -188,8 +210,14 @@ function buildObjectQueryGraph(ast: AstNode[], header: SqlHeader, opts?: Analyse } else if(st.type==='case'){ st.branches.forEach(function(b){ collect(b.body); }); collect(st.else); - } else if(['while','for','loop','repeat'].indexOf(st.type)>=0&&st.body) + } else if(['while','for','loop','repeat'].indexOf(st.type)>=0&&st.body){ + if(st.type==='for'&&st.head&&st.head.some(function(x){return x.u==='CURSOR';})){ + var fq=queryTokensBehindCursor(st.head); + var fh=fq[0]?fq[0].u:''; + if(fq.length&&QUERY_HEAD[fh]) statements.push(fq); + } collect([st.body]); + } else if(st.type==='try'){ collect(st.body); st.handlers.forEach(function(h){ collect(h.body); }); diff --git a/src/types.d.ts b/src/types.d.ts index 3f79b69..24e0e1f 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -72,6 +72,7 @@ interface AstBase { interface BlockNode extends AstBase { type: 'block'; body: AstNode[]; + atomic?: boolean; } interface StatementNode extends AstBase { @@ -149,16 +150,21 @@ interface LoopControlNode extends AstBase { when: TokenList | null; word: string; span: SourceSpan; + toks: TokenList; } interface LabelNode extends AstBase { type: 'label'; label: string; + span: SourceSpan; + toks: TokenList; } interface GotoNode extends AstBase { type: 'goto'; label: string; + span: SourceSpan; + toks: TokenList; } interface BatchSeparatorNode extends AstBase { diff --git a/tests/dialects/db2.ts b/tests/dialects/db2.ts index e140d47..5bfea3d 100644 --- a/tests/dialects/db2.ts +++ b/tests/dialects/db2.ts @@ -127,7 +127,7 @@ var PROCFLOW_DB2_GRAPH_FIXTURES: Db2GraphFixture[] = [ {fromText:'SET V_DONE = 1',toText:'Resume after raising statement'}, {fromText:'FETCH C1 INTO V_ID',toText:'CONTINUE HANDLER FOR NOT FOUND', label:'NOT FOUND',style:'dotted'}, - {fromText:'FETCH NEXT FROM C1 INTO V_ID',toText:'CONTINUE HANDLER FOR NOT FOUND', + {fromText:'FETCH FROM C1',toText:'CONTINUE HANDLER FOR NOT FOUND', label:'NOT FOUND',style:'dotted'}, {fromText:'Resume after raising statement',toText:'V_DONE = 0', label:'resume',style:'dotted'} @@ -209,6 +209,87 @@ var PROCFLOW_DB2_GRAPH_FIXTURES: Db2GraphFixture[] = [ ], sourced:['ITERATE OUTER_LOOP','LEAVE OUTER_LOOP','LEAVE INNER_LOOP'] } + }, + { + name:'DB2 graph · unresolved LEAVE target gets an explicit node', + dialect:'db2', + sql:[ + 'CREATE PROCEDURE APP.UNRESOLVED_LEAVE()', + 'LANGUAGE SQL', + 'BEGIN', + ' OUTER_LOOP: LOOP', + ' LEAVE NO_SUCH_LOOP;', + ' END LOOP OUTER_LOOP;', + ' SET V_DONE = 1;', + 'END' + ].join('\n'), + expect:{mode:'flow',loop:1,diagnostic:'goto_unresolved',noErrors:true,coverageMin:1}, + graphExpect:{ + required:[ + {fromText:'LEAVE NO_SUCH_LOOP',toText:'Unresolved label: NO_SUCH_LOOP',style:'dotted'} + ], + forbidden:[ + {fromText:'LEAVE NO_SUCH_LOOP',toText:'SET V_DONE = 1'}, + {fromText:'LEAVE NO_SUCH_LOOP',toText:'OUTER_LOOP'} + ], + sourced:['LEAVE NO_SUCH_LOOP'] + } + }, + { + name:'DB2 graph · ATOMIC block rollback scope on EXIT handler', + dialect:'db2', + sql:[ + 'CREATE PROCEDURE APP.ATOMIC_SCOPE()', + 'LANGUAGE SQL', + 'BEGIN', + ' BEGIN ATOMIC', + ' DECLARE EXIT HANDLER FOR SQLEXCEPTION', + ' SET V_ERR = 1;', + ' UPDATE APP.WORK SET X = 1;', + ' SET V_OK = 1;', + ' END;', + ' SET V_DONE = 1;', + 'END' + ].join('\n'), + expect:{mode:'flow',cat:1,noErrors:true,coverageMin:1}, + graphExpect:{ + required:[ + {fromText:'BEGIN ATOMIC · rollback scope',toText:'UPDATE APP.WORK'}, + {fromText:'UPDATE APP.WORK',toText:'EXIT HANDLER FOR SQLEXCEPTION',style:'dotted'}, + {fromText:'Exit compound block',toText:'Implicit rollback · ATOMIC block'}, + {fromText:'SET V_OK = 1',toText:'SET V_DONE = 1'} + ], + forbidden:[ + {fromText:'Implicit rollback · ATOMIC block',toText:'SET V_DONE = 1'}, + {fromText:'SET V_ERR = 1',toText:'SET V_DONE = 1'} + ], + sourced:['UPDATE APP.WORK','EXIT HANDLER FOR SQLEXCEPTION','SET V_OK = 1','SET V_DONE = 1'] + } + }, + { + name:'DB2 graph · ATOMIC block stops continuation after terminal error', + dialect:'db2', + sql:[ + 'CREATE PROCEDURE APP.ATOMIC_STOP()', + 'LANGUAGE SQL', + 'BEGIN ATOMIC', + ' UPDATE APP.WORK SET X = 1;', + ' SIGNAL SQLSTATE \'75001\';', + ' UPDATE APP.UNREACHABLE SET X = 2;', + 'END' + ].join('\n'), + expect:{mode:'flow',exit:1,noErrors:true,coverageMin:1}, + graphExpect:{ + required:[ + {fromText:'BEGIN ATOMIC · rollback scope',toText:'UPDATE APP.WORK'}, + {fromText:'UPDATE APP.WORK',toText:'SIGNAL SQLSTATE'} + ], + forbidden:[ + {fromText:'SIGNAL SQLSTATE',toText:'UPDATE APP.UNREACHABLE'}, + {fromText:'UPDATE APP.UNREACHABLE',toText:'End'} + ], + sourced:['UPDATE APP.WORK','SIGNAL SQLSTATE','UPDATE APP.UNREACHABLE'] + } } ]; diff --git a/tests/dialects/plpgsql.ts b/tests/dialects/plpgsql.ts index 9eebd37..4af2bbe 100644 --- a/tests/dialects/plpgsql.ts +++ b/tests/dialects/plpgsql.ts @@ -336,6 +336,30 @@ var PROCFLOW_PLPGSQL_GRAPH_FIXTURES: GraphFixture[] = [ 'UPDATE app.orders' ] } + }, + { + name:'PL/pgSQL graph · unresolved EXIT target gets an explicit node', + dialect:'plpgsql', + sql:[ + 'CREATE FUNCTION app.bad_exit() RETURNS void LANGUAGE plpgsql AS $$', + 'BEGIN', + ' LOOP', + ' EXIT missing_loop;', + ' END LOOP;', + 'END;', + '$$;' + ].join('\n'), + expect:{mode:'flow',loop:1,diagnostic:'goto_unresolved',noErrors:true,coverageMin:1}, + graphExpect:{ + required:[ + {fromText:'EXIT missing_loop',toText:'Unresolved label: missing_loop',style:'dotted'} + ], + forbidden:[ + {fromText:'EXIT missing_loop',toText:'loop'}, + {fromText:'EXIT missing_loop',toText:'End'} + ], + sourced:['EXIT missing_loop'] + } } ]; diff --git a/tests/dialects/tsql.ts b/tests/dialects/tsql.ts index d8dc775..e21e63f 100644 --- a/tests/dialects/tsql.ts +++ b/tests/dialects/tsql.ts @@ -462,6 +462,53 @@ var PROCFLOW_TSQL_GRAPH_FIXTURES: GraphFixture[] = [ '@i = 9','SET @done = 1','SET @finished = 1'] } }, + { + name:'T-SQL graph · unresolved GOTO target gets an explicit node', + dialect:'tsql', + sql:[ + 'CREATE PROCEDURE dbo.unresolved_goto AS', + 'BEGIN', + ' GOTO missing_label;', + ' SET @unreachable = 1;', + 'END' + ].join('\n'), + expect:{mode:'flow',diagnostic:'goto_unresolved',noErrors:true,coverageMin:1}, + graphExpect:{ + required:[ + {fromText:'GOTO missing_label',toText:'Unresolved label: missing_label',style:'dotted'} + ], + forbidden:[ + {fromText:'GOTO missing_label',toText:'End'}, + {fromText:'GOTO missing_label',toText:'SET @unreachable = 1'} + ], + sourced:['GOTO missing_label'] + } + }, + { + name:'T-SQL graph · forward GOTO and label carry source spans', + dialect:'tsql', + sql:[ + 'CREATE PROCEDURE dbo.forward_goto AS', + 'BEGIN', + ' GOTO done;', + ' SET @unreachable = 1;', + 'done:', + ' RETURN;', + 'END' + ].join('\n'), + expect:{mode:'flow',exit:1,noErrors:true,coverageMin:1}, + graphExpect:{ + required:[ + {fromText:'GOTO done',toText:'done:',style:'dotted'}, + {fromText:'RETURN',toText:'End'} + ], + forbidden:[ + {fromText:'SET @unreachable = 1',toText:'RETURN'}, + {fromText:'GOTO done',toText:'RETURN'} + ], + sourced:['GOTO done','done:','RETURN'] + } + }, { name:'T-SQL graph · unresolved named rollback stays conservative', dialect:'tsql', diff --git a/tests/tests.ts b/tests/tests.ts index d3b1621..ca4932f 100644 --- a/tests/tests.ts +++ b/tests/tests.ts @@ -437,6 +437,127 @@ false,String(err&&err.stack||err)); } + /* v1.3.0: procedural control flow — labelled/GOTO spans, unresolved labels, + cursor query graphs, DB2 ATOMIC scope, extended summarise, export parity. */ + function spanOk31(span: SourceSpan | null): boolean { + return !!span&&span.start>=0&&span.end>span.start; + } + try{ + var unresDiag=analyse('CREATE PROC dbo.und AS BEGIN GOTO nope; END', + {dialect:'tsql',mode:'flow',group:false,sources:true}); + var hasGotoDiag=unresDiag.diagnostics.some(function(d){ + return d.code==='goto_unresolved'&&d.scope==='region'&&spanOk31(d.span); + }); + var hasUnresNode=unresDiag.graph.nodes.some(function(n){ + return /Unresolved label: nope/.test(n.text); + }); + record('v1.3.0 goto_unresolved region diagnostic and unresolved-label node', + hasGotoDiag&&hasUnresNode, + JSON.stringify(unresDiag.diagnostics)); + }catch(err){ + record('v1.3.0 goto_unresolved region diagnostic and unresolved-label node', + false,String(err&&err.stack||err)); + } + + try{ + var spanSrc='CREATE PROC dbo.span AS BEGIN GOTO done; done: RETURN; END'; + var spanGoto=analyse(spanSrc, + {dialect:'tsql',mode:'flow',group:false,sources:true}); + var gotoSpans=spanGoto.graph.nodes.filter(function(n){return /^GOTO done/.test(n.text);}) + .every(function(n){return spanOk31(n.source);}); + var labelSpans=spanGoto.graph.nodes.filter(function(n){return /^done:/.test(n.text);}) + .every(function(n){return spanOk31(n.source);}); + record('v1.3.0 labelled loop-control and GOTO carry source spans', + gotoSpans&&labelSpans, + JSON.stringify(spanGoto.graph.nodes.map(function(n){return {text:n.text,src:n.source};}))); + }catch(err){ + record('v1.3.0 labelled loop-control and GOTO carry source spans', + false,String(err&&err.stack||err)); + } + + try{ + var cursorSource='CREATE PROC dbo.cursor_view AS BEGIN\n'+ + ' DECLARE c CURSOR FOR SELECT id FROM dbo.account;\n'+ + ' OPEN c;\n'+ + 'END'; + var cursorQ=analyse(cursorSource, + {dialect:'tsql',mode:'query',group:false,sources:true}); + var cursorSrcs=cursorQ.graph.nodes.filter(function(n){return n.cls==='src';}) + .map(function(n){return n.text;}); + var db2ForSql='CREATE PROCEDURE APP.CURVIEW() LANGUAGE SQL BEGIN\n'+ + ' FOR V AS CUR CURSOR FOR SELECT ID FROM APP.ACCOUNT DO\n'+ + ' SET V_DONE = V_DONE + 1;\n'+ + ' END FOR;\n'+ + 'END'; + var db2For=analyse(db2ForSql, + {dialect:'db2',mode:'query',group:false,sources:true}); + var db2Srcs=db2For.graph.nodes.filter(function(n){return n.cls==='src';}) + .map(function(n){return n.text;}); + record('v1.3.0 cursor query bodies appear in query graphs (T-SQL + DB2)', + has(cursorSrcs,'dbo.account')&&has(db2Srcs,'APP.ACCOUNT')&& + cursorQ.graph.stats.tables>=1&&db2For.graph.stats.tables>=1, + JSON.stringify({tsql:cursorSrcs,db2:db2Srcs})); + }catch(err){ + record('v1.3.0 cursor query bodies appear in query graphs (T-SQL + DB2)', + false,String(err&&err.stack||err)); + } + + try{ + var sumSql='CREATE PROCEDURE dbo.summarise AS BEGIN\n'+ + ' GRANT REFERENCES ON dbo.Orders TO app_role;\n'+ + " WAITFOR DELAY '00:00:02';\n"+ + ' KILL 42;\n'+ + ' DECLARE c CURSOR FOR SELECT id FROM dbo.Orders;\n'+ + ' OPEN c;\n'+ + ' FETCH NEXT FROM c INTO @id;\n'+ + ' DEALLOCATE c;\n'+ + 'END'; + var sumR=analyse(sumSql, + {dialect:'tsql',mode:'flow',group:false,sources:true}); + var sumLabels=['GRANT … ON dbo.Orders','WAITFOR','KILL 42','OPEN c', + 'FETCH FROM c','DEALLOCATE c']; + var sumOk=sumLabels.every(function(label){ + return !!matchingNode(sumR.graph,label); + }); + record('v1.3.0 extended summarise label set (GRANT, WAITFOR, KILL, cursor)', + sumOk, + JSON.stringify(sumR.graph.nodes.map(function(n){return n.text;}))); + }catch(err){ + record('v1.3.0 extended summarise label set (GRANT, WAITFOR, KILL, cursor)', + false,String(err&&err.stack||err)); + } + + try{ + var ux=analyse('CREATE PROC dbo.ux AS BEGIN GOTO nope; END', + {dialect:'tsql',mode:'flow',group:false,sources:true}); + var uxMermaid=toMermaid(ux.graph,'TD'); + var uxXml=toDrawio(ux.graph,{title:'ux',dir:'TD'}); + var uxDoc=new DOMParser().parseFromString(uxXml,'application/xml'); + var atomicSql='CREATE PROCEDURE APP.AX() LANGUAGE SQL BEGIN\n'+ + ' BEGIN ATOMIC\n'+ + ' DECLARE EXIT HANDLER FOR SQLEXCEPTION\n'+ + ' SET V_ERR = 1;\n'+ + ' UPDATE APP.T SET X = 1;\n'+ + ' END;\n'+ + 'END'; + var ax=analyse(atomicSql, + {dialect:'db2',mode:'flow',group:false,sources:true}); + var axMermaid=toMermaid(ax.graph,'TD'); + var axXml=toDrawio(ax.graph,{title:'ax',dir:'TD'}); + var axDoc=new DOMParser().parseFromString(axXml,'application/xml'); + record('v1.3.0 F export parity for unresolved-label and ATOMIC nodes', + !uxDoc.querySelector('parsererror')&&!axDoc.querySelector('parsererror')&& + /flowchart/.test(uxMermaid)&&/flowchart/.test(axMermaid)&& + /data-procflow=/.test(uxXml)&&/data-procflow=/.test(axXml), + JSON.stringify({ux:uxDoc.querySelector('parsererror')&& + uxDoc.querySelector('parsererror').textContent, + ax:axDoc.querySelector('parsererror')&& + axDoc.querySelector('parsererror').textContent})); + }catch(err){ + record('v1.3.0 F export parity for unresolved-label and ATOMIC nodes', + false,String(err&&err.stack||err)); + } + var passed=results.filter(function(r){return r.pass;}).length; document.body.className=passed===results.length?'pass':'fail'; document.getElementById('summary').textContent=passed+'/'+results.length+' tests passed';