Skip to content

Use one foreign key reference state - #2740

Open
minleejae wants to merge 1 commit into
JSQLParser:masterfrom
minleejae:refactor/ddl-foreign-key-state-20261001
Open

minleejae wants to merge 1 commit into
JSQLParser:masterfrom
minleejae:refactor/ddl-foreign-key-state-20261001

Conversation

@minleejae

Copy link
Copy Markdown
Contributor

ForeignKeyIndex now delegates to ForeignKeyReference instead of maintaining a second table, column list and action set. This preserves action identity and ON DELETE target columns when inspecting the reference. Removing a mutated referential action also works after its hash changes.

Existing parser result classes and public method signatures are retained. This change does not expand grammar or dialect acceptance. setReference(null) retains current legacy table/columns/actions while dropping reference-only options; it no longer restores stale snapshots.

Validation: Four of 8 new regressions fail on the base. All 366 focused CREATE/ALTER/foreign-key tests pass, plus Spotless.

Combined validation with the six related DDL refactoring branches: Gradle check passes (9,395 tests: 9,370 passed, 25 skipped, zero failures). Of 840 DDL cases accepted by MySQL 8.4.11/PostgreSQL 18.6, 835 parse and produce toString/deparser SQL that also executes successfully; the remaining 5 already fail to parse on base 87e8814. Final SQL outputs match the DB-replayed outputs exactly. These combined checks supplement the branch-specific tests above.

Signed-off-by: minleejae <mmj9808@gmail.com>
@minleejae
minleejae marked this pull request as ready for review October 1, 2026 15:21

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant