Skip to content

Reuse foreign-data options for PostgreSQL wrappers, servers and user mappings - #2720

Merged
manticore-projects merged 1 commit into
JSQLParser:masterfrom
minleejae:feat/postgresql-foreign-data-objects-20260925
Sep 27, 2026
Merged

manticore-projects merged 1 commit into
JSQLParser:masterfrom
minleejae:feat/postgresql-foreign-data-objects-20260925

Conversation

@minleejae

Copy link
Copy Markdown
Contributor

PostgreSQL foreign tables already use structured ForeignDataOption nodes, but CREATE/ALTER FOREIGN DATA WRAPPER, SERVER and USER MAPPING were still unsupported. This prevents parsing complete foreign-data setup scripts.

Reuse the foreign-table option parser/model across these objects, including ALTER ADD/SET/DROP operations. Model handler/validator declarations, server TYPE/VERSION (including explicit NULL), mapping users, and supported rename/owner actions. Wire statement visitors, expression deparsing and feature validation. Guard contextual-keyword lookahead against EOF so a final function name such as handler cannot be mistaken for another clause.

Tests cover option mutations, handler/validator order, absent versus explicit NO/NULL forms, invalid CREATE options, statement boundaries, and existing CREATE USER/foreign-table paths. Executed accepted audit cases and 20 additional scenarios on PostgreSQL 18.6; wrapper, server and user-mapping catalog state matches for original SQL and both renderers.

Syntax references: CREATE FOREIGN DATA WRAPPER, CREATE SERVER, CREATE USER MAPPING.

Validation: focused tests, JavaCC ambiguity checks, Checkstyle and Spotless on this independent branch. The combined implementation also passes the full Gradle check and Maven verify; the 1,304-input prior regression corpus has no previously successful input regressions.

… user mappings

Signed-off-by: minleejae <mmj9808@gmail.com>
@manticore-projects
manticore-projects merged commit 0de0e09 into JSQLParser:master Sep 27, 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