All Your GUCs in a Row: jit_above_cost, jit_inline_above_cost, and jit_optimize_above_cost
PostgreSQL's JIT compiler fires based on estimated query cost, but that estimate measures data volume, not expression complexity.
christophe pettus' software development blog
PostgreSQL's JIT compiler fires based on estimated query cost, but that estimate measures data volume, not expression complexity.
PostgreSQL's JIT compiler has two jobs: compiling expressions and deforming tuples. Here's how to isolate JIT bugs with two simple boolean toggles.
PostgreSQL's JIT compiler trades upfront compilation time for faster query execution—but it silently does nothing if the LLVM library isn't installed.
Choose your I/O execution engine with `io_method` and size the worker pool with `io_workers`—and yes, you can resize workers without restarting.
PostgreSQL 18's new io_max_concurrency caps per-process I/O operations in flight.
PostgreSQL 17 introduced read streams that combine adjacent disk blocks into larger I/O requests.
IntervalStyle changes how PostgreSQL parses interval input, not just formats output—and in one case, it silently flips the sign of your data.
Every PostgreSQL connection since 8.0 has heard the server announce `integer_datetimes`—a parameter that's had only one possible value since PostgreSQL 10.
Discover how `in_hot_standby` lets clients automatically detect whether they're connected to a primary or standby—and why the timing of that notification…
Recover from catalog index corruption by sequentially scanning system tables instead of using indexes.
When a standby refuses to replay WAL that references pages that don't exist, `ignore_invalid_pages` converts the PANIC into a WARNING—but only as a last resort…
When data checksums catch corruption, restore from backup or fail over—unless you have neither.
Jacob Jackson at ByteofDev built something I can only describe as admirably irresponsible (and something I wish I had thought of first): claudegres, a “PostgreSQL” in which Claude is the entire backend. Not Claude tuning the database, and not Claude writing queries against the database. Claude as…
Idle sessions consume connection slots and backend memory—not locks or xmin. Learn when and how to reap them without sabotaging your connection pooler.
Replication slots promise to keep WAL forever—until PostgreSQL 18's new `idle_replication_slot_timeout` puts an expiration date on abandoned ones before they…
Idle transactions hold locks and block vacuums, turning one forgotten connection into a cascading outage.
ident_file tells the server where pg_ident.conf lives, but when it's wrong, the server just logs a quiet failure and keeps running.
`hot_standby_feedback` trades primary bloat to prevent query cancellations on standbys—but it only stops cleanup conflicts, not lock or drop conflicts, and…
PostgreSQL's hot_standby switch transforms a spare server into a readable replica, but the real tuning work happens elsewhere.
hba_file points to your authentication rules, not the rules themselves. Reload changes to pg_hba.conf instantly; restart when moving the file.
Hash and sort operations have wildly different relationships with memory, and `hash_mem_multiplier` lets you feed them separately.