NULL BITMAP by Justin Jaffray
Archives
Search...
Subscribe
Physical Properties #2
February 5, 2024
Last week, we talked about the idea of physical properties, which are attributes of a result set that, in some sense, do not have bearing on whether that...
Physical Properties #1
January 29, 2024
I wanna talk about relational algebra. Specifically, the things relational algebra is not concerned with, but obviously matter. Things like: ordering of a...
Testing Query Planners
January 22, 2024
A thing I did not appreciate for a long time is how different pieces of software merit different testing methodologies. I don't necessarily mean like, a...
Why SQL is Unkillable
January 15, 2024
My Twitter bio is it is easier to imagine an end to computing than an end to sql. I've thought a lot about the question of why SQL is such a cockroach. It...
Certificates and Duality
January 8, 2024
I wanna talk about optimization. Not query optimization, or program optimization, today, but the other kind. Mathematical optimization. Like when your high...
Reification and Exchange
January 1, 2024
One thing I really like about the parse-plan-execute cycle of queries is the ability to reify various computations in a way that are often invisible, or hard...
Should you read about "Database Theory?"
December 25, 2023
Hello! I am traveling and also sick and also this post is scheduled to come out on Christmas Day so it's going to be a little shorter and chiller than usual....
Tiering vs. Leveling
December 18, 2023
Last week we talked about how to think about "what is going on with LSMs." Today, we are going slightly deeper and a little bit sideways to discuss a design...
Thinking about Closure and LSMs
December 11, 2023
Math, specifically algebra, has some very nice interfaces. The idea that to perform operations on groups you simply take two of its elements and bash them...
The Little Planner Chapter 4: A Pushdown Party
December 4, 2023
Hi everybody, apologies, I didn't have time to put together a newsletter this week. In lieu of that, I found this chapter of a book called "The Little...
Simplifying Expressions Bottom-Up
November 27, 2023
There's a technique for simplifying expression trees that I learned from an old manager of mine, have never seen elsewhere, and have never shown to anyone...
Independence and The Futility of Cardinality Estimation
November 20, 2023
The official NULL BITMAP position is that query planners exist to approximate domain knowledge. That is, they're tools to replicate the knowledge of an...
A Left-to-Right Mental Model for Datalog
November 13, 2023
Note: see the end of this post for some housekeeping on last week. I get the sense that datalog scares a lot of people off. And I get that people might not...
SQL Scoping is Surprisingly Subtle and Semantic
November 6, 2023
It is not my intention with NULL BITMAP to dwell forever on somewhat obscure, unintuitive SQL-isms, but...with that said, I know a lot of you out there are...
Databases are not Compilers
October 30, 2023
Last week's issue was the topic of some contention in some of my circles. The general question was, is the following transformation valid: SELECT count(*)...
The Case of a Curious SQL Query
October 23, 2023
Languages that suffer success often have to do so by selling out and adding features that go against some of the original purposes of their design. SQL is a...
Databases Have a Lot of Data
October 16, 2023
A recurring theme in the ongoing coverage of Sam Bankman-Fried's trial has been his apparent recklessness. One particularly popular anecdote being his...
Representing Columns in Query Optimizers
October 9, 2023
Query optimizers must have a way to internally represent their plans. This is query planning's version of an "intermediate representation," or IR. There's a...
Why Are Query Plans Trees?
October 2, 2023
Looking at just about any database's EXPLAIN output will reveal that generally, queries get compiled into tree-shaped plans, rather than general cyclic...
Internal Affairs
September 25, 2023
There is a trick called string interning that is well known to compiler authors, and sometimes shows up in other places as well. It's used to change the...
Newer archives
Older archives