Skip to content

feat: preserve column default expressions in table definitions - #2616

Open
minleejae wants to merge 1 commit into
JSQLParser:masterfrom
minleejae:feat/ddl-column-default-expressions
Open

feat: preserve column default expressions in table definitions#2616
minleejae wants to merge 1 commit into
JSQLParser:masterfrom
minleejae:feat/ddl-column-default-expressions

Conversation

@minleejae

Copy link
Copy Markdown
Contributor

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.DEFAULT with an Expression payload, 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.

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