datagripe

Your queries are fine.
Probably.

A database IDE that reads your SQL back to you, and says what is wrong with it.

PostgreSQL, MySQL, SQLite and Redis. Browse and edit your schema, run queries, share files with your team — and get told, before you press run, that the delete you just wrote has no where clause.

Download Free and open source, MIT.

It complains at a volume you choose

Every finding is analysis, not a sentence. The wording is picked when it is shown, so turning the dial re-words the same finding and never re-analyses. This is one gripe — a join with no condition — at all four levels.

This join has no condition. That is a cross product. notice · dry, and still critical
This join has no condition. I'll allow it. I won't forget it. warning · the default
No join condition. You've asked for every row times every row. Absolute state of this. fatal · swears. opt in.
NO JOIN CONDITION. Every row. Times every row. I want you to sit and think about what that number is. panic · a joke, deliberately

Gripes criticise the query, never the person who wrote it. Anything you disagree with is dismissable for that one occurrence, that table, or the whole project — and it always tells you it is hiding something.

Eleven rules, and none of them are about formatting

A rule earns its place by knowing something the query text does not say, or by being about damage rather than tidiness. Style filler is a formatter's job, and the fastest way to get the whole thing switched off.

Security definer, no search_path. Anyone who can add a schema owns this. blocker · routine · definer-no-search-path
status can be null, and null is not <> anything. Those rows vanish here. warning · column · nullable-inequality
The star in this view is expanded once, at creation. New columns never appear. warning · view · select-star
idx_orders_customer is already covered by idx_orders_customer_placed. It costs writes and buys nothing. style · index · duplicate

The rest of it is a database IDE

Run it in about twenty seconds

No Docker, no accounts, no configuration. The server starts its own PostgreSQL and opens without a login.

# requires bun 1.4
git clone https://github.com/rick-the-alien/datagripe
cd datagripe
bun install
bun run dev        # web on :5173

Or download the desktop app above — same thing in a window, with its own database underneath. The web app also installs as a PWA.

What 0.0.1 means

It works and it is tested. Nothing in it is promised to stay put, and these are the holes rather than a roadmap:

The changelog keeps the full list. If a gripe is wrong, that is a bug worth reporting — a wrong gripe costs more trust than a missing one.