feat: preserve column default expressions in table definitions - #2616
Open
minleejae wants to merge 1 commit into
Open
feat: preserve column default expressions in table definitions#2616minleejae wants to merge 1 commit into
minleejae wants to merge 1 commit into
Conversation
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.
Column defaults in CREATE TABLE and ALTER TABLE ADD/MODIFY/CHANGE COLUMN were flattened into raw tokens, so expression visitors, validation and AST edits could not reach their values. Preserve explicit defaults as
ColumnOption.Kind.DEFAULTwith anExpressionpayload, including function calls, casts, arrays and arithmetic expressions.Share callback-based column and option rendering between the AST and deparsers. This also keeps multi-column ALTER layouts, CHANGE/FIRST/AFTER clauses and TYPE/USING expressions on the same rendering path. DEFAULT expressions participate in the existing table-definition traversal.
getColumnSpecs()remains available as a token snapshot, with each explicit default value rendered as one expression entry. Expression formatting now follows the existing AST renderers, including lowercase boolean literals. Raw specifications, implicit defaults, DEFAULT ON NULL, identity options, SERIAL DEFAULT VALUE and DROP DEFAULT retain their existing paths.Validation: Java 17
./gradlew --console=plain --max-workers=2 check(6,761 tests, zero failures/errors, 25 skipped). Includes JavaCC choice-conflict checking, Checkstyle, PMD, SpotBugs and Spotless. Regression coverage checks default/constraint boundaries, AST replacement and legacy token updates, visitor context, validation, custom deparsing and CREATE/ALTER round trips.