<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Postgres Weekly</title>
    <description>A weekly email roundup of Postgres news and articles</description>
    <link>https://postgresweekly.com/</link>
    <item>
      <title>Postgres 19's built-in bloat cleanup</title>
      <link>https://postgresweekly.com/issues/672</link>
      <description>

  

    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​672 — November 4, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192394/rss" style=" color: #0088bb;"&gt;Web Version&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;Postgres Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr style="line-height: 1.0em;"&gt;&lt;td style="font-size: 15px; line-height: 1.0em;"&gt;
  &lt;a href="https://postgresweekly.com/link/192360/rss" style=" color: #0088bb; line-height: 1.0em;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/fuijuqlp9k2pt4psbneg.jpg" width="640" style="    line-height: 1.0em;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192360/rss" title="www.snowflake.com" style=" color: #0088bb; font-size: 1.1em; line-height: 1.4em;"&gt;Postgres 19's &lt;code&gt;REPACK&lt;/code&gt;: Built-In, Online Bloat Cleanup&lt;/a&gt;&lt;/span&gt; — Craig's favorite new Postgres feature is the one he thinks DBAs will care about most. &lt;code&gt;REPACK&lt;/code&gt; folds &lt;code&gt;VACUUM FULL&lt;/code&gt; and &lt;code&gt;CLUSTER&lt;/code&gt; into one command and adds a &lt;code&gt;CONCURRENTLY&lt;/code&gt; mode that keeps the table readable and writable, using logical decoding (a la &lt;a href="https://postgresweekly.com/link/192361/rss" style=" color: #0088bb;"&gt;&lt;code&gt;pg_squeeze&lt;/code&gt;&lt;/a&gt;). He digs into its benefits and how to use it here.&lt;/p&gt;
  &lt;p&gt;Craig Kerstiens (Snowflake) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;⭐ &lt;b&gt;Postgres 19 remains on track for November 19&lt;/b&gt;, with RC2 due on November 12. &lt;a href="https://postgresweekly.com/link/192362/rss" style=" color: #0088bb; font-weight: 600;"&gt;Jonathan Katz has posted the draft press release&lt;/a&gt; for review, and the &lt;a href="https://postgresweekly.com/link/192363/rss" style=" color: #0088bb; font-weight: 600;"&gt;draft release notes&lt;/a&gt; continue to expand.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://postgresweekly.com/link/192364/rss" style=" color: #0088bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/e3350811.png" width="160" height="40" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192364/rss" title="www.enterprisedb.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Sub-Second Personalization on One Lakehouse&lt;/a&gt;&lt;/span&gt; — Live demo: See how EDB Postgres AI delivers sub-second next-best-action on one copy of data in Apache Iceberg. Postgres, WarehousePG and ClickHouse share one catalog, with no pipelines between engines. &lt;a href="https://postgresweekly.com/link/192364/rss" style=" color: #0088bb;"&gt;Watch the demo&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;EDB &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192365/rss" title="boringsql.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Getting Rid of a 4 Terabyte Table Efficiently&lt;/a&gt;&lt;/span&gt; — How do you get rid of a 4 TB table on a primary with ten replicas with as little impact as possible? Radim compares the obvious &lt;code&gt;DROP TABLE&lt;/code&gt; approach against batch deletes and a copy-and-swap, with the measured pros and cons of each.&lt;/p&gt;
  &lt;p&gt;Radim Marek &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 In a similar vein, NexHealth has written up &lt;a href="https://postgresweekly.com/link/192366/rss" style=" color: #0088bb; font-weight: 600;"&gt;how they moved 4 TB &lt;em&gt;out&lt;/em&gt; of a live Postgres database&lt;/a&gt; into its own Aurora cluster with no downtime.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Want to ease into contributing to Postgres? Paul Jungwirth is running a &lt;a href="https://postgresweekly.com/link/192367/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;patch review workshop&lt;/a&gt; where small teams will get to review a patch, with committers like Robert Haas critiquing the reviews. You can &lt;a href="https://postgresweekly.com/link/192368/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;sign up here&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🏴󠁧󠁢󠁳󠁣󠁴󠁿 Jimmy Angelakos &lt;a href="https://postgresweekly.com/link/192369/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;recaps October's &lt;em&gt;Postgres Edinburgh&lt;/em&gt; meetup&lt;/a&gt;, where Elizabeth Christensen covered what's new in Postgres 18 and 19.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Supabase has opened a &lt;a href="https://postgresweekly.com/link/192370/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;public beta of OrioleDB&lt;/a&gt; and a &lt;a href="https://postgresweekly.com/link/192371/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;private alpha of Multigres&lt;/a&gt;. OrioleDB's alternative Postgres storage engine needs no &lt;code&gt;VACUUM&lt;/code&gt;, but it's not production-ready yet.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192372/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;CloudNativePG is now a CNCF 'incubating' project&lt;/a&gt;. Gabriele Bartolini tells the project's story from its 2019 start at 2ndQuadrant to ~247 million operator downloads today.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192373/rss" title="www.pgedge.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Burnt TOAST: Why DBAs Dread Large Text Columns&lt;/a&gt;&lt;/span&gt; — A tour of how Postgres stores oversized column values, with benchmarks showing why keeping the heap small can speed up scans and updates that leave those values untouched, and why fetching them can still be expensive.&lt;/p&gt;
  &lt;p&gt;Shaun Thomas (pgEdge) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 Sticking to the TOAST theme, Franck Pachot ponders: &lt;a href="https://postgresweekly.com/link/192374/rss" style=" color: #0088bb; font-weight: 600;"&gt;do TOAST's compression and out-of-line thresholds suit&lt;/a&gt; typical JSONB document sizes?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192375/rss" title="now-next.nl" style=" color: #0088bb; font-size: 1.05em;"&gt;&lt;code&gt;'server closed the connection unexpectedly'&lt;/code&gt; Explained and Measured&lt;/a&gt;&lt;/span&gt; — Chris reproduces connection failures across six clients on Postgres 13, 15, 17 and 18, showing why the same failure produces different diagnostics, and why a lost connection during a &lt;code&gt;COMMIT&lt;/code&gt; can leave the outcome uncertain.&lt;/p&gt;
  &lt;p&gt;Chris van Eijk &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/192376/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Logical Replication Beyond One Writer&lt;/a&gt; – A walkthrough of building multi-region replication, testing failover and handling schema changes, with a runnable Docker lab. &lt;cite&gt;Dimitri Fontaine&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📊 &lt;a href="https://postgresweekly.com/link/192377/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Benchmarking Vector Search in Six Database Engines&lt;/a&gt; – Postgres and pgvector go up against MongoDB, MariaDB, AliSQL and Valkey. &lt;cite&gt;Evgeniy Patlan (Percona)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/192378/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;How Replication Slots Can Fill Your Disk&lt;/a&gt; &lt;cite&gt;Anugya Sinha (Microsoft)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/192379/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;How Real is 'Autonomous Postgres'?&lt;/a&gt; &lt;cite&gt;Vibhor Kumar (EDB)&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
    &lt;p&gt;📰 Classifieds&lt;/p&gt;
  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📺 &lt;a href="https://postgresweekly.com/link/192380/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;New 4-hour freeCodeCamp course&lt;/a&gt;: Watch a 1.6-second Postgres query drop to 10 ms with TimescaleDB continuous aggregates.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;RELEASES AND CODE:&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr style="line-height: 1.0em;"&gt;&lt;td style="font-size: 15px; line-height: 1.0em;"&gt;
  &lt;a href="https://postgresweekly.com/link/192381/rss" style=" color: #0088bb; line-height: 1.0em;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/okrdnkb2yf4sxr0mofwq.jpg" width="640" style="    line-height: 1.0em;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192382/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pgModeler 2.0&lt;/a&gt; &lt;em&gt;(above)&lt;/em&gt; – Billed as &lt;em&gt;"the biggest release in the history of the project"&lt;/em&gt;, the database modelling tool gets a multi-scene canvas and Postgres 18 support, but moves import, diff and SQL execution to a paid 'Plus' edition.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192395/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;Melange&lt;/a&gt; – Compiles Zanzibar-style, relationship-based authorization from &lt;a href="https://postgresweekly.com/link/192396/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;OpenFGA&lt;/a&gt; models into PL/pgSQL functions, so a permission check is just a &lt;code&gt;SELECT check_permission(...)&lt;/code&gt; away, with no separate service or store.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🌐 &lt;a href="https://postgresweekly.com/link/192383/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;PostGIS 3.7.0&lt;/a&gt; – The geospatial extension (now targeting Postgres 19) adds coverage edges, Float16 rasters and faster &lt;code&gt;ST_DWithin&lt;/code&gt;. Postgres 12/13 support is dropped, and the geocoder and address standardizer move to separate repos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;a href="https://postgresweekly.com/link/192386/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;PostgreSQL Anonymizer 3.3&lt;/a&gt; – Dalibo's data-masking extension fixes 12 vulnerabilities and existing users are urged to upgrade.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;a href="https://postgresweekly.com/link/192387/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pgAdmin 4 v9.19&lt;/a&gt; – Fixes 15 CVEs. Server-mode users should upgrade, setting two new admin allowlists first.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192384/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;Postgres.js 4.0&lt;/a&gt; – Node.js driver rewritten with a scheduler to stop slow queries blocking fast ones, SCRAM channel binding and two security fixes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192385/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;TimescaleDB 2.31&lt;/a&gt; – Tiger Data's time-series extension gains a new integer compressor (&lt;em&gt;off by default&lt;/em&gt; for now, but expected to be on by default in 2.32) that can make databases ~10% smaller and typical queries ~50% faster.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192388/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pg_duckdb 1.2.0&lt;/a&gt; – The DuckDB-in-Postgres extension moves to &lt;a href="https://postgresweekly.com/link/192389/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;DuckDB 2.0&lt;/a&gt; and adds initial Postgres 19 support. It's &lt;em&gt;'not ready for production use'&lt;/em&gt; for now.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192390/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pg_lion 0.3&lt;/a&gt; – A bitmap-based inverted index type (inspired by &lt;a href="https://postgresweekly.com/link/192391/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;roaring bitmaps&lt;/a&gt;, hence the name!) for faster counts, facets and &lt;code&gt;GROUP BY&lt;/code&gt; on large tables.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192392/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;Reylo 0.7&lt;/a&gt; – Import plain &lt;code&gt;.sql&lt;/code&gt; files into TypeScript with types inferred from your database. From the creator of &lt;a href="https://postgresweekly.com/link/192393/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Zod&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
     
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://postgresweekly.com/open/672/rss" width="1" height="1" /&gt;</description>
      <pubDate>Wed, 4 Nov 2026 00:00:00 +0000</pubDate>
      <guid>https://postgresweekly.com/issues/672</guid>
    </item>
    <item>
      <title>Why a DBA said no to one column</title>
      <link>https://postgresweekly.com/issues/671</link>
      <description>

  

    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​671 — October 28, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192085/rss" style=" color: #0088bb;"&gt;Web Version&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;Postgres Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr style="line-height: 1.0em;"&gt;&lt;td style="font-size: 15px; line-height: 1.0em;"&gt;
  &lt;a href="https://postgresweekly.com/link/192052/rss" style=" color: #0088bb; line-height: 1.0em;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/fjmq5nbgoygs2qyhpggn.jpg" width="640" style="    line-height: 1.0em;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192052/rss" title="mydbanotebook.org" style=" color: #0088bb; font-size: 1.1em; line-height: 1.4em;"&gt;'Region': A Lesson in Data Integrity&lt;/a&gt;&lt;/span&gt; — One of Lætitia's coworkers added a free-text &lt;code&gt;region&lt;/code&gt; column and planned to validate it in app code, but Lætitia wouldn't approve it. Here she makes a case for keeping rules in the database with a look at domains, enums, &lt;code&gt;CHECK&lt;/code&gt; constraints and lookup tables, and how to add constraints on large tables without blocking traffic.&lt;/p&gt;
  &lt;p&gt;Lætitia Avrot &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://postgresweekly.com/link/192051/rss" style=" color: #0088bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/9dac2441.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192051/rss" title="www.tigerdata.com" style=" color: #0088bb; font-size: 1.05em;"&gt;CREATE INDEX on 100M Vectors in Under Two Hours&lt;/a&gt;&lt;/span&gt; — HNSW indexes on large pgvector tables use lots of memory and can take days to build. Meet pg_vectorsearch: an open-source alternative for existing vector columns. At 100M vectors: a 25 GB index and 6 ms queries at 95% recall. &lt;a href="https://postgresweekly.com/link/192051/rss" style=" color: #0088bb;"&gt;See the benchmarks&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tiger Data (creators of TimescaleDB) &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;📖&lt;/span&gt; &lt;a href="https://postgresweekly.com/link/192053/rss" title="postgrespro.com" style=" color: #0088bb; font-size: 1.05em;"&gt;PostgreSQL 18 Query Optimization: A Free 199-Page Book&lt;/a&gt;&lt;/span&gt; — Postgres Pro's query tuning course, reshaped into a compact book that's now in English. It covers how the planner works, access methods, join strategies, statistics, reading execution plans and tuning approaches. &lt;a href="https://postgresweekly.com/link/192054/rss" style=" color: #0088bb;"&gt;Here's the PDF&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Pavel Tolmachev (PostgresPro) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Microsoft &lt;a href="https://postgresweekly.com/link/192055/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;has started pitching SQL Server&lt;/a&gt; to Postgres developers as an &lt;em&gt;'upgrade'&lt;/em&gt;, touting its 32,767-connection limit. SQL Server expert &lt;a href="https://postgresweekly.com/link/192056/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Brent Ozar isn't buying it&lt;/a&gt;, and Microsoft's author pops up in the comments to argue back.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇺🇸 &lt;a href="https://postgresweekly.com/link/192057/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;PgDay Boston 2027&lt;/a&gt; takes place on April 10, 2027 at Tufts University. &lt;a href="https://postgresweekly.com/link/192058/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Registration is open&lt;/a&gt;, as is the &lt;a href="https://postgresweekly.com/link/192059/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;CFP&lt;/a&gt; (until January 15).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇺🇸 &lt;a href="https://postgresweekly.com/link/192060/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Postgres Day SF&lt;/a&gt; is a free meetup (registration needs approval) at PlanetScale's San Francisco office on November 4, celebrating 30 years of Postgres with Bruce Momjian and Fabrizio Mello.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📅 &lt;a href="https://postgresweekly.com/link/192061/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;POSETTE 2027&lt;/a&gt;, Microsoft's annual virtual Postgres event, returns on March 30-31, 2027. No CFP yet.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192062/rss" title="planetscale.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Why I Don't Trust &lt;code&gt;ON DELETE CASCADE&lt;/code&gt;&lt;/a&gt;&lt;/span&gt; — One big cascading &lt;code&gt;DELETE&lt;/code&gt; plus a routine migration can freeze writes to a table. Tom explains the lock queue behind it, some replication traps, and why he prefers soft deletes.&lt;/p&gt;
  &lt;p&gt;Tom Pang (PlanetScale) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192063/rss" title="www.photoroom.com" style=" color: #0088bb; font-size: 1.05em;"&gt;How a Read Replica Almost Took Down Its Primary Database&lt;/a&gt;&lt;/span&gt; — Google Cloud grows disks automatically so Photoroom wasn't worried about space. Then a backfill left a BI replica so far behind that the primary held 31.7TB of WAL for it. The disk grew close to a hard limit, and shrinking it meant downtime.&lt;/p&gt;
  &lt;p&gt;Marek Zaremba-Pike (Photoroom) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192064/rss" title="www.prisma.io" style=" color: #0088bb; font-size: 1.05em;"&gt;Moving 74GB Off RDS with a Week-Long Rollback Window&lt;/a&gt;&lt;/span&gt; — Prisma moved its console's database off RDS with logical replication and no write pause, then ran replication in &lt;em&gt;reverse&lt;/em&gt; so it could fall back to RDS for a week.&lt;/p&gt;
  &lt;p&gt;Siket and Datta (Prisma) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/192065/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Your App Doesn't Need Postgres Superuser&lt;/a&gt; – Superuser can run commands on the server, so here's what to grant apps and agents instead. &lt;cite&gt;Umair Shahid (Stormatics)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/192066/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Postgres 19 is Late, and It's AI's Fault&lt;/a&gt; &lt;cite&gt;Robert Haas&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/192067/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Tuning Postgres for Analytics&lt;/a&gt; – Slides and transcript from PGConf.EU on running reports against your app's database without slowing it. &lt;cite&gt;Karen Jex&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;🎙️ Karen also joined Claire Giordano on the &lt;em&gt;Talking Postgres&lt;/em&gt; podcast to talk about &lt;a href="https://postgresweekly.com/link/192068/rss" style=" color: #0088bb; font-weight: 600;"&gt;her path from Oracle DBA to Postgres contributor&lt;/a&gt;.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
    &lt;p&gt;📰 Classifieds&lt;/p&gt;
  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;⚡ &lt;a href="https://postgresweekly.com/link/192069/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Rebase&lt;/a&gt; turns your Postgres into an API and an admin panel your team can use. Our own CRM: 23 tables, zero hand-written admin screens.&lt;/p&gt;
 
