Repository navigation
Separate index and constraint ASTs (breaking API change) - #2747
Merged
manticore-projects merged 5 commits intoOct 11, 2026
Merged
manticore-projects merged 5 commits into
manticore-projects merged 5 commits into
Conversation
Signed-off-by: minleejae <mmj9808@gmail.com>
Signed-off-by: minleejae <mmj9808@gmail.com>
Signed-off-by: minleejae <mmj9808@gmail.com>
Signed-off-by: minleejae <mmj9808@gmail.com>
Contributor
|
Please resolve conflicts. |
Preserve the merged canonical index options, foreign-key state, and shared ALTER rendering alongside the separate constraint AST. Migrate new upstream tests to the constraint API and verify stale-field classification with operation-aware column rendering. Signed-off-by: minleejae <mmj9808@gmail.com>
Contributor
|
Thank you! |
minleejae
added a commit
to minleejae/JSqlParser
that referenced
this pull request
Oct 11, 2026
Delegate legacy FK accessors to the structured constraint, remove copied grammar state and the fallback renderer, and validate the current reference. Preserve quoted name parts and protect existing non-FK definitions. This follow-up is based on PR JSQLParser#2747 at 9be3636. Signed-off-by: minleejae <mmj9808@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Make indexes and logical constraints distinct AST concepts so callers can inspect and edit CREATE TABLE and ALTER TABLE definitions without treating every constraint as an index. Preserve declared SQL and share only the components the definitions actually have in common.
Current design (As-is)
Before this change, table constraints inherit
Index. CHECK and DEFAULT therefore expose irrelevant key/index options, andgetIndexes()mixes physical index declarations with PRIMARY KEY, UNIQUE, FOREIGN KEY and other constraints. Inline constraints and ALTER payloads require different inspection paths, while some editing helpers retain duplicate state.Target design (To-be)
This PR implements the following refactoring:
Indexfrom an independent abstractNamedConstraintbase withConstraintKind. PRIMARY KEY/UNIQUE useKeyConstraint;ForeignKeyIndexbecomesForeignKeyConstraint.Index.Kindcontains only index classifications.KeyElement,IndexOptionandIndexOptionsthrough composition where appropriate. CHECK, DEFAULT and NOT NULL have no irrelevant key/index fields.ConstraintUsingIndexreferences an existing index without manufacturing a backing index or key list.getIndexes()andgetTableConstraints()views.getConstraints()combines inline/table declarations in source order and retains editable source nodes and owning columns.DefaultConstraintnodes remain constraints.This is a breaking API change.
usage.rstdocuments replacement types/accessors, extracted shared components and CREATE/ALTER migration examples. The refactoring does not infer catalogue objects or implicit supporting indexes.Validation
40ed289b; the latest merge commit is9be36363. GitHub CI passes for this revision: Codacy, grammar conflicts, and Gradle/Maven checks on Linux, macOS and Windows.