<?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 turns 30 (with cake)</title>
      <link>https://postgresweekly.com/issues/650</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;#​650 — May 27, 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/185737/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/185714/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/f47ypjpnxyepnyzpd6sy.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/185714/rss" title="www.highgo.ca" style=" color: #0088bb; font-size: 1.1em; line-height: 1.4em;"&gt;PGConf.dev 2026: Why It Remains My Favorite Postgres Conference&lt;/a&gt;&lt;/span&gt; — A fantastic trip report from last week’s &lt;a href="https://postgresweekly.com/link/185715/rss" style=" color: #0088bb;"&gt;PGConf.dev&lt;/a&gt; event in Vancouver. Along with many pictures of the fun, Cary has detailed summaries of the talks he attended, topics raised at the unconference sessions, and even what happened at a 30th birthday for Postgres, complete with cake!&lt;/p&gt;
  &lt;p&gt;Cary Huang (High Go) &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/185716/rss" style=" color: #0088bb; font-weight: 600;"&gt;Jeremy Schneider&lt;/a&gt; and &lt;a href="https://postgresweekly.com/link/185717/rss" style=" color: #0088bb; font-weight: 600;"&gt;Ashutosh Bapat&lt;/a&gt; have detailed trip reports too. &lt;em&gt;“I’m very glad that I decided to go,”&lt;/em&gt; says Jeremy.&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/185713/rss" style=" color: #0088bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/950bf736.png" width="160" height="53" 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/185713/rss" title="memory.build" style=" color: #0088bb; font-size: 1.05em;"&gt;Your Agent Needs Better Context, Not a Bigger Prompt&lt;/a&gt;&lt;/span&gt; — Memory Engine stores engineering facts, decisions, and instructions in PostgreSQL so agents pull what's relevant before each task. No more loading the whole codebase. Semantic, keyword, temporal search. Inspectable, MCP-native. &lt;a href="https://postgresweekly.com/link/185713/rss" style=" color: #0088bb;"&gt;Free to start&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Memory Engine &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/185718/rss" title="event-driven.io" style=" color: #0088bb; font-size: 1.05em;"&gt;How Soon is &lt;code&gt;now()&lt;/code&gt;?&lt;/a&gt;&lt;/span&gt; — Did you know &lt;code&gt;now()&lt;/code&gt; &lt;em&gt;isn’t&lt;/em&gt; the 'current time' but when the transaction started? When that distinction matters, as it did for Oskar when a retry loop kept seeing the same frozen timestamp and never made progress, reach for &lt;code&gt;clock_timestamp()&lt;/code&gt; instead.&lt;/p&gt;
  &lt;p&gt;Oskar Dudycz &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;code&gt;now()&lt;/code&gt; is equivalent to &lt;code&gt;transaction_timestamp()&lt;/code&gt;. More on that &lt;a href="https://postgresweekly.com/link/185719/rss" style=" color: #0088bb; font-weight: 600;"&gt;in the docs.&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/185720/rss" title="dev.to" style=" color: #0088bb; font-size: 1.05em;"&gt;5 Postgres Locking Behaviors That Trip People Up&lt;/a&gt;&lt;/span&gt; — Postgres’s lock manager is correct by design, but that correctness can still surprise you. A Postgres engineer walks through five counterintuitive locking behaviors that have caused real production outages, and how to avoid them.&lt;/p&gt;
  &lt;p&gt;Shinya Kato &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/185721/rss" title="richyen.com" style=" color: #0088bb; font-size: 1.05em;"&gt;XID Wraparound's Equally-Evil Twin&lt;/a&gt;&lt;/span&gt; — Monitoring transaction ID wraparound is a Postgres admin’s bread and butter, but &lt;em&gt;MultiXact IDs&lt;/em&gt;, as consumed by concurrent row locks and foreign key checks, can fly completely under the radar. Richard explains how MXIDs accumulate, why they need freezing too, and shares queries to monitor them.&lt;/p&gt;
  &lt;p&gt;Richard Yen &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;💡 For a deeper dive into MultiXact internals and tuning, AWS has &lt;a href="https://postgresweekly.com/link/185722/rss" style=" color: #0088bb; font-weight: 600;"&gt;an in-depth guide.&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;a href="https://postgresweekly.com/link/185723/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;TOAST: Where Postgres Hides Big Values&lt;/a&gt; – Even more Postgres bread and butter. But crispier. &lt;cite&gt;Radim Marek&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/185724/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;How I Manage Persistent Multiplayer State Without Chaos&lt;/a&gt; – Keeping a multiplayer game consistent with &lt;em&gt;“PostgreSQL holding the truth and Redis doing the fast work.”&lt;/em&gt; &lt;cite&gt;Julien Singler&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/185725/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;How to Profile a pgrx-Based Postgres Extension&lt;/a&gt; – &lt;a href="https://postgresweekly.com/link/185726/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;pgrx&lt;/a&gt; is a framework for building Postgres extensions in Rust. &lt;cite&gt;Raynor Elgie&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;🐘 Not enough time to watch 44 Postgres talks? Use the &lt;a href="https://postgresweekly.com/link/185728/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Ultimate Guide to POSETTE: An Event for Postgres&lt;/a&gt; &amp;amp; pick your favorites. &lt;em&gt;Microsoft | AMD.&lt;/em&gt;&lt;/p&gt;
 
