Add AST-based SQL transpiler for PostgreSQL to DuckDB conversion #34
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.
Summary
pg_query_go(PostgreSQL's C parser via CGO)Changes
New
transpiler/package with transform pipeline:PgCatalogTransform: Rewritespg_catalog.*references to local viewsTypeMappingTransform: Converts PostgreSQL types (JSONB→JSON, BYTEA→BLOB, INET→TEXT, etc.)TypeCastTransform: Handles type casts (::regtype → ::VARCHAR)FunctionTransform: Maps 50+ PostgreSQL functions (array_agg→list, string_to_array→string_split, etc.)OperatorTransform: Handles JSON and regex operator compatibilityVersionTransform: Replacesversion()with PostgreSQL-compatible stringSetShowTransform: Handles SET/SHOW command syntax with 70+ ignored parametersOnConflictTransform: Handles ON CONFLICT (upsert) syntaxDDLTransform: Strips constraints for DuckLake modePlaceholderTransform: Converts $1, $2 → ? for extended query protocolBenefits over regex approach:
'pg_catalog'inside strings)Test plan
🤖 Generated with Claude Code