The Curious Engineer

All blogs / Databases

select * from depesz;

depesz.com

Databases

Posts
1,678 from 13 May 2006 to 16 Oct 2026
Posting
weekly (28 in the last year)
Kind
personal blog
Feed
https://www.depesz.com/feed/

Latest

October 2026

  1. Old tech is sometimes better – a case study based on blogpost from Now-Next…

August 2026

  1. New things for regular expressions in PostgreSQL (pg_tre and pg_re2)

July 2026

  1. Waiting for PostgreSQL 19 – SQL Property Graph Queries (SQL/PGQ)
  2. Waiting for PostgreSQL 20 – Add min() and max() aggregate support for uuid.
  3. Waiting for PostgreSQL 20 – Add backend-level lock statistics

June 2026

  1. Posting explains from tools (and not web browsers)

April 2026

  1. Polish configuration for TSearch
  2. Waiting for PostgreSQL 19 – Add CONCURRENTLY option to REPACK
  3. Waiting for PostgreSQL 19 – Online enabling and disabling of data checksums
  4. Waiting for PostgreSQL 19 – new pg_get_*_ddl() functions
  5. Waiting for PostgreSQL 19 – Add UPDATE/DELETE FOR PORTION OF

March 2026

  1. Waiting for PostgreSQL 19 – json format for COPY TO
  2. Waiting for PostgreSQL 19 – Add support for EXCEPT TABLE in ALTER PUBLICATION.
  3. Waiting for PostgreSQL 19 – Add pg_plan_advice contrib module.
  4. Waiting for PostgreSQL 19 – Introduce the REPACK command
  5. Waiting for PostgreSQL 19 – Allow table exclusions in publications via EXCEPT TABLE.
  6. Waiting for PostgreSQL 19 – Add non-text output formats to pg_dumpall

February 2026

  1. Waiting for PostgreSQL 19 – Allow log_min_messages to be set per process type
  2. Waiting for PostgreSQL 19 – psql: Add %i prompt escape to indicate hot standby status.
  3. Per-worker, and global, IO bandwidth in explain plans

January 2026

  1. How to render timestamp with a timezone that is different from current?
  2. Quick and dirty loading of CSV files
  3. Small improvement for pretty-printing in paste.depesz.com
  4. What is index overhead on writes?
  5. Waiting for PostgreSQL 19 – Implement ALTER TABLE … MERGE/SPLIT PARTITIONS … command

November 2025

  1. Using JSON: json vs. jsonb, pglz vs. lz4, key optimization, parsing speed?
  2. Waiting for PostgreSQL 19 – Sequence synchronization in logical replication.
  3. Do you really need tsvector column?

October 2025

  1. Waiting for PostgreSQL 19 – Add psql PROMPT variable for search_path.
  2. Waiting for PostgreSQL 19 – Support COPY TO for partitioned tables.
  3. Waiting for PostgreSQL 19 – Add IGNORE NULLS/RESPECT NULLS option to Window functions.
  4. Waiting for PostgreSQL 19 – Add GROUP BY ALL.
  5. vtime – time commands with elapsed time visible all the time

September 2025

  1. Waiting for PostgreSQL 19 – Add date and timestamp variants of random(min, max).

August 2025

  1. Who logged to system from multiple countries in 2 hours?
  2. Waiting for PostgreSQL 19 – Display Memoize planner estimates in EXPLAIN

May 2025

  1. pg_dump speed across versions
  2. Waiting for PostgreSQL 18 – Add function to get memory context stats for processes
  3. Waiting for PostgreSQL 18 – Allow NOT NULL constraints to be added as NOT VALID

April 2025

  1. Waiting for PostgreSQL 18 – Add modern SHA-2 based password hashes to pgcrypto.
  2. Waiting for PostgreSQL 18 – Non text modes for pg_dumpall, correspondingly change pg_restore

March 2025

  1. Waiting for PostgreSQL 18 – Allow json{b}_strip_nulls to remove null array elements
  2. Waiting for PostgreSQL 18 – Allow parallel CREATE INDEX for GIN indexes

