Elevarq Blog
Technical writing on PostgreSQL performance, database operations, observability, and the engineering systems behind our products.
Bloat that won't come back: prevention, pg_repack, and PostgreSQL 19's REPACK
Some PostgreSQL bloat is self-healing. Some isn't. The kind that won't come back on its own — dead tuples sitting in regions of a table that no longer take writes — quietly inflates your storage bill, your backups, and your recovery time. Here's how to recognise it, prevent it with partitioning and fillfactor, and reclaim it with pg_repack today or REPACK in PostgreSQL 19.
postgresqlOperationspgagroal 1.1.0 is out: what changed, what to migrate, how it's signed
Today we shipped elevarq/pgagroal:1.1.0, our container packaging of upstream pgagroal 2.1.0 — a feature release with a security-relevant migration. New AES-256-GCM vault encryption and a GCM-only management protocol mean operators must re-key the master and upgrade every pgagroal-cli in lockstep. Verifiable end-to-end with cosign signatures, SBOM, and SLSA provenance.
postgresqlpgagroalreleasesecuritysupply-chainAuto-incrementing IDs in PostgreSQL: IDENTITY, sequences, and what your application is doing wrong
An auto-incrementing primary key in PostgreSQL is a token, not a number — once you internalise that, half the questions about IDs collapse. This post covers picking the right type (IDENTITY over SERIAL, UUIDv7 when you need it), getting the new ID back with RETURNING, using it as a foreign key in one statement via a CTE, and why you shouldn't reset sequences in production.
postgresql"does not exist" in PostgreSQL: how to read the error and stop guessing
9:14 Tuesday morning. The deploy hit production and the user-lookup endpoint returns 500s with 'operator does not exist: text = uuid'. The column exists, the parameter is bound, the rollback is being drafted. PostgreSQL's resolver is telling you exactly what went wrong — almost nobody reads past the first line. How to read the message, and the five levers (cast, signature, schema, extension, quoting) that fix the family.
postgresqlOperationsInheriting a Postgres database
You inherited the database six months ago. Today the BI engineer needs SELECT on the analytics schema by 2pm — but the table the ETL created last week returns permission denied. A walk through the small PostgreSQL commands every team rediscovers under pressure, and the pattern that makes them compound when they all hit at once: ALTER DEFAULT PRIVILEGES, pg_dump shapes, SHOW, numeric types, psql meta-commands, and the seams of running on RDS.
postgresqlOperationsWhy your PostgreSQL planner is wrong (and what to do about it)
The planner estimates costs for every query plan. When those estimates are wrong, performance degrades. Here is how to find and fix planner misestimation.
postgresqlPerformance