---
title: "Are you qualified to use NULL?"
publication: "Postgres Weekly"
issue: 572
published_at: "2024-10-02"
canonical_url: "https://postgresweekly.com/issues/572"
---

Plus everyone reflects on how great Postgres 17 is. |        

#​572 — October 2, 2024 

[Web Version](https://postgresweekly.com/issues/572)   

📰 [Last week's issue](https://postgresweekly.com/issues/571), which dropped on Friday, was a big deal as we sent it just after Postgres 17 was released, so if you missed it due to the unusual sending time, you can [check it out here.](https://postgresweekly.com/issues/571):-)
__
_Peter Cooper, your editor_ 

Together with [![Blacksmith\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_820,h_100/e_make_transparent/co_white,e_outline:7/uq9yvkqtinkixhiq19mf.png)](https://blacksmith.sh/?utm_source=cooperpress&utm_medium=exclusive_primary&utm_campaign=oct-02&utm_term=postgres)   

Postgres Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/kwfnttiwnfhqxipayqji.jpg)](https://www.cybertec-postgresql.com/en/whats-so-great-about-postgresql-v17/)  

[What's So Great About Postgres 17?](https://www.cybertec-postgresql.com/en/whats-so-great-about-postgresql-v17/) — Finally, [Postgres 17 is here](https://www.postgresql.org/about/news/postgresql-17-released-2936/) and we’re starting to see some opinionated takes on its many enhancements. Laurenz covers the things that caught his eye here. 

Laurenz Albe   

[Are You Qualified to Use `NULL` in SQL?](https://agentm.github.io/project-m36/posts/2024-07-16-are-you-qualified-to-use-null.html) — A fun(?) quiz designed to test your intuitions about the behavior of `NULL` and how it interacts with other types, predicates, aggregations, and more. It’s a real brainscratcher. _(Note: My Postgres, at least, behaves differently to the expected answer on the final question, showing just how confusing it all is.)_ 

AgentM   [![\](https://copm.s3.amazonaws.com/9ba3893d.png)](https://blacksmith.sh/?utm_source=cooperpress&utm_medium=exclusive_primary&utm_campaign=oct-02&utm_term=postgres) 

[Run GitHub Actions Up to 2x Faster at Half the Cost](https://blacksmith.sh/?utm_source=cooperpress&utm_medium=exclusive_primary&utm_campaign=oct-02&utm_term=postgres) — Blacksmith runs your GitHub Actions substantially faster by running them on modern gaming CPUs. Integrating Blacksmith is a one-line code change. 100+ companies like Ashby, Superblocks, and Slope use Blacksmith to help developers merge code faster. 

Blacksmith sponsor   

▶[Heroku's Glory Days and Postgres vs The World](https://www.youtube.com/watch?v=HMJkD41umF0) — Postgres legend Craig Kerstiens joined Aaron Francis (working on the soon to be launched [Mastering Postgres](https://masteringpostgres.com/) course) to talk about his history with Postgres at Heroku, Citus Data, and now Crunchy Data. It’s not all about him, though; the interview is packed with insights about building ecosystems, scaling Postgres, and even DuckDB. 

Aaron Francis   

▶[SQL `IN` Clauses are Miles Faster in Postgres 17](https://www.youtube.com/watch?v=0Ih7FhVZ21s) — Hussein is so amazed by PG17’s enhancements to b-tree scanning performance when using `IN` that he’s recorded a screencast explaining how it works, compares it to SQL Server’s approach, and shows it off with a live demo. 

Hussein Nasser   

**QUICK BITS:** 

- [DBA Vasilis Ventirozos](https://postgresql.life/post/vasilis_ventirozos/) is this week's _PostgreSQL Person of the Week_ interviewee. Last week, it was [OVHcloud's Nicolas Payart.](https://postgresql.life/post/nicolas_payart/)
- 🎤 This week, the _[Postgres.fm](https://postgres.fm/)_ podcast got to [discussing Postgres 17.](https://postgres.fm/episodes/postgres-17)
- 🇮🇳 Pavlo Golub shares [thoughts on his time at PGDay Hyderabad 2024.](https://www.cybertec-postgresql.com/en/pgday-hyderabad-2024-reflections/)   

[Waiting for Postgres 18: Add Temporal `PRIMARY KEY` and `UNIQUE` Constraints](https://www.depesz.com/2024/09/30/waiting-for-postgresql-18-add-temporal-primary-key-and-unique-constraints/) — Postgres 17 may have just landed, but Hubert is looking ahead to Postgres 18, and a new way to enforce uniqueness across a time period, say, using `WITHOUT OVERLAPS` rather than just against static values. 

Hubert depesz Lubaczewski   

[Exploring the Limits of Postgres: When Does It Break?](https://stepchange.work/blog/exploring-the-limits-of-postgres-when-does-it-break) — Postgres’ limits are well understood on paper, but how far could you push a single node Postgres server in the real world and where are the bottlenecks? 

Andrew Atkinson   

📄 [Writing Raw SQL Easier with pgx and sqlc in Go](https://remvn.dev/posts/writing-raw-sql-easier-with-pgx-and-sqlc-in-go/) remvn 

📄 [Upgrading Homebrew Postgres 16 to 17 on a Modern Mac](https://ivdl.co.za/2024/09/28/upgrading-from-postgresql-16-to-17-installed-with-homebrew-on-an-apple-silicon-mac/) Ian van der Linde 

📄 [Building an AI Image Gallery: Advanced RAG with `pgvector` and Claude Sonnet](https://www.timescale.com/blog/building-an-ai-image-gallery-advanced-rag-with-pgvector-and-claude-sonnet-3-5/) Haziqa Sajid (Timescale)       

📰 Classifieds   

Choosing PostgreSQL data types wisely can save you time and headache down the road. [Join Redgate’s live webinar](https://www.red-gate.com/hub/events/postgresql-101-data-types?utm_source=postgresweekly&utm_medium=email&utm_term=2+October+classified+ad&utm_campaign=mc-202410-t2-sodl-ubi-xdb-gc-all%0A) on October 8th to learn how. 

--- 

Building AI apps on Postgres? [pgai empowers devs with AI superpowers](https://github.com/timescale/pgai), enabling integration of AI workflows for tasks like embedding creation and model completion.      

🛠 Code and Tools  

[pg_stat_kcache: Gather Statistics About Disk Access and CPU Consumption](https://github.com/powa-team/pg_stat_kcache) — Sits atop `pg_stat_statements` and creates views you can use to measure CPU time, page faults, swaps, bytes read and written, and more at both database and query level. 

Dalibo and PoWA Team   

[pgsql-tweaks: A Grab Bag of Useful Postgres Functions](https://github.com/sjstoelting/pgsql-tweaks) — An interesting suite of functions that the author (a former [PostgreSQL Person of the Week](https://postgresql.life/post/stefanie_janine_stoelting/)) uses in her day job as a Postgres user, covering areas like checking data types, gathering statistics, some aggregates, and conversion functions. 

Stefanie Janine Stölting   

[pg_qualstats: Extension for Collecting Statistics About Predicates](https://github.com/powa-team/pg_qualstats) — Analyze the most often used predicates in queries against your database, perhaps as a way to create more effective indexes. Part of the [POWA (Postgres Workload Analyzer) project.](https://powa.readthedocs.io/en/latest/) 

Powa Team   

- [pg_idkit 0.2.4](https://github.com/VADOSWARE/pg_idkit) – An extension for generating UUIDs and similar IDs.
- [Pongo 0.15](https://github.com/event-driven-io/Pongo) – Postgres driver for Node.js that presents as a MongoDB-style API.
- [node-pg-migrate 7.7](https://github.com/salsita/node-pg-migrate) – Database migration management from Node.js.
- [pgwire 0.25](https://github.com/sunng87/pgwire) – The Postgres wire protocol implemented in a Rust library.
- [DoltgreSQL 0.12](https://github.com/dolthub/doltgresql) – Version-controlled Postgres-a-like.
- [pspg 5.8.7](https://github.com/okbob/pspg) – Unix terminal pager for tabular data.    

**Got a new email?** You can [change your address here](https://postgresweekly.com/edit_subscription/*|UID|*). 

--- 

**Bored of us?** [Click here to stop getting Postgres Weekly](https://postgresweekly.com/leave/*|UID|*). 

--- 

**Got a link for us?** Reply and tell us. We can't include everything but we'll look at anything you send. _Thanks!_ 

--- 

Published by Cooper Press Ltd.
Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom 

Postgres, PostgreSQL and the Slonik Logo are trademarks or registered trademarks of the PostgreSQL Community Association of Canada. 

[Stop getting this newsletter](https://postgresweekly.com/leave/*|UID|*).