February 2025

  1. Waiting for PostgreSQL 18 – Allow EXPLAIN to indicate fractional rows.
  2. Waiting for PostgreSQL 18 – Virtual generated columns
  3. Waiting for PostgreSQL 18 – Add delay time to VACUUM/ANALYZE (VERBOSE) and autovacuum logs.
  4. Waiting for PostgreSQL 18 – Add cost-based vacuum delay time to progress views.
  5. Waiting for PostgreSQL 18 – Support RN (roman-numeral format) in to_number().

January 2025

  1. Waiting for PostgreSQL 18 – Add OLD/NEW support to RETURNING in DML queries.
  2. Waiting for PostgreSQL 18 – Allow changing autovacuum_max_workers without restarting.
  3. Waiting for PostgreSQL 18 – Enable BUFFERS with EXPLAIN ANALYZE by default
  4. Waiting for PostgreSQL 18 – Support LIKE with nondeterministic collations
  5. Waiting for PostgreSQL 18 – psql: Add more information about service name

December 2024

  1. Waiting for PostgreSQL 18 – Add UUID version 7 generation function.
  2. How to ALTER tables without breaking application?
  3. SQL best practices – don’t compare count(*) with 0

November 2024

  1. How can I send mail or HTTP request from database?
  2. Changes on pgdoc.link
  3. Grouping data into array of sums – fun with custom aggregates
  4. System views added to pgdoc.link
  5. Waiting for PostgreSQL 18 – Add SQL function array_reverse()

October 2024

  1. New way to search PostgreSQL documentation
  2. Case study: optimization of weirdly picked bad plan
  3. SQL/JSON is here! (kinda “Waiting for Pg 17”)
  4. Waiting for PostgreSQL 18 – Add temporal FOREIGN KEY contraints

September 2024

  1. Waiting for PostgreSQL 18 – Add temporal PRIMARY KEY and UNIQUE constraints

July 2024

  1. What tables were touched within given range of wal LSN?

June 2024

  1. How much speed you’re leaving at the table if you use default locale?

May 2024

  1. Waiting for PostgreSQL 17 – MERGE / SPLIT partitions

April 2024

  1. Waiting for …: SQL/JSON is coming back. Hopefully.
  2. Waiting for PostgreSQL 17 – Invent SERIALIZE option for EXPLAIN.
  3. Waiting for PostgreSQL 17 – Add new COPY option LOG_VERBOSITY.
  4. Waiting for PostgreSQL 17 – Add support for MERGE … WHEN NOT MATCHED BY SOURCE.

March 2024

  1. Waiting for PostgreSQL 17 – Add RETURNING support to MERGE.
  2. What the hell is transaction wraparound?

February 2024

  1. Waiting for PostgreSQL 17 – Add new COPY option SAVE_ERROR_TO / Rename COPY option from SAVE_ERROR_TO to ON_ERROR
  2. Waiting for PostgreSQL 17 – Support identity columns in partitioned tables

January 2024

  1. Waiting for PostgreSQL 17 – In plpgsql, allow %TYPE and %ROWTYPE to be followed by array decoration.
  2. Waiting for PostgreSQL 17 – ALTER TABLE command to change generation expression
  3. Waiting for PostgreSQL 17 – Add support for incremental backup.

December 2023

  1. Proper support for I/O Timings on explain.depesz.com

October 2023

  1. Human/version sort in PostgreSQL – revisited
  2. Waiting for PostgreSQL 17 – Add support event triggers on authenticated login

September 2023

  1. Waiting for PostgreSQL 17 – Allow \watch queries to stop on minimum rows returned
  2. Waiting for PostgreSQL 17 – Generate new LOG for “trust” connections under log_connections
  3. Waiting for PostgreSQL 17 – Add to_bin() and to_oct().

July 2023

  1. Human/version sort in PostgreSQL

June 2023

  1. Why is my WAL directory so large?
  2. A tale about (incomplete) upgrade from PostgreSQL 12 to 14

May 2023

  1. Variables in psql, how to use them?

April 2023

  1. Waiting for PostgreSQL 16 – Add array_sample() and array_shuffle() functions.

March 2023

  1. System roles – what, why, how?

