NULL BITMAP by Justin Jaffray
Archives
Search...
Subscribe
Simulating Queueing 2
March 9, 2026
Last week we simulated a queueing algorithm. Behind the scenes, I did this by writing a Go program and placing sleeps to simulate processing. This meant that...
Simulating Queueing
March 2, 2026
I read a great post this week from Marc Brooker: SFQ: Simple, Stateless, Stochastic Fairness. In it, Marc does a great job of explaining a cute little...
Expectation Again
February 23, 2026
We talked a couple issues ago about the application of Linearity of Expectation to building intuition about Copysets, and the ways that we're both...
Fortran Parsing Algorithm
February 16, 2026
My friend taught me a really funny parsing algorithm this week and sent me Operator precedence by textual substitution. I love really funny parsing...
Expectation and Copysets
February 9, 2026
That expectation is linear is one of my favourite facts. I got a first taste of this when I was doing an internship at an unnamed trading firm. Some guy was...
Mark Join
February 2, 2026
I was going through the list of CIDR papers this year and looking for ones that were relevant to my interests. If you're not familiar with CIDR as an...
Online, Asynchronous Schema Change in F1
January 26, 2026
That's right, we're back to the world of databases. Not because I haven't been screwing around with my dinky little compiler but because I was starting to...
Delayed Code Generation
January 19, 2026
Last week I talked about my forays into Compiler Construction (1996). This week, I have worked through more of the book and I'm going to share some of my...
I deserve to write at least two or three more arithmetic expression parsers
January 12, 2026
Something I believe wholeheartedly is that writing simple little programs is good, and writing the same simple little programs many times is even better....
Menger's Horse Enclosure
January 5, 2026
I recently came across a cute game called https://enclose.horse. In this game, there is a horse in the middle of a field and a bunch of rivers surrounding...
Inlining
December 29, 2025
This is the last NULL BITMAP of the year. If you read these with any regularity, sincerely, thanks for spending time with me every week. Reflecting on the...
Unger Parsing
December 22, 2025
I am busy with holiday stuff so this post is a little bit half-baked. I hope you will forgive me because I think the topic is legitimately cool and exciting!...
Lightweight Cardinality Estimation with Density
December 15, 2025
Last week we talked about the different ways we can decompose a simple predicate which is a conjunction of two simpler predicates. Given the query: SELECT *...
Predicate Decomposition
December 8, 2025
One of the fundamental things that query planners have to do is decompose predicates. What do I mean by that, well, it's actually something that comes up...
More Data Independence and the History of the Relational Model
December 1, 2025
Last week we talked about some of the reasons why we want data independence. This week I want to talk about some of the historical steps that brought us to...
Data Independence
November 24, 2025
You and your bud are jamming out to math rock at the office while you work on the MVP of Datablaster 3000 and then the senior engineer walks in to the office...
Ordering and Partitioning
November 17, 2025
I've recently been downsizing my Magic: The Gathering collection to cards that I really want to keep. I think a "collectible card game" is a good way to...
Query Plan Caching
November 10, 2025
Serious NULL BITMAP heads know my love for the Query Plan Diagram. This is a 2D-rendering that represents the selection of plans for a particular shape of...
Lowering in Reverse
November 3, 2025
Recall last week, we talked about how to take a SQL query and turn it into a lower level plan, so this week I want to talk about how we can generate SQL...
Lowering in SQL
October 27, 2025
In the land of compilers, going from a higher-level representation of a program (that's easier for a human to author) to a lower-level representation (that's...
Older archives