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>
This branch has not been deployed
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
00a8400c, all checks pass: Codacy (zero new issues), grammar conflicts, Gradle Check and Maven Verify on Linux, macOS and Windows.