Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(analyzer): Analyze queries using a running PostgreSQL database #2805

Merged
merged 10 commits into from
Oct 12, 2023

Conversation

kyleconroy
Copy link
Collaborator

@kyleconroy kyleconroy commented Oct 5, 2023

94 of the open issues on sqlc are related to the analyzer. There are many cases where the current analyzer produces false positives or false negatives.

sqlx and some other projects have proven that it's possible to extract query metadata from a running database.

This approach is a bit different, in that the database analysis is layered on top of the existing query analyzer. We use the existing analysis for better name and NULL inference.

This PR is an obvious work in progress, but I'm happy enough with the result to share an early peek.

@kyleconroy kyleconroy changed the title feat(analyzer): Analyze queryies using a PostgreSQL database feat(analyzer): Analyze queries using a running PostgreSQL database Oct 10, 2023
94 of the open issues on sqlc are related to the analyzer. There are
many cases where the current analyzer produces false positives or
false negatives.

sqlx and some other projects have proven that it's possible to extract
query metadata from a running database.

This approach is a bit different, in that the database analysis is
layered on top of the existing query analyzer. We use the new analysis
to provide better type information and support a wider set of cases when
the existing analyzer fails.
Add a `contexts` key to exec.json to opt certain tests into or out of
database-backed analysis.

Fix many incorrect test cases that didn't run against an actual
database.
@kyleconroy kyleconroy marked this pull request as ready for review October 12, 2023 01:24
This pull request was closed.
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