provensql

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 provensql
📁 Databases & Storage🗣️ English📅 August 26, 2026

Description

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

FreeOpen source, Apache 2.0 license.

📊 Global score

53Average
🌐Availability15/100Faible

1 language · 0 platform

📄Profile90/100Excellent

Profile completeness

🤖 AI-enriched data

💰 Pricing model
🆓 Gratuit

Open source sous licence Apache 2.0.

👥 Target audienceÉquipes data engineering utilisant dbt/BigQuery et voulant valider automatiquement les changements de requêtes SQL
🗣️ Languagesen
🌍 Target countriesWorldwide
👍

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

❓ Frequently asked questions

What is provensql?
Who is it for?
How much does it cost?
What happens when it can't prove equivalence?
Is it worth the money compared to alternatives?
Which tool should you pick for your case?