&lt;p&gt;🚀 &lt;a href="https://postgresweekly.com/link/185729/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Join us live&lt;/a&gt;: pgEdge AI DBA Workbench walkthrough with Postgres Core Team Member Dave Page. &lt;a href="https://postgresweekly.com/link/185729/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Register now&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;🔎 &lt;a href="https://postgresweekly.com/link/185730/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Introducing pg_search&lt;/a&gt;, a Postgres extension for Elasticsearch-quality full-text, vector and hybrid search in Postgres.&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/185731/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/nulzao0zyadpzdb8afpe.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/185731/rss" title="docs.evokoa.com" style=" color: #0088bb; font-size: 1.05em;"&gt;pgGraph: Graph Database Capabilities for Normal Postgres Tables&lt;/a&gt;&lt;/span&gt; — An ‘early alpha’ extension that adds a graph querying layer to ordinary relational tables without a separate database or new query language (no Cypher to learn). It’s early days but has some interesting ideas. &lt;a href="https://postgresweekly.com/link/185732/rss" style=" color: #0088bb;"&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Evokoa &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/185733/rss" title="github.com" style=" color: #0088bb; font-size: 1.05em;"&gt;plpgsql_check 2.9: A PL/pgSQL Code Checker&lt;/a&gt;&lt;/span&gt; — A specialized tool to find errors lurking in PL/pgSQL functions.&lt;/p&gt;
  &lt;p&gt;Pavel Stehule &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/185734/rss" title="github.com" style=" color: #0088bb; font-size: 1.05em;"&gt;pg_parse: A Postgres-Compatible SQL Parser for Rust&lt;/a&gt;&lt;/span&gt; — Leans on &lt;code&gt;libpg_query&lt;/code&gt; so you get the same internal parse tree for SQL queries that Postgres itself does.&lt;/p&gt;
  &lt;p&gt;Paul Mason &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/185735/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;PgQue 0.2&lt;/a&gt; – Zero-bloat Postgres queue. One SQL file to install, &lt;code&gt;pg_cron&lt;/code&gt; or &lt;code&gt;pg_timetable&lt;/code&gt; to tick. v0.2 introduces first-party clients for Python, Go and TypeScript, cooperative consumers, pg_tle packaging, and more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📊 &lt;a href="https://postgresweekly.com/link/185736/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pg_statviz 1.1&lt;/a&gt; – Minimalist extension and utility for time series analysis and visualization of Postgres internal statistics. &lt;em&gt;(We love the new logo!)&lt;/em&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/650/rss" width="1" height="1" /&gt;</description>
      <pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate>
      <guid>https://postgresweekly.com/issues/650</guid>
    </item>
    <item>
      <title>Four features you'll actually feel in Postgres 19</title>
      <link>https://postgresweekly.com/issues/649</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;#​649 — May 20, 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/185396/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/185376/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/gwgjpo4wrgclv830r3c1.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/185376/rss" title="www.postgresql.org" style=" color: #0088bb; font-size: 1.1em; line-height: 1.4em;"&gt;Postgres 18.4, 17.10, 16.14, 15.18, and 14.23 Released&lt;/a&gt;&lt;/span&gt; — All supported versions get an update to fix 11 security vulnerabilities and over 60 bugs. The vulnerabilities include serious memory corruption and trust-boundary bugs, not just in the server but also in clients that connect to malicious servers.&lt;/p&gt;
  &lt;p&gt;PostgreSQL Global Development Group &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;💡 Christophe Pettus digs deeper in &lt;a href="https://postgresweekly.com/link/185377/rss" style=" color: #0088bb; font-weight: 600;"&gt;Eleven CVEs Walk Into a Release&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;a href="https://postgresweekly.com/link/185375/rss" style=" color: #0088bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/70a2ac35.png" width="160" height="38" 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/185375/rss" title="www.greptile.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Would Greptile Have Caught That Postgres Bug?&lt;/a&gt;&lt;/span&gt; — Paste the GitHub PR that introduced it without signing up. Greptile reviews the old PR like a new one and shows the comments it would have left.&lt;/p&gt;
  &lt;p&gt;Greptile &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;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🎉 David Steele shares &lt;a href="https://postgresweekly.com/link/185378/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;an official update on the pgBackRest project&lt;/a&gt; after its &lt;a href="https://postgresweekly.com/link/185379/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;recent funding woes&lt;/a&gt;: &lt;em&gt;pgBackRest will continue&lt;/em&gt;, thanks to the support of several prominent new sponsors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇺🇸 Early bird tickets for &lt;a href="https://postgresweekly.com/link/185380/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Postgres Summit US&lt;/a&gt; – taking place in NYC this September 30-October 2 – are now available.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/185381/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Heroku Postgres Advanced&lt;/a&gt;, the next generation of Heroku's Postgres platform, is now in 'limited GA' for users who request access.&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/185382/rss" title="thebuild.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Four Features You'll Actually &lt;em&gt;Feel&lt;/em&gt; in Postgres 19 Beta&lt;/a&gt;&lt;/span&gt; — The final release isn’t till September, but the beta is due soon. Rather than look at headline features, Christophe focuses on things that change &lt;em&gt;“how the database feels in production”&lt;/em&gt;, like JIT being turned off by default and parallel autovacuum index workers.&lt;/p&gt;
  &lt;p&gt;Christophe Pettus &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/185383/rss" title="boringsql.com" style=" color: #0088bb; font-size: 1.05em;"&gt;The &lt;code&gt;ORDER BY&lt;/code&gt; Jungle: Why &lt;code&gt;ORDER BY&lt;/code&gt; Aliases Behave Strangely&lt;/a&gt;&lt;/span&gt; — &lt;code&gt;ORDER BY a&lt;/code&gt; and &lt;code&gt;ORDER BY -a&lt;/code&gt; look almost identical but hit two different parsers: the SQL-92 name path and the SQL-99 expression path. Radim traces the seam through aliases, &lt;code&gt;GROUP BY&lt;/code&gt;, window functions, quoted identifiers, &lt;code&gt;COLLATE&lt;/code&gt;, and &lt;code&gt;UNION&lt;/code&gt;, down to the responsible function.&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;📄 &lt;a href="https://postgresweekly.com/link/185384/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Building Automatic, Contextual Clinical Trial Audit Logging in Postgres Without Triggers&lt;/a&gt; – Using TypeScript and Drizzle, specifically. &lt;cite&gt;Nathan Leung (Harbor)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/185385/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;How We Saved 40GB of Space Wasted on Indexes&lt;/a&gt; – &lt;em&gt;“TLDR: Don’t randomly add indexes to your db tables.”&lt;/em&gt; &lt;cite&gt;Ravi Ojha&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 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/185386/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/eorbfdjkzu8ed0ytslyu.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/185386/rss" title="www.postgresql.org" style=" color: #0088bb; font-size: 1.05em;"&gt;plpgsql_wrap 1.0: A Way to Obfuscate PL/pgSQL Code&lt;/a&gt;&lt;/span&gt; — HexaCluster has open sourced its extension for distributing and running encrypted PL/pgSQL procedures that can be dumped and reloaded without end users being able to read them. Inspired by &lt;a href="https://postgresweekly.com/link/185387/rss" style=" color: #0088bb;"&gt;Oracle’s ‘wrap’ approach.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Gilles Darold (HexaCluster) &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/185388/rss" title="supabase.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Supabase is Now an Official ChatGPT App&lt;/a&gt;&lt;/span&gt; — Supabase can now integrate with the ChatGPT app so you can manage your database, projects, and branches directly from it.&lt;/p&gt;
  &lt;p&gt;Greg Richardson (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/185389/rss" title="github.com" style=" color: #0088bb; font-size: 1.05em;"&gt;pgsqlite: A Postgres Protocol Adapter for SQLite Databases&lt;/a&gt;&lt;/span&gt; — A wire-protocol adapter that makes an SQLite database pretend to be Postgres, so the usual psql/pgAdmin/driver stack just works against it.&lt;/p&gt;
  &lt;p&gt;Eran Sandler &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;🧠 Postgres alerts that come with diagnoses and proposed SQL fixes, not just thresholds. &lt;a href="https://postgresweekly.com/link/185390/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Open source&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;🐘 Self-hosting Postgres? &lt;a href="https://postgresweekly.com/link/185391/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Try out ParadeDB&lt;/a&gt;, a Postgres extension that enables Elasticsearch-quality full-text, vector and hybrid search. No ETL pipeline, no Elastic cluster.&lt;/p&gt;
 
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/185392/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Start building with Aiven’s dev tier for Apache Kafka&lt;/a&gt;. Build on an enterprise stack for $35/mo. Provision managed Kafka with 100 partitions, Schema Registry &amp;amp; REST Proxy in under 2 mins.&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;"&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/185393/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/xdmua8qlejdtwmbie5lu.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/185393/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pg_statviz 1.0&lt;/a&gt; – Extension and utility for analysis and visualization of Postgres internal statistics. Now with a new AI-powered analysis option.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/185394/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;Postgres Language Server 0.25&lt;/a&gt; – Supabase's Language Server Protocol (LSP) implementation for Postgres.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/185395/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;SQLsmith 1.5&lt;/a&gt; – Random SQL query generator to produce and execute diverse statements for testing.&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/649/rss" width="1" height="1" /&gt;</description>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate>
      <guid>https://postgresweekly.com/issues/649</guid>
    </item>
    <item>
      <title>Don't pretend your Postgres views are tables</title>
      <link>https://postgresweekly.com/issues/648</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;#​648 — May 13, 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/185079/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/185056/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/ateqfl1iffefiwqk6t0z.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/185056/rss" title="boringsql.com" style=" color: #0088bb; font-size: 1.1em; line-height: 1.4em;"&gt;Strong Views on Postgres &lt;code&gt;VIEW&lt;/code&gt;s&lt;/a&gt;&lt;/span&gt; — Why views are clean to use but painful to change in Postgres, with a tour of how they work under the hood and what’s missing from &lt;code&gt;ALTER VIEW&lt;/code&gt;. Surprisingly, the mechanism that would fix it already exists inside &lt;code&gt;pg_dump&lt;/code&gt;…&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;a href="https://postgresweekly.com/link/185055/rss" style=" color: #0088bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/9f5d16f6.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/185055/rss" title="www.tigerdata.com" style=" color: #0088bb; font-size: 1.05em;"&gt;REFRESH MATERIALIZED VIEW Shouldn't Block Prod&lt;/a&gt;&lt;/span&gt; — You wrote the materialized view to pre-compute rollups. Now it locks the table on refresh. Get $1000 in credit to try what replaces it. TimescaleDB continuous aggregates update incrementally on live data. No REFRESH, no lock, no cron.&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;a href="https://postgresweekly.com/link/185057/rss" title="richyen.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Making JSONB More Queryable with Generated Columns&lt;/a&gt;&lt;/span&gt; — A benchmark-driven comparison of GIN, expression indexes, and generated columns. Richard finds the B-tree-based options beat GIN on query latency, storage, and writes, with generated columns the most maintainable.&lt;/p&gt;
  &lt;p&gt;Richard Yen &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/185058/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Render&lt;/a&gt;, a popular hosting platform, has added an &lt;a href="https://postgresweekly.com/link/185059/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;official integration with ParadeDB&lt;/a&gt;, the Elastic-like Postgres search extension.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/185060/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;&lt;em&gt;Neon&lt;/em&gt; turned off Full Page Writes&lt;/a&gt; for up to 5x write throughput.&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/185061/rss" title="www.pgedge.com" style=" color: #0088bb; font-size: 1.05em;"&gt;No Compiler Required: Writing SQL-Only Extensions&lt;/a&gt;&lt;/span&gt; — It’s easy to think of Postgres extensions as complex multi-language projects (many of the most popular ones are!) but they can be built entirely from SQL you already know. Shaun walks through creating such an extension here.&lt;/p&gt;
  &lt;p&gt;Shaun Thomas &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/185062/rss" title="thebuild.com" style=" color: #0088bb; font-size: 1.05em;"&gt;A Field Guide to Alternative Storage Engines for Postgres&lt;/a&gt;&lt;/span&gt; — Six years after &lt;a href="https://postgresweekly.com/link/185063/rss" style=" color: #0088bb;"&gt;the table access method API&lt;/a&gt; shipped in Postgres 12, Christophe surveys what the ecosystem actually looks like and why it’s messier than the early predictions suggested.&lt;/p&gt;
  &lt;p&gt;Christophe Pettus &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/185064/rss" title="talkingpostgres.com" style=" color: #0088bb; font-size: 1.05em;"&gt;From MemSQL to HorizonDB: An Engineer's Journey with Adam Prout&lt;/a&gt;&lt;/span&gt; — The founding architect of Azure HorizonDB on his 20-year journey through relational databases to Postgres.&lt;/p&gt;
  &lt;p&gt;Talking Postgres Podcast &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;  padding: 1px 4px; "&gt;podcast&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;a href="https://postgresweekly.com/link/185065/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Tracing Postgres Using eBPF and Hardware Breakpoints&lt;/a&gt; – TIL you can track variables like &lt;code&gt;nextXid&lt;/code&gt; and &lt;code&gt;nextOid&lt;/code&gt; as they’re updated in memory. On Linux, at least. &lt;cite&gt;Jan Nidzwetzki&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/185066/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;A Beginner's Guide to SSL in Postgres&lt;/a&gt; – A handy primer, including a list of common mistakes to avoid. &lt;cite&gt;Shridhar Khanal&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;⚡ Not enough Postgres experts? &lt;a href="https://postgresweekly.com/link/185067/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;pgEdge AI DBA Workbench&lt;/a&gt; gives every team a senior DBA, 24x7. ANY Postgres. &lt;a href="https://postgresweekly.com/link/185067/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Open source&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;🐘 Self-hosting Postgres? &lt;a href="https://postgresweekly.com/link/185068/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Try out ParadeDB&lt;/a&gt;, a Postgres extension that enables Elasticsearch-quality full-text, vector and hybrid search. No ETL pipeline, no Elastic cluster.&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/185069/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/juc08pf0bya10r8midlf.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/185069/rss" title="dventimisupabase.github.io" style=" color: #0088bb; font-size: 1.05em;"&gt;pg_flight_recorder: Continuous State Sampling via &lt;code&gt;pg_cron&lt;/code&gt;&lt;/a&gt;&lt;/span&gt; — 
A pure SQL extension that uses &lt;code&gt;pg_cron&lt;/code&gt; to continuously snapshot Postgres state (&lt;code&gt;pg_stat_activity&lt;/code&gt;, &lt;code&gt;pg_stat_statements&lt;/code&gt;, &lt;code&gt;pg_locks&lt;/code&gt;, etc.) to give you access to a rolling history of what was happening when things went wrong.
&lt;/p&gt;
  &lt;p&gt;Dmitry Ventin (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/185082/rss" title="skuznetsov.github.io" style=" color: #0088bb; font-size: 1.05em;"&gt;pg_sorted_heap 0.13.0: Physically Sorted Storage with HNSW Vector Search&lt;/a&gt;&lt;/span&gt; — 
An early-stage extension offering physically sorted tables with zone-map block pruning and a planner-integrated HNSW vector index, no &lt;code&gt;pgvector&lt;/code&gt; required. Aimed at GraphRAG and vector retrieval workloads.
&lt;/p&gt;
  &lt;p&gt;Sergey Kuznetsov &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/185071/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;PgBouncer 1.25.2&lt;/a&gt; – A security maintenance release patching four CVEs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/185072/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;PGQueuer 1.0&lt;/a&gt; – Python job queue library offering real-time, concurrent background job processing atop Postgres (&lt;a href="https://postgresweekly.com/link/185073/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;v1.0 release notes&lt;/a&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔎 &lt;a href="https://postgresweekly.com/link/185074/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pg_textsearch 1.2&lt;/a&gt; – The BM25 relevance-ranked full-text search extension adds &lt;em&gt;"proper support for physical replication"&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/185075/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pg_clickhouse 0.3&lt;/a&gt; – Perform analytics queries on ClickHouse without rewriting SQL. &lt;a href="https://postgresweekly.com/link/185076/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;More on this release here.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🕒 &lt;a href="https://postgresweekly.com/link/185080/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;TimescaleDB 2.27.0&lt;/a&gt; – The time-series extension gets substantially faster performance on certain queries.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/185078/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pg_trickle 0.58&lt;/a&gt; – Declarative, auto-refreshing materialized views.&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/648/rss" width="1" height="1" /&gt;</description>
      <pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate>
      <guid>https://postgresweekly.com/issues/648</guid>
    </item>
    <item>
      <title>Postgres 19's most exciting features</title>
      <link>https://postgresweekly.com/issues/647</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;#​647 — May 6, 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/184806/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/184808/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/kypnkxj6cc4bjtcfewgt.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/184808/rss" title="www.bytebase.com" style=" color: #0088bb; font-size: 1.1em; line-height: 1.4em;"&gt;Postgres 19 Features I'm Excited About&lt;/a&gt;&lt;/span&gt; — An opinionated run-through of some v19 highlights, including &lt;code&gt;pg_plan_advice&lt;/code&gt;, DDL extraction functions, online &lt;code&gt;REPACK&lt;/code&gt;/&lt;code&gt;REPACK CONCURRENTLY&lt;/code&gt;, and observability improvements.&lt;/p&gt;
  &lt;p&gt;Tianzhou (Bytebase) &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/184809/rss" title="richyen.com" style=" color: #0088bb; font-size: 1.05em;"&gt;The Potential Consequences of Using Postgres as a Job Queue&lt;/a&gt;&lt;/span&gt; — At “small scale” it’s fine, but when do the wheels start to fall off, and what are the alternatives? Richard has some pragmatic pointers.&lt;/p&gt;
  &lt;p&gt;Richard Yen &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/184807/rss" style=" color: #0088bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/5dd244c1.png" width="142" 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/184807/rss" title="posetteconf.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Azure HorizonDB at POSETTE: An Event for Postgres 2026&lt;/a&gt;&lt;/span&gt; — Explore 44 talks about Azure HorizonDB, PostgreSQL-backed app development, Postgres performance &amp;amp; AI, Postgres 19 and more at POSETTE 2026, a free &amp;amp; virtual developer event, happening 16-18 Jun. Don’t miss your favorites - use &lt;a href="https://postgresweekly.com/link/184807/rss" style=" color: #0088bb;"&gt;Add to Calendar&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Microsoft | AMD &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;strong&gt;A &lt;em&gt;PGBACKREST&lt;/em&gt; INTERLUDE:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Last week, &lt;a href="https://postgresweekly.com/link/184810/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;pgBackRest was 'dead'&lt;/a&gt;, but a week is a long time in Postgres, and maintainer David Steele received such an outpouring of support that &lt;em&gt;&lt;a href="https://postgresweekly.com/link/184811/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;"it appears all but certain that [he] will be able to secure enough funding to continue the project."&lt;/a&gt;&lt;/em&gt; 🎉&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Even if Steele's funding falls through, &lt;a href="https://postgresweekly.com/link/184832/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;PGX Inc.&lt;/a&gt; has stepped up &lt;a href="https://postgresweekly.com/link/184812/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;to provide 'continuity support' with &lt;code&gt;pgxbackup&lt;/code&gt;&lt;/a&gt;, a fork of pgBackRest.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vibhor Kumar uses the pgBackRest story to &lt;a href="https://postgresweekly.com/link/184813/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;reflect on the role of open source&lt;/a&gt; when it goes beyond merely being a project to becoming &lt;em&gt;infrastructure&lt;/em&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; 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/184814/rss" title="www.figma.com" style=" color: #0088bb; font-size: 1.05em;"&gt;How Figma Built the Bouncer It Needed for Postgres&lt;/a&gt;&lt;/span&gt; — Figma outgrew PgBouncer, evaluated PGCat, and ended up building its own pooler (PGKeeper) with Go and &lt;a href="https://postgresweekly.com/link/184815/rss" style=" color: #0088bb;"&gt;PGX&lt;/a&gt;. It’s not public, but they go deep into the design: it exposes gRPC to clients rather than acting as a PG wire-protocol pooler, so each query has metadata to use for priority-based admission control, load shedding &amp;amp; fair sharing.&lt;/p&gt;
  &lt;p&gt;He, Goh, and Baid (Figma) &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/184816/rss" title="thebuild.com" style=" color: #0088bb; font-size: 1.05em;"&gt;Two Hundred and Twelve Things&lt;/a&gt;&lt;/span&gt; — With 212 entries in the &lt;a href="https://postgresweekly.com/link/184817/rss" style=" color: #0088bb;"&gt;draft Postgres 19 release notes&lt;/a&gt; being potentially overwhelming, Christophe boiled it down to the &lt;em&gt;“load-bearing”&lt;/em&gt; items, while explaining that while v19 has no single &lt;em&gt;"marquee user-facing feature"&lt;/em&gt;, it’s &lt;em&gt;“exactly what a good database release looks like.”&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;Christophe Pettus &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/184818/rss" title="vondra.me" style=" color: #0088bb; font-size: 1.05em;"&gt;How Are Postgres Committers Selected?&lt;/a&gt;&lt;/span&gt; — A Postgres committer explains how people are selected to join &lt;a href="https://postgresweekly.com/link/184819/rss" style=" color: #0088bb;"&gt;this distinguished group.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Tomas Vondra &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/184820/rss" title="www.pgedge.com" style=" color: #0088bb; font-size: 1.05em;"&gt;It Depends: Using Session Variables in Postgres&lt;/a&gt;&lt;/span&gt; — You’ve probably used &lt;a href="https://postgresweekly.com/link/184821/rss" style=" color: #0088bb;"&gt;&lt;code&gt;SET&lt;/code&gt;&lt;/a&gt; to tweak configuration parameters, but did you know you can use it to store your own session variables?&lt;/p&gt;
  &lt;p&gt;Shaun Thomas &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/184822/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Building an MCP Server Using Postgres&lt;/a&gt; – Another fine presentation slide deck from Bruce. &lt;cite&gt;Bruce Momjian&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://postgresweekly.com/link/184823/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Why Sell the Idea of Contributing to Postgres to Your Employer&lt;/a&gt;  &lt;cite&gt;Valeria Kaplan&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/184839/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Elastic-quality search for Postgres as an extension&lt;/a&gt;. BM25, analytics &amp;amp; vectors — no Elasticsearch required.&lt;/p&gt;
 
&lt;p&gt;🐘 &lt;a href="https://postgresweekly.com/link/184824/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;AppSignal&lt;/a&gt; pinpoints the slow Postgres query, the deploy that broke it, and the fix. &lt;a href="https://postgresweekly.com/link/184824/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Free 30-day trial. 2-min install&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;🤖 &lt;a href="https://postgresweekly.com/link/184825/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Meet Ellie&lt;/a&gt; — Your 24x7 Postgres AI co-pilot. Monitors, detects &amp;amp; fixes issues on ANY Postgres database. &lt;a href="https://postgresweekly.com/link/184825/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;Free &amp;amp; open source&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;/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/184826/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/stbujlcgrkxmtd8gjbt5.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/184826/rss" title="github.com" style=" color: #0088bb; font-size: 1.05em;"&gt;pg_column_tetris: Enforce Optimal Column Alignment to Minimize Row Padding Waste&lt;/a&gt;&lt;/span&gt; — Postgres aligns columns to specific byte boundaries for efficiency, inserting ‘padding’ to fill the gaps. This extension can show how many bytes are being lost to padding in existing tables or can warn/block against creating tables with inefficient column ordering.&lt;/p&gt;
  &lt;p&gt;Roger Welin &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;💡 If you're looking for best practices, &lt;a href="https://postgresweekly.com/link/184827/rss" style=" color: #0088bb; font-weight: 600;"&gt;Ordering Table Columns in PostgreSQL&lt;/a&gt; provides a guide to how GitLab designs its tables to avoid wasteful padding.&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/184830/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;pg_graphql 1.6&lt;/a&gt; – Add GraphQL support to a Postgres database. Notably GraphQL introspection &lt;a href="https://postgresweekly.com/link/184831/rss" style=" color: #0088bb; font-weight: 500 !important;"&gt;is now disabled by default&lt;/a&gt; to reduce the potential for API enumeration.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/184828/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;PostgREST 14.11&lt;/a&gt; – Serve a fully RESTful API from a Postgres database.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://postgresweekly.com/link/184829/rss" style=" color: #0088bb; font-weight: 500 !important; font-size: 1.08em; line-height: 1.5em;"&gt;postgresparser 1.2&lt;/a&gt; – ANTLR-based PostgreSQL query parser for Go.&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/647/rss" width="1" height="1" /&gt;</description>
      <pubDate>Wed, 6 May 2026 00:00:00 +0000</pubDate>
      <guid>https://postgresweekly.com/issues/647</guid>
    </item>
  </channel>
</rss>
