NULL BITMAP by Justin Jaffray
Archives
Search...
Subscribe
Infinite Relations
September 15, 2025
Let's write a super simply query engine using the iterator model. Something like this is conceptually what the compilation target for something like SQL...
Query Operator Structures
September 8, 2025
The way we usually like to think about operators in query plans is that they're just representative of "result sets." In the Volcano model, they're just...
Should We Have Been using LLMs for Our Test Queries This Whole Time?
September 1, 2025
Longtime readers of NULL BITMAP will know that I am bullish on metamorphic and in general, property-based testing for things that are SQL-shaped. I generally...
Some Stuff I've Been Reading
August 25, 2025
I’ve been on vacation and I don’t really have an exciting post to share, but I have been reading some, so here’s a bit of my reading list, and maybe you will...
Discrete Distributions
August 18, 2025
For a while now, my favourite piece of technical writing has been Darts, Dice, and Coins: Sampling from a Discrete Distribution by Keith Schwarz. In it, he...
NULL BITMAP Two-Year ZINE Special
August 11, 2025
It has been (about) two years of writing NULL BITMAP! Thank you for reading. This issue is very special because it contains none of my technical writing, but...
Diagrams For Yourself
August 4, 2025
I have a large need of diagrams. In particular when I'm writing something longer about a query planning topic I often would like some kind of standardized...
Giving Benchmarks a Boat
July 28, 2025
I've been thinking lately about this piece from Frank Lantz about the Thielian "the Olympics, but you take performance-enhancing drugs." The pitch being...
Bloom Filter Sizing
July 21, 2025
Here's a question: say I have two streams of objects I want to construct Bloom filters over, one stream is red and one stream is blue and they're about the...
NULLBITMAPGPT
July 14, 2025
I don't know if you've all been paying attention, but this is the ONE HUNDREDTH NULL BITMAP?? To celebrate, I've heard people are really into "next token...
Unified Memory Management
July 7, 2025
There's a trend in database memory management design that I'm really excited about, and that is rethinking the abstraction boundaries of the buffer pool. I'm...
Caching is an Abstraction, not an Optimization
June 30, 2025
I've always been told that caching is a tool to make software faster. That, given some careful considerations to consistency, caching makes it so that when...
Monotone Functions and Cache Lines
June 23, 2025
If you've taken a calculus class your professor might have explained to you the idea of a monotone function, or (in one direction) a nondecreasing function....
Search Engine Retrieval
June 16, 2025
I want to talk about the high level concept of what a search engine does. And I don’t mean like, Google, or Kagi, “the product,” but the technical object...
Nonograms
June 9, 2025
Hello! I hope you are having a lovely day. This week I got distracted by some non-database content and it consequently took up a lot of my time. Usually I...
Edge Contractions and Join Planning
June 2, 2025
The join graph of a query has a vertex for each relation and an edge between any two relations that have a predicate between them. For example, this query:...
Building One to Throw Away
May 26, 2025
I've been thinking lately about the nature of bespoke data structures for bespoke purposes. I think you learn fairly early on in most programming contexts...
Kicking the Tires on CedarDB's SQL
May 19, 2025
Last week it was my birthday and I had a bunch of stuff going on over the weekend so a short and simple post this week! If you are a database sicko (and I...
Multiplexing
May 12, 2025
In the world of electronics, multiplexing is the process of taking a set of communication channels and collapsing them all to be transmitted along a single...
How To Understand That Jepsen Report
May 5, 2025
There is a new Jepsen report which, as always, is an entertaining read and gives some insight into the way things might be broken in subtle ways. I learned...
Newer archives
Older archives