Skip to content

fix: share PostgreSQL column key and storage parameter parsing - #2709

Merged
manticore-projects merged 1 commit into
JSQLParser:masterfrom
minleejae:fix/postgresql-column-index-options
Sep 25, 2026
Merged

manticore-projects merged 1 commit into
JSQLParser:masterfrom
minleejae:fix/postgresql-column-index-options

Conversation

@minleejae

Copy link
Copy Markdown
Contributor

PostgreSQL column PRIMARY KEY / UNIQUE storage and tablespace options were left outside the constraint AST. Updating Index.setStorageParameters or setTableSpace therefore printed both the replacement and the original clause. Bare storage options such as WITH (autovacuum_enabled) also failed in several CREATE contexts.

Share the storage/tablespace parser between column and table constraints, keeping column-level INCLUDE disallowed. Let the shared storage-option parser preserve omitted values, while requiring values and equals signs in PostgreSQL operator-class parameter contexts. Existing Index.Option nodes provide the mutable representation and both output paths.

Validation: full Gradle check and grammar ambiguity gate; 31 valid PostgreSQL 18.6 cases preserve selected catalog results across original, toString and deparser SQL. Four column-option mutation regressions and a table-constraint control execute correctly. Eight column-INCLUDE variants are rejected by PostgreSQL and excluded from the valid-case count.

Signed-off-by: minleejae <mmj9808@gmail.com>
@manticore-projects
manticore-projects merged commit 01926d1 into JSQLParser:master Sep 25, 2026
10 checks passed
@manticore-projects

Copy link
Copy Markdown
Contributor

Thank you!

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.

2 participants