DEV Community

Makroumi
Makroumi

Posted on

Real-Time SQL Analysis in VS Code: Catch Dangerous Queries Before You Save the File

Most SQL bugs are caught in one of three places. Code review,
where a tired engineer might miss them. Staging, where the
dataset is too small to reveal the problem. Production, at 2am,
where they cause the most damage.

The SlowQL VS Code extension adds a fourth option: your editor,
before you even save the file.


What it does

SlowQL for VS Code runs 272 static analysis rules against your
SQL as you type. Diagnostics appear in the Problems panel
automatically. Open a .sql file and it works. No database
connection, no configuration, no pipeline to set up first.

The kind of bugs it catches are the ones that look completely
fine until they aren't. A DELETE with no WHERE clause that
wipes your entire customers table. A LIKE pattern starting
with a wildcard that silently bypasses your index on every
single query. A GRANT ALL PRIVILEGES that gives your app user
god mode access to your entire database. A cartesian join
that returns every row times every row because someone forgot
the JOIN condition.

All of it flagged in real time. Before you save. Before you
commit. Before anyone reviews it.


What gets flagged

272 rules across six dimensions:

Security catches SQL injection vectors, hardcoded credentials
in migration files, privilege escalation and dynamic SQL
construction that opens injection surfaces.

Performance catches full table scans, leading wildcards that
bypass indexes, functions on indexed columns, N+1 patterns
and unbounded queries with no LIMIT.

Reliability catches DELETE and UPDATE without WHERE clauses,
missing transactions around multi-statement operations and
data loss risks.

Quality catches NULL comparison errors, implicit joins,
deprecated syntax and naming violations.

Cost catches cloud warehouse antipatterns. SELECT * on wide
tables in BigQuery and Athena, unbounded scans in scheduled
jobs, repeated subqueries that could be materialized.

Compliance catches GDPR violations, HIPAA risks, PCI-DSS
and SOX compliance issues at the query level.


14 dialects, dialect-specific rules

107 of the 272 rules are dialect-aware. Set your dialect
once in VS Code settings and SlowQL fires only the rules
relevant to your database engine. No false positives from
rules that don't apply to your stack.

PostgreSQL, MySQL, SQL Server, Oracle, SQLite, Snowflake,
BigQuery, Redshift, ClickHouse, DuckDB, Presto, Trino,
Spark, Databricks.


Schema-aware validation

Point SlowQL at your DDL files and it validates your queries
against your actual schema. Catches references to tables and
columns that don't exist. Suggests missing indexes on
filtered columns.

This is where static analysis stops being generic and starts
understanding your specific database. A SELECT on a column
that doesn't exist in your schema gets flagged before the
query ever runs.


Why offline matters

Everything runs on your machine. Your SQL never leaves your
editor. No API calls, no telemetry on your query content,
no external service processing your database schema.

This matters more than people realise. Engineers at banks,
healthcare companies and fintech teams often cannot pipe
their SQL to an external service for analysis. The offline
constraint is not a limitation. It is a deliberate design
decision that makes SlowQL usable in environments where
cloud-based tools are not an option.


Three ways to run it

VS Code extension for real-time diagnostics as you write.
Install from the marketplace, open a .sql file, done.

CLI for local analysis and scripting:

pip install slowql
slowql queries.sql
Enter fullscreen mode Exit fullscreen mode

Docker if you don't want to install Python:

docker run --rm -v $(pwd):/src makroumi/slowql /src/queries.sql
Enter fullscreen mode Exit fullscreen mode

GitHub Actions to block dangerous SQL from merging:

- uses: makroumi/slowql-action@v1
  with:
    path: "./sql/**/*.sql"
    fail-on: high
Enter fullscreen mode Exit fullscreen mode

The feedback loop SQL never had

Application code gets linted in the editor, type-checked
at compile time and reviewed by automated tools before it
merges. SQL gets reviewed by a human who is focused on
business logic, not injection surfaces or index bypass
patterns.

The SlowQL VS Code extension closes that gap at the
earliest possible point in the development cycle. The
same query that would have paged you at 2am gets a red
squiggly line at 2pm before you even commit it.


SlowQL is open source. VS Code extension, CLI, Docker
and GitHub Action all available at
github.com/makroumi/slowql




Enter fullscreen mode Exit fullscreen mode

Top comments (0)