&lt;p&gt;⏱️ One 5-row lookup table turned a 0.3 ms Postgres query into 467 ms. &lt;a href="https://postgresweekly.com/link/192070/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Find yours before prod does&lt;/a&gt;. Now in preview.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;RELEASES AND CODE:&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr style="line-height: 1.0em;"&gt;&lt;td style="font-size: 15px; line-height: 1.0em;"&gt;
  &lt;a href="https://postgresweekly.com/link/192071/rss" style=" color: #0088bb; line-height: 1.0em;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ey5jp6aqzwln1cm4yc4d.jpg" width="640" style="    line-height: 1.0em;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192071/rss" title="www.pgedge.com" style=" color: #0088bb; font-size: 1.05em;"&gt;pgVolvra: Flashback-Style 'Undo' for Bad &lt;code&gt;UPDATE&lt;/code&gt;s and &lt;code&gt;DELETE&lt;/code&gt;s&lt;/a&gt;&lt;/span&gt; — Trigger-based row history that lets you preview and reverse a bad statement or migration by transaction ID. Plain SQL with no superuser needed, so it works on managed Postgres too. &lt;a href="https://postgresweekly.com/link/192072/rss" style=" color: #0088bb;"&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Muhammad Aqeel (pgEdge) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192073/rss" title="pgrust.com" style=" color: #0088bb; font-size: 1.05em;"&gt;pgrust 0.4 Beta: The Rust Rewrite of Postgres Opens Up&lt;/a&gt;&lt;/span&gt; — The experimental Rust reimplementation of Postgres adds a new JIT engine, transactional columnar tables and automatic memory sizing (no more &lt;code&gt;work_mem&lt;/code&gt; tuning?).&lt;/p&gt;
  &lt;p&gt;Michael Malis &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 ClickHouse &lt;a href="https://postgresweekly.com/link/192074/rss" style=" color: #0088bb; font-weight: 600;"&gt;pulled pgrust from ClickBench&lt;/a&gt; in September over per-query code and caching. With v0.4's source public, it's &lt;a href="https://postgresweekly.com/link/192075/rss" style=" color: #0088bb; font-weight: 600;"&gt;back in&lt;/a&gt;, and central to a &lt;a href="https://postgresweekly.com/link/192076/rss" style=" color: #0088bb; font-weight: 600;"&gt;benchmark-overfitting debate&lt;/a&gt;.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/192077/rss" title="www.pinecone.io" style=" color: #0088bb; font-size: 1.05em;"&gt;pg_pinecone: Pinecone's Vector Index for pgvector Columns&lt;/a&gt;&lt;/span&gt; — A new extension that indexes existing pgvector columns using IVF and RaBitQ quantization, applying filters during the search. Its native engine runs locally on Postgres 17 and 18, and Pinecone reports a 136MB index vs 2GB for HNSW on 1M vectors. &lt;a href="https://postgresweekly.com/link/192078/rss" style=" color: #0088bb;"&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Daddala and Mahanna (Pinecone) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr style="line-height: 1.0em;"&gt;&lt;td style="font-size: 15px; line-height: 1.0em;"&gt;
  &lt;a href="https://postgresweekly.com/link/192079/rss" style=" color: #0088bb; line-height: 1.0em;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/yerrrdxckhvcxirfirjy.jpg" width="640" style="    line-height: 1.0em;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192079/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pg_hdr_histogram 1.0&lt;/a&gt; &lt;em&gt;(above)&lt;/em&gt; – Store value distributions (e.g. latencies) as compact HDR histograms, then query p99-style percentiles and merge them losslessly across time windows or servers, say.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192080/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;mcdview&lt;/a&gt; – Turn a Postgres schema dump (or a Prisma, pgModeler or Rails schema) into a searchable, shareable interactive ER diagram. You can &lt;a href="https://postgresweekly.com/link/192081/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;try it online&lt;/a&gt; or see &lt;a href="https://postgresweekly.com/link/192082/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;an example of its output here&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192083/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;Citus 14.3&lt;/a&gt; – The distributed Postgres extension adds sorted-merge execution for multi-shard &lt;code&gt;ORDER BY&lt;/code&gt; queries and per-shard pruning of &lt;code&gt;OR&lt;/code&gt; clauses.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/192084/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;SPQR 3.2&lt;/a&gt; – Yandex's Postgres sharding router adds &lt;code&gt;spqrmigrate&lt;/code&gt;, a schema migration tool.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
     
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://postgresweekly.com/open/671/rss" width="1" height="1" /&gt;</description>
      <pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://postgresweekly.com/issues/671</guid>
    </item>
    <item>
      <title>Postgres 19 RC1 and what to test now</title>
      <link>https://postgresweekly.com/issues/670</link>
      <description>

  

    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​670 — October 21, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://postgresweekly.com/link/191776/rss" style=" color: #0088bb;"&gt;Web Version&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;Postgres Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr style="line-height: 1.0em;"&gt;&lt;td style="font-size: 15px; line-height: 1.0em;"&gt;
  &lt;a href="https://postgresweekly.com/link/191738/rss" style=" color: #0088bb; line-height: 1.0em;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/g1qnzow76mrbuxqpi5rj.jpg" width="640" style="    line-height: 1.0em;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191738/rss" title="www.enterprisedb.com" style=" color: #0088bb; font-size: 1.1em; line-height: 1.4em;"&gt;Postgres 19: What Changed and What to Test Now&lt;/a&gt;&lt;/span&gt; — With RC1 out and GA due in under a month, Tom Kincaid walks through what survived the reverts and what to try before upgrading, including &lt;code&gt;REPACK (CONCURRENTLY)&lt;/code&gt;, &lt;code&gt;pg_plan_advice&lt;/code&gt;, parallel autovacuum, and logical replication sequence synchronization, each with a 'what to test' checklist.&lt;/p&gt;
  &lt;p&gt;Tom Kincaid (EDB) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;⭐ &lt;a href="https://postgresweekly.com/link/191739/rss" style=" color: #0088bb; font-weight: 600;"&gt;Postgres 19 RC1 was released last week&lt;/a&gt;, with an RC2 due November 12 and the final release expected on November 19.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://postgresweekly.com/link/191737/rss" style=" color: #0088bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/6d11cce3.png" width="180" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191737/rss" title="serpapi.com" style=" color: #0088bb; font-size: 1.05em;"&gt;100+ Search Engines. One Simple API&lt;/a&gt;&lt;/span&gt; — Add live web search to your backend without managing proxies or parsers. SerpApi delivers structured results from Google and other search engines as clean JSON.&lt;/p&gt;
  &lt;p&gt;SerpApi &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191741/rss" title="ardentperf.com" style=" color: #0088bb; font-size: 1.05em;"&gt;&lt;code&gt;recovery_prefetch&lt;/code&gt; Considered Harmful and Causing Outages&lt;/a&gt;&lt;/span&gt; — Jeremy shows how &lt;code&gt;recovery_prefetch&lt;/code&gt;, enabled by default since Postgres 15, can overwhelm standby storage after a write burst, causing hours of lag. With synchronous replication, a dropped connection then blocked primary writes for 35 minutes in &lt;a href="https://postgresweekly.com/link/191742/rss" style=" color: #0088bb;"&gt;his reproduction.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Jeremy Schneider &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;🩹 &lt;a href="https://postgresweekly.com/link/191743/rss" style=" color: #0088bb; font-weight: 600;"&gt;A patch to avoid redundant prefetches after full-page images&lt;/a&gt; is under review, which tackles part of the problem.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🇺🇸 &lt;a href="https://postgresweekly.com/link/191744/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Postgres Conference 2027&lt;/a&gt; takes place April 21–23, 2027 in San Jose, California. If you want to speak, its &lt;a href="https://postgresweekly.com/link/191745/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;CFP is open&lt;/a&gt; until January 31.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/191746/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Who owns an abandoned extension?&lt;/a&gt; PGXN's David Wheeler asks &lt;code&gt;pgsql-hackers&lt;/code&gt; what the policy should be, after receiving takeover requests and privilege escalation reports for unmaintained extensions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇧🇪 &lt;a href="https://postgresweekly.com/link/191747/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;FOSDEM PGDay 2027&lt;/a&gt; expands to two days, January 28–29, in Brussels. &lt;a href="https://postgresweekly.com/link/191748/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;The CFP is open&lt;/a&gt; until December 1.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇹🇭 &lt;a href="https://postgresweekly.com/link/191749/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;FOSSASIA PGDay 2027&lt;/a&gt; takes place on March 9, 2027 in Bangkok. Their &lt;a href="https://postgresweekly.com/link/191750/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;CFP is open&lt;/a&gt; until November 30.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/191751/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Neon Realtime&lt;/a&gt; is now in public beta. You can subscribe to any deterministic SQL query and the result stays live as the data changes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/191752/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;84% of surveyed Ruby on Rails developers run Postgres in production&lt;/a&gt; as per the results of the 2026 Rails Community Survey.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191753/rss" title="www.depesz.com" style=" color: #0088bb; font-size: 1.05em;"&gt;How &lt;code&gt;hstore&lt;/code&gt; Can Beat &lt;code&gt;jsonb&lt;/code&gt; for Audit Logs&lt;/a&gt;&lt;/span&gt; — depesz saw &lt;a href="https://postgresweekly.com/link/191754/rss" style=" color: #0088bb;"&gt;a post&lt;/a&gt; claiming that logging only changed columns from an audit trigger shrank the log 5x but slowed updates. But his own test, using &lt;code&gt;hstore&lt;/code&gt; instead of &lt;code&gt;jsonb&lt;/code&gt;, made diff logging the fastest variant.&lt;/p&gt;
  &lt;p&gt;Hubert 'depesz' Lubaczewski &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191756/rss" title="www.pgedge.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Why is Postgres's &lt;code&gt;numeric&lt;/code&gt; Type So Slow?&lt;/a&gt;&lt;/span&gt; — A deep dive into &lt;code&gt;numeric&lt;/code&gt;'s internals explaining why it's slow compared to double precision or DuckDB's integer-backed &lt;code&gt;DECIMAL&lt;/code&gt;, and why &lt;em&gt;"just use int128"&lt;/em&gt; doesn't fix it.&lt;/p&gt;
  &lt;p&gt;Andrei Lepikhov (pgEdge) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191757/rss" title="stackgres.io" style=" color: #0088bb; font-size: 1.05em;"&gt;Citus Hits 10M QPS on Half &lt;em&gt;Neki&lt;/em&gt;'s Data Nodes&lt;/a&gt;&lt;/span&gt; — A month after PlanetScale's &lt;a href="https://postgresweekly.com/link/191777/rss" style=" color: #0088bb;"&gt;118M QPS Neki post&lt;/a&gt;, Álvaro ran the same shape of workload on Citus with StackGres's new query routers and hit 10M QPS on 24 workers rather than Neki's 50 shards.&lt;/p&gt;
  &lt;p&gt;Álvaro Hernández (StackGres) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;🎧 &lt;a href="https://postgresweekly.com/link/191759/rss" style=" color: #0088bb; font-weight: 600;"&gt;Postgres FM had Álvaro on the same day&lt;/a&gt; for an hour on Citus, StackGres and the thinking behind the benchmark.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/191760/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Why Materialize Dropped &lt;code&gt;SERIALIZABLE&lt;/code&gt; for 3x Write Throughput&lt;/a&gt; – Hundreds of thousands of predicate locks sank their Postgres-backed metadata store, so they rebuilt it on &lt;code&gt;READ COMMITTED&lt;/code&gt; and &lt;em&gt;proved&lt;/em&gt; it correct in Lean. &lt;cite&gt;Petros Angelatos&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/191762/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;From Alert to Online Repack: A Playbook for Postgres Table Bloat&lt;/a&gt; – Build a bloat 'watchdog' with &lt;code&gt;pg_cron&lt;/code&gt; and &lt;code&gt;pgstattuple&lt;/code&gt;, then use &lt;code&gt;pg_repack&lt;/code&gt; to take a 13GB table down to 3.4GB without taking it offline. &lt;cite&gt;Haider Z (Microsoft)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/191761/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Reducing Storage Initialization Impact in Amazon RDS After Snapshot Restore&lt;/a&gt; – Why queries on a freshly restored RDS Postgres can run 10–15x slower at first, and how to prewarm it. &lt;cite&gt;Modappady, Pattabiraman and Thakur (AWS)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/191763/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;UUIDs Stored as &lt;code&gt;text&lt;/code&gt;: What It Costs in Postgres 18&lt;/a&gt; &lt;cite&gt;Hollis Varden&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
    &lt;p&gt;📰 Classifieds&lt;/p&gt;
  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;Today: Let a coding agent fork, break, and fix a real Postgres database. &lt;a href="https://postgresweekly.com/link/191764/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Free live workshop&lt;/a&gt;, recording included.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;RELEASES AND CODE:&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr style="line-height: 1.0em;"&gt;&lt;td style="font-size: 15px; line-height: 1.0em;"&gt;
  &lt;a href="https://postgresweekly.com/link/191765/rss" style=" color: #0088bb; line-height: 1.0em;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/sv56ilc9yxghvv6sdnem.jpg" width="640" style="    line-height: 1.0em;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191765/rss" title="documentdb.io" style=" color: #0088bb; font-size: 1.05em;"&gt;DocumentDB 1.0: A MongoDB-Compatible Document Database on Postgres&lt;/a&gt;&lt;/span&gt; — First open sourced by Microsoft last year but now a Linux Foundation project, DocumentDB is a set of extensions (plus a gateway) that speak the MongoDB wire protocol and store BSON natively. This first stable release comes with packages for Postgres 17 and 18.&lt;/p&gt;
  &lt;p&gt;DocumentDB &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191766/rss" title="pgx.dev" style=" color: #0088bb; font-size: 1.05em;"&gt;PGX: Run Thousands of Throwaway Databases in One Process&lt;/a&gt;&lt;/span&gt; — From the team behind &lt;a href="https://postgresweekly.com/link/191767/rss" style=" color: #0088bb;"&gt;pgbot&lt;/a&gt;, and built upon a Rust reimplementation of Postgres, PGX hosts large numbers of isolated databases in one process, each cloned from a template in milliseconds, for agent sandboxes and per-PR tests. Beta, AGPL-licensed, with &lt;code&gt;fsync&lt;/code&gt; off, so for dev use only. (&lt;a href="https://postgresweekly.com/link/191768/rss" style=" color: #0088bb;"&gt;GitHub repo&lt;/a&gt;.)&lt;/p&gt;
  &lt;p&gt;PGRun &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191769/rss" title="pgbackrest.org" style=" color: #0088bb; font-size: 1.05em;"&gt;pgBackRest 2.60: Restores Now Stop on Invalid Page Checksums&lt;/a&gt;&lt;/span&gt; — The popular backup and restore tool now stops a restore with an error if any restored file has an invalid page checksum. Worth knowing before your next restore! (&lt;code&gt;checksum-page-error=n&lt;/code&gt; can change it to a warning only.)&lt;/p&gt;
  &lt;p&gt;pgBackRest Community &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/191770/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pg_hint_plan 1.9.0&lt;/a&gt; – The long-standing query hinting extension, now built (only) for Postgres 19 using its new path generation strategies.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/191771/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;PostgREST 16.5&lt;/a&gt; – Popular REST API server layer for Postgres. Adds a client-side mitigation for a recent Postgres CVE.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;⚠️ &lt;a href="https://postgresweekly.com/link/191772/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pgmq 1.13.1&lt;/a&gt; – The Postgres-native message queue. Fixes two privilege issues, so upgrade if you use it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/191774/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pg_ivm 1.17&lt;/a&gt; – Incrementally maintained materialized views, which can now survive &lt;code&gt;pg_upgrade&lt;/code&gt; if you use &lt;code&gt;pg_ivm_dump_metadata --pg-upgrade&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🌐 &lt;a href="https://postgresweekly.com/link/191775/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;PostGIS 3.7.0 RC3&lt;/a&gt; – The geospatial data extension targets Postgres 19 RC1 – I'd expect a final 3.7 around the same time as Postgres 19 itself.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
     
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://postgresweekly.com/open/670/rss" width="1" height="1" /&gt;</description>
      <pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://postgresweekly.com/issues/670</guid>
    </item>
    <item>
      <title>Postgres 19 now due November 19</title>
      <link>https://postgresweekly.com/issues/669</link>
      <description>

  

    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​669 — October 14, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://postgresweekly.com/link/191533/rss" style=" color: #0088bb;"&gt;Web Version&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;Postgres Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr style="line-height: 1.0em;"&gt;&lt;td style="font-size: 15px; line-height: 1.0em;"&gt;
  &lt;a href="https://postgresweekly.com/link/191510/rss" style=" color: #0088bb; line-height: 1.0em;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/gn9k4gm9cggzc04p2iws.jpg" width="640" style="    line-height: 1.0em;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191510/rss" title="www.tigerdata.com" style=" color: #0088bb; font-size: 1.1em; line-height: 1.4em;"&gt;pg_vectorsearch: A Partition-Based Alternative to HNSW&lt;/a&gt;&lt;/span&gt; — A vector search extension that uses PRISM, a vector index that scans compressed k-means partitions rather than walking a graph like HNSW, and works on existing &lt;code&gt;pgvector&lt;/code&gt; columns. It's alpha and requires Postgres 18+, while &lt;a href="https://postgresweekly.com/link/191511/rss" style=" color: #0088bb;"&gt;pgvectorscale&lt;/a&gt; moves to maintenance mode.&lt;/p&gt;
  &lt;p&gt;Erik Nordström et al. (Tiger Data) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://postgresweekly.com/link/191509/rss" style=" color: #0088bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/c105857a.png" width="151" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191509/rss" title="fandf.co" style=" color: #0088bb; font-size: 1.05em;"&gt;Agent Memory: Raw Retrieval Vs. Extracted Facts, Tested&lt;/a&gt;&lt;/span&gt; — Redis reran agent memory systems on LongMemEval. Published scores missed reproduced results by up to 28 points, and pairing raw conversation retrieval with extracted facts beat either approach alone. See the data, costs and methodology.&lt;/p&gt;
  &lt;p&gt;Redis &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191512/rss" title="incident.io" style=" color: #0088bb; font-size: 1.05em;"&gt;How Savepoints Throttled Our Postgres Queue&lt;/a&gt;&lt;/span&gt; — A technical look, complete with some rather nifty visualizations, into how adding more workers to a Postgres-based queue made it slower because of per-job &lt;code&gt;SAVEPOINT&lt;/code&gt;s (and how claiming jobs with a lease fixed it).&lt;/p&gt;
  &lt;p&gt;Rory Malcolm (incident.io) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;⭐ &lt;a href="https://postgresweekly.com/link/191513/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Postgres 19's release has been pushed back&lt;/a&gt; to November 19, with an extra RC2 on November 12 to include many more recent fixes. The first release candidate still lands tomorrow (October 15).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;⚠️ &lt;a href="https://postgresweekly.com/link/191514/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;PgBouncer 1.26.1&lt;/a&gt; fixes three CVEs, the worst letting a client who knows one user's password log in as a different user (even a superuser) when SCRAM auth is in use.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191515/rss" title="peter.eisentraut.org" style=" color: #0088bb; font-size: 1.05em;"&gt;'The Reverts Will Continue Until Morale Improves'&lt;/a&gt;&lt;/span&gt; — A Postgres committer, whose own work was among the casualties, shares his take on why so many Postgres 19 features were reverted during beta.&lt;/p&gt;
  &lt;p&gt;Peter Eisentraut &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;📊 Meanwhile, Kaarel Moppel &lt;a href="https://postgresweekly.com/link/191516/rss" style=" color: #0088bb; font-weight: 600;"&gt;ran 800 hours of benchmarks on the Postgres 19 betas&lt;/a&gt; and found them a few percent faster than v18 on OLTP workloads.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191517/rss" title="evilmartians.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Don't Bet on &lt;code&gt;SELECT&lt;/code&gt; Order: Shuffle Your Rows and See What Folds&lt;/a&gt;&lt;/span&gt; — If your app or tests implicitly rely on rows returning in insertion order, that can cause many an annoying bug (I've been bitten myself!). The &lt;a href="https://postgresweekly.com/link/191518/rss" style=" color: #0088bb;"&gt;pg_disorder&lt;/a&gt; extension shuffles &lt;code&gt;SELECT&lt;/code&gt; results lacking an &lt;code&gt;ORDER BY&lt;/code&gt; to catch such bugs in testing.&lt;/p&gt;
  &lt;p&gt;Yaroslav Kurbatov (Evil Martians) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191519/rss" title="explainmeasured.com" style=" color: #0088bb; font-size: 1.05em;"&gt;What Deleting Rows Does to a Table&lt;/a&gt;&lt;/span&gt; — A tidy explainer and demo covering a common misunderstanding. Deleting half a table's rows, then running &lt;code&gt;VACUUM&lt;/code&gt;, left it at 137 MB on disk, with only &lt;code&gt;VACUUM FULL&lt;/code&gt; reclaiming it.&lt;/p&gt;
  &lt;p&gt;Hollis Varden &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/191520/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Why Setting &lt;code&gt;archive_command&lt;/code&gt; to &lt;code&gt;/bin/true&lt;/code&gt; Can Lose Data&lt;/a&gt; – The 'fix' for a full WAL disk that breaks recovery without warning. &lt;cite&gt;Shaun Thomas&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/191521/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;PgBouncer Pooling Modes in Practice&lt;/a&gt; – What transaction pooling does to your advisory locks. &lt;cite&gt;Oskar Dudycz&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/191522/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;PgBouncer vs. Amazon RDS Proxy: How the Two Poolers Differ&lt;/a&gt;  &lt;cite&gt;Wood and Chiba (AWS)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/191523/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;How &lt;code&gt;TABLESAMPLE&lt;/code&gt; Picks Rows&lt;/a&gt; &lt;cite&gt;Radim Marek&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
    &lt;p&gt;📰 Classifieds&lt;/p&gt;
  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;RDST's always-on agent watches every PG query, automatically sends you explained fixes, and verifies they worked once applied. &lt;a href="https://postgresweekly.com/link/191524/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Put an agent to work on your Postgres database. It's free&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;⚡ &lt;a href="https://postgresweekly.com/link/191525/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Rebase&lt;/a&gt;: An open-source backend for Postgres. REST, a typed SDK, auth, realtime, storage, and an admin panel you don't have to build.&lt;/p&gt;
 
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/191526/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Try ClickHouse Managed Postgres&lt;/a&gt;: Up to 10x faster for I/O-heavy workloads on local NVMe, with native ClickHouse integration.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;RELEASES AND CODE:&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr style="line-height: 1.0em;"&gt;&lt;td style="font-size: 15px; line-height: 1.0em;"&gt;
  &lt;a href="https://postgresweekly.com/link/191527/rss" style=" color: #0088bb; line-height: 1.0em;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/h6i6uifi9p9kdurhphne.jpg" width="640" style="    line-height: 1.0em;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191527/rss" title="supabase.com" style=" color: #0088bb; font-size: 1.05em;"&gt;pg-delta: Diff Postgres Schemas Into Ordered Migrations&lt;/a&gt;&lt;/span&gt; — Supabase's new open source schema diff engine. Point it at two Postgres 14–18 databases and get an ordered migration covering RLS policies, grants and domains. It replaces the deprecated &lt;code&gt;migra&lt;/code&gt;, but is still &lt;em&gt;alpha&lt;/em&gt;.&lt;/p&gt;
  &lt;p&gt;Valleteau and Xie (Supabase) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191528/rss" title="github.com" style=" color: #0088bb; font-size: 1.05em;"&gt;asyncpg 0.32.0: Fast Postgres Client Library for Python/asyncio&lt;/a&gt;&lt;/span&gt; — The long-standing Python client library for use with the &lt;code&gt;asyncio&lt;/code&gt; framework now supports Postgres 19, as well as the newly released Python 3.15.&lt;/p&gt;
  &lt;p&gt;MagicStack &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://postgresweekly.com/link/191529/rss" title="github.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Orafce: Oracle Compatibility Functions for Postgres&lt;/a&gt;&lt;/span&gt; — Implements some of the functions from Oracle that might be useful for users migrating to Postgres. We haven’t linked to this in a few years but it continues to get frequent releases.&lt;/p&gt;
  &lt;p&gt;Orafce Project &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/191530/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;wal2json 2.7&lt;/a&gt; – A logical decoding plugin that emits row changes as JSON, used by many change data capture setups. This first release in over two years adds Postgres 18 and 19 support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/191532/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;PGQueuer 1.6&lt;/a&gt; – A Python job queue library built on Postgres.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/191531/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;Squawk 2.68&lt;/a&gt; – A linter for Postgres schema migrations.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
     
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://postgresweekly.com/open/669/rss" width="1" height="1" /&gt;</description>
      <pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://postgresweekly.com/issues/669</guid>
    </item>
  </channel>
</rss>
