# CrunchyData Blog

PostgreSQL experts from Crunchy Data share advice, performance tips, and guides on successfully running PostgreSQL and Kubernetes solutions

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Postgres Calculations and the Ambiguity of NULL

DevFeed: [Postgres Calculations and the Ambiguity of NULL](<https://devfeed.tech/articles/postgres-calculations-and-the-ambiguity-of-null-14483.md>)

Original publisher: [Read original article](<https://www.crunchydata.com/blog/postgres-calculations-and-the-ambiguity-of-null>)

Author: Christopher Winslett

Published: 2026-09-02T17:00:00Z

Content type: article

Language: en

Sources: [CrunchyData Blog](<https://devfeed.tech/sources/crunchydata-blog.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>)

Tags: [fun-with-sql](<https://devfeed.tech/tags/fun-with-sql.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [schema](<https://devfeed.tech/tags/schema.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

This article explains how Postgres handles NULL as an unknown marker in arithmetic, comparisons, concatenation, aggregates, window functions, predicates, joins, and sorting. It covers SQL three-valued logic, common surprises such as NOT IN and dropped rows, ways to test or handle missing values, and Postgres 19 IGNORE NULLS.

### Source excerpt

How Postgres evaluates calculations when a value is unknown: three-valued logic, arithmetic and concatenation with NULL, NOT IN, aggregates and window functions, NULL sort order, and Postgres 19 IGNORE NULLS.

## Postgres 19: How Our Advice Has Changed Since We Wrote It

DevFeed: [Postgres 19: How Our Advice Has Changed Since We Wrote It](<https://devfeed.tech/articles/postgres-19-how-our-advice-has-changed-since-we-wrote-it-14482.md>)

Original publisher: [Read original article](<https://www.crunchydata.com/blog/postgres-19-how-our-advice-has-changed-since-we-wrote-it>)

Author: Christopher Winslett

Published: 2026-08-18T19:00:00Z

Content type: article

Language: en

Sources: [CrunchyData Blog](<https://devfeed.tech/sources/crunchydata-blog.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [JIT](<https://devfeed.tech/topics/jit.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Temporal data](<https://devfeed.tech/topics/temporal-data.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [advice](<https://devfeed.tech/tags/advice.md>), [async](<https://devfeed.tech/tags/async.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [index](<https://devfeed.tech/tags/index.md>), [jit](<https://devfeed.tech/tags/jit.md>), [latency](<https://devfeed.tech/tags/latency.md>), [linux](<https://devfeed.tech/tags/linux.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [partitioning](<https://devfeed.tech/tags/partitioning.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [postgres-19](<https://devfeed.tech/tags/postgres-19.md>), [production-postgres](<https://devfeed.tech/tags/production-postgres.md>), [release](<https://devfeed.tech/tags/release.md>), [storage](<https://devfeed.tech/tags/storage.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

This article revisits earlier Crunchy Data guidance on loading, storage, indexes, and partitioning for the upcoming Postgres 19 release. It explains which changes in Postgres 18 and 19 affect that advice, including asynchronous I/O, parallel maintenance, BRIN and skip-scan behavior, partition operations, and JIT being disabled by default. The details are based on current betas and may change before general availability.

### Source excerpt

Revisiting Crunchy posts on COPY, TOAST, BRIN, covering indexes, and partitioning: what we said then, which Postgres versions changed the story, and what we recommend on Postgres 19.

## Hybrid Search Patterns with Postgres and pgvector

DevFeed: [Hybrid Search Patterns with Postgres and pgvector](<https://devfeed.tech/articles/hybrid-search-patterns-with-postgres-and-pgvector-14480.md>)

Original publisher: [Read original article](<https://www.crunchydata.com/blog/hybrid-vector-search>)

Author: Christopher Winslett

Published: 2026-07-30T15:00:00Z

Content type: article

Language: en

Sources: [CrunchyData Blog](<https://devfeed.tech/sources/crunchydata-blog.md>)

Topics: [Embeddings](<https://devfeed.tech/topics/embeddings.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [ann](<https://devfeed.tech/tags/ann.md>), [caching](<https://devfeed.tech/tags/caching.md>), [hybrid-search](<https://devfeed.tech/tags/hybrid-search.md>), [performance](<https://devfeed.tech/tags/performance.md>), [pgvector](<https://devfeed.tech/tags/pgvector.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [search](<https://devfeed.tech/tags/search.md>), [vector](<https://devfeed.tech/tags/vector.md>), [vector-search](<https://devfeed.tech/tags/vector-search.md>), [vectors-llms](<https://devfeed.tech/tags/vectors-llms.md>)

### AI overview

This article explains why filtered vector search in Postgres creates a tradeoff between recall and performance. It discusses how ANN indexes such as HNSW and IVFFlat differ from B-tree indexes, and introduces approaches including pgvector iterative scans, partial indexes, oversampling, and caching.

### Source excerpt

Filtered vector search in Postgres forces a tradeoff between recall and speed because ANN indexes and WHERE clauses do not intersect like B-trees. Read about pgvector iterative scans, partial HNSW indexes, oversampling with pg_stats, caching, and more.

## Postgres 19 Compression: from pglz to LZ4

DevFeed: [Postgres 19 Compression: from pglz to LZ4](<https://devfeed.tech/articles/postgres-19-compression-from-pglz-to-lz4-14481.md>)

Original publisher: [Read original article](<https://www.crunchydata.com/blog/postgres-19-compression-from-pglz-to-lz4>)

Author: Christopher Winslett

Published: 2026-07-16T12:00:00Z

Content type: article

Language: en

Sources: [CrunchyData Blog](<https://devfeed.tech/sources/crunchydata-blog.md>)

Topics: [Compression](<https://devfeed.tech/topics/compression.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [automatic](<https://devfeed.tech/tags/automatic.md>), [compression](<https://devfeed.tech/tags/compression.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [postgres-19](<https://devfeed.tech/tags/postgres-19.md>), [production-postgres](<https://devfeed.tech/tags/production-postgres.md>), [speed](<https://devfeed.tech/tags/speed.md>), [storage](<https://devfeed.tech/tags/storage.md>)

### AI overview

This article explains how PostgreSQL compresses table, TOAST, and index data, and examines the planned Postgres 19 change from pglz to LZ4 as the default TOAST compression algorithm.

### Source excerpt

With Postgres 19 switching the default from pglz to LZ4, this post walks through the compression decision path, storage strategies, and index-size limits that shape real-world behavior.

## British Columbia, Time Zones, and Postgres

DevFeed: [British Columbia, Time Zones, and Postgres](<https://devfeed.tech/articles/british-columbia-time-zones-and-postgres-14479.md>)

Original publisher: [Read original article](<https://www.crunchydata.com/blog/british-columbia-and-time-zone-changes>)

Author: Christopher Winslett

Published: 2026-06-16T12:00:00Z

Content type: tutorial

Language: en

Sources: [CrunchyData Blog](<https://devfeed.tech/sources/crunchydata-blog.md>)

Topics: [DateTime](<https://devfeed.tech/topics/datetime.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [Ubuntu](<https://devfeed.tech/topics/ubuntu.md>)

Tags: [postgres](<https://devfeed.tech/tags/postgres.md>), [production-postgres](<https://devfeed.tech/tags/production-postgres.md>), [sql](<https://devfeed.tech/tags/sql.md>), [time](<https://devfeed.tech/tags/time.md>), [timezone](<https://devfeed.tech/tags/timezone.md>), [ubuntu](<https://devfeed.tech/tags/ubuntu.md>)

### AI overview

This article explains how British Columbia's permanent move to UTC-7 affects PostgreSQL handling of future appointments and time-zone conversions. It warns that changed time-zone rules or outdated tzdata packages can cause stored appointments to display at the wrong local time.

### Source excerpt

This year, British Column has moved to year-round Pacific Time. How does that affect date data?