RSSAmplifier

Blog

the build

christophe pettus' software development blog

thebuild.comRSS feed ↗21 posts

Latest posts

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.

All Your GUCs in a Row: jit_expressions and jit_tuple_deforming

PostgreSQL's JIT compiler has two jobs: compiling expressions and deforming tuples. Here's how to isolate JIT bugs with two simple boolean toggles.

All Your GUCs in a Row: jit and jit_provider

PostgreSQL's JIT compiler trades upfront compilation time for faster query execution—but it silently does nothing if the LLVM library isn't installed.

All Your GUCs in a Row: io_method and io_workers

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.

All Your GUCs in a Row: io_max_concurrency

PostgreSQL 18's new io_max_concurrency caps per-process I/O operations in flight.

All Your GUCs in a Row: io_combine_limit and io_max_combine_limit

PostgreSQL 17 introduced read streams that combine adjacent disk blocks into larger I/O requests.

All Your GUCs in a Row: IntervalStyle

IntervalStyle changes how PostgreSQL parses interval input, not just formats output—and in one case, it silently flips the sign of your data.

All Your GUCs in a Row: integer_datetimes

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.

All Your GUCs in a Row: in_hot_standby

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…

All Your GUCs in a Row: ignore_system_indexes

Recover from catalog index corruption by sequentially scanning system tables instead of using indexes.

All Your GUCs in a Row: ignore_invalid_pages

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…

All Your GUCs in a Row: ignore_checksum_failure

When data checksums catch corruption, restore from backup or fail over—unless you have neither.

Ontogeny Recapitulates the Relcache

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…

All Your GUCs in a Row: idle_session_timeout

Idle sessions consume connection slots and backend memory—not locks or xmin. Learn when and how to reap them without sabotaging your connection pooler.

All Your GUCs in a Row: idle_replication_slot_timeout

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…

All Your GUCs in a Row: idle_in_transaction_session_timeout

Idle transactions hold locks and block vacuums, turning one forgotten connection into a cascading outage.

All Your GUCs in a Row: ident_file

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.

All Your GUCs in a Row: hot_standby_feedback

`hot_standby_feedback` trades primary bloat to prevent query cancellations on standbys—but it only stops cleanup conflicts, not lock or drop conflicts, and…

All Your GUCs in a Row: hot_standby

PostgreSQL's hot_standby switch transforms a spare server into a readable replica, but the real tuning work happens elsewhere.

All Your GUCs in a Row: hba_file

hba_file points to your authentication rules, not the rules themselves. Reload changes to pg_hba.conf instantly; restart when moving the file.

All Your GUCs in a Row: hash_mem_multiplier

Hash and sort operations have wildly different relationships with memory, and `hash_mem_multiplier` lets you feed them separately.