provensql
A formal verification tool that mathematically proves whether a SQL query edit changes the result — not a heuristic guess, a definitive yes-or-no answer.
🔗 Visit provensqlDescription
When someone edits a SQL query in a pull request, the reviewer's real question is usually simple: 'does this change what the query returns?' — but answering that by reading the SQL is slow and error-prone, and most tools that try to help (linters, LLM-based reviewers) can only guess. provensql answers that question with actual mathematical proof instead of a guess: it parses both versions of the query, puts them into a canonical form, and uses an SMT solver to either prove they're equivalent or generate a concrete counterexample showing exactly how they differ.
It returns one of four clear verdicts — EQUIVALENT, SCHEMA_CHANGE, DIFFERENT, or UNKNOWN — and when it says DIFFERENT, it hands you a concrete example input where the two queries actually diverge, rather than just asserting they do. It plugs into GitHub Actions and pre-commit hooks so a bad SQL change can be caught automatically before merge, and can optionally use catalog/schema information to reason about constraints more precisely. It's Apache 2.0 licensed and aimed at data teams shipping SQL through tools like dbt against warehouses like BigQuery.
💬 Our review
The short version: a rare case of a tool that promises certainty and actually delivers it — provensql doesn't guess whether a SQL edit is safe, it proves it or shows you exactly why it isn't, which is a categorically different (and stronger) guarantee than anything based on parsing heuristics or an LLM's opinion.
Compared to tools like sqlglot or sqlfluff (which help you parse or lint SQL) or an LLM reviewing a diff, provensql's SMT-solver-backed proof is the real differentiator: a formal EQUIVALENT verdict is something you can trust in a way a linter's pass or an LLM's 'looks fine to me' never can be. The honest trade-off is the UNKNOWN verdict itself — SMT solvers can't decide every possible query pair, so on sufficiently complex SQL you'll sometimes get 'can't prove it either way' rather than a clean answer, and it's narrowly scoped to detecting result-changing edits, not a general SQL quality or style tool.
💰 Pricing
📊 Global score
🤖 AI-enriched data
Open source sous licence Apache 2.0.
Pros
Preuve mathématique (SMT solver) de l'équivalence, pas une heuristique
Génère un contre-exemple concret quand les requêtes diffèrent
Intégration GitHub Actions et pre-commit
Gratuit et open source (Apache 2.0)
Cons
Verdict UNKNOWN possible sur des requêtes trop complexes pour le solveur
Scope étroit : détecte les changements de résultat, pas la qualité générale du SQL
Projet jeune, adoption encore limitée