February 2023

  1. Waiting for PostgreSQL 16 – Add pg_stat_io view, providing more detailed IO statistics
  2. How to get a row, and all of it’s dependencies?
  3. Now you can \d table not only in psql :)
  4. When to use VACUUM FULL
  5. Waiting for PostgreSQL 16 – Allow underscores in integer and numeric constants.

January 2023

  1. Can you use fzf for psql history?
  2. Waiting for PostgreSQL 16 – Invent random_normal() to provide normally-distributed random numbers.

December 2022

  1. Waiting for PostgreSQL 16 – Non-decimal integer literals
  2. Waiting for PostgreSQL 16 – Add grantable MAINTAIN privilege and pg_maintain role.
  3. Waiting for PostgreSQL 16 – Add test scaffolding for soft error reporting from input functions.

November 2022

  1. Picking random element, with weights
  2. Run a command every “x seconds”
  3. Waiting for PostgreSQL 16 – Add support for regexps on database and user entries in pg_hba.conf

September 2022

  1. Prettify SQL queries from command line
  2. What is LATERAL, what is it for, and how can one use it?
  3. SQL/JSON is postponed

August 2022

  1. New SQL pretty printer – based on parsing, and not regexps

July 2022

  1. Better scrolling of long explain plans on explain.depesz.com
  2. Understanding pg_stat_activity
  3. How to log selects from specific table?

April 2022

  1. Stop the war in Ukraine
  2. Waiting for PostgreSQL 15 – Documentation for SQL/JSON features
  3. Waiting for PostgreSQL 15 – JSON_TABLE
  4. DBA tips ‘n tricks – search in every field in a table
  5. Waiting for PostgreSQL 15 – SQL/JSON query functions
  6. Waiting for PostgreSQL 15 – IS JSON predicate

March 2022

  1. Waiting for PostgreSQL 15 – SQL/JSON constructors
  2. Waiting for PostgreSQL 15 – Add support for MERGE SQL command
  3. Waiting for PostgreSQL 15 – Add support for security invoker views.
  4. PGDayPL postponed…
  5. Is my autovacuum configured properly?
  6. New type of hints on explain.depesz.com
  7. How to index data with tsearch?

February 2022

  1. PGDayPL is coming :)
  2. explain.depesz.com – now with HINTS!
  3. How much disk space you can save by using INT4/INT instead of INT8/BIGINT?
  4. Waiting for PostgreSQL 15 – Allow archiving via loadable modules.
  5. Waiting for PostgreSQL 15 – Add UNIQUE null treatment option

January 2022

  1. Waiting for PostgreSQL 15 – Add HEADER support to COPY text format
  2. Waiting for PostgreSQL 15 – Introduce log_destination=jsonlog
  3. Configuration changes across Pg versions

November 2021

  1. Waiting for PostgreSQL 15 – Add assorted new regexp_xxx SQL functions.
  2. Does varchar(n) use less disk space than varchar() or text?
  3. Waiting for PostgreSQL 15 – Allow publishing the tables of schema.

October 2021

  1. Why is it hard to automatically suggest what index to create?

September 2021

  1. Using recursive queries to get distinct elements from table
  2. Waiting for PostgreSQL 15 – Revoke PUBLIC CREATE from public schema, now owned by pg_database_owner.

August 2021

  1. How to get advisory lock in shell?
  2. New changes on explain.depesz.com – fixed calculations of exclusive times

July 2021

  1. Display “settings” from plans on explain.depesz.com
  2. How to get list of elements from multiranges?
  3. Buffers I/O information on explain.depesz.com

June 2021

  1. A tale of making company-wide standard psqlrc
  2. Explaining the unexplainable – part 6: buffers
  3. Many changes on explain.depesz.com

May 2021

  1. Million explain plans…

April 2021

  1. Getting value from dynamic column in pl/PgSQL triggers?
  2. Changes on explain.depesz.com – extracted query from auto-explain plans

Every year

2026 252025 282024 272023 192022 342021 372020 382019 322018 272017 252016 282015 472014 462013 512012 522011 602010 742009 572008 1022007 3162006 553