SQL Scoping is Surprisingly Subtle and Semantic
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 SQL weirdos...so let's fire up the ol' SQL...
View ArticleA Left-to-Right Mental Model for Datalog
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 be all that persuaded by the argument that...
View ArticleIndependence and The Futility of Cardinality Estimation
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 expert in the domain of whatever your database...
View ArticleSimplifying Expressions Bottom-Up
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 who had seen it before.Despite that, it's very...
View ArticleThe Little Planner Chapter 4: A Pushdown Party
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 Planner" in a trash can in Berkeley, California...
View ArticleThinking about Closure and LSMs
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 together to get a new one is actually pretty...
View ArticleTiering vs. Leveling
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 junction in them that I think is interesting...
View ArticleShould you read about "Database Theory?"
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. Happy holidays.I don't think anyone I've...
View ArticleReification and Exchange
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 to find, in a codebase."Where does the data...
View ArticleCertificates and Duality
I wanna talk about optimization. Not query optimization, or program optimization, today, but the other kind. Mathematical optimization. Like when your high school math teacher told you to find the...
View ArticleWhy SQL is Unkillable
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 seems surprising to me that we have so, so many...
View ArticleTesting Query Planners
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 pacemaker should be subject to different...
View ArticlePhysical Properties #1
I wanna talk about relational algebra. Specifically, the things relational algebra is not concerned with, but obviously matter. Things like: ordering of a result set, distribution of data, that sort of...
View ArticlePhysical Properties #2
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 result set is a valid answer to a given query....
View ArticlePhysical Properties #3
Last week we walked through how a query optimizer might use Physical Properties to optimize a query plan. This week, I want to talk through one surprising application of physical properties: using them...
View ArticleThe Three Places for Data in an LSM
We have talked before about how to conceptualize what an LSM does. I want to talk about another way to think through how we put together this data structure.One way to think about what we want from a...
View ArticleSome of My Favourite Query Planning Papers
Something I've learned about programmers is that for some reason they absolutely love being recommended papers. They lose their minds for it. So here is an incomplete list of some of my favourite...
View ArticleA Very Basic Decorrelator
Today we're going to begin implementing a simple query decorrelator. We're not going to finish it in this post, and I'm not sure how many posts it will take, and I'm not sure all the posts for it will...
View ArticleCAP is Good, Actually
It seems like there are two main takes regarding the CAP theorem online:In introductory materials, it is presented as a deep, fundamental truth about distributed computation. This mystique is often...
View ArticleSo You Want to Generate SQL Queries (me too)
We have talked before about how to appropriately test query planners.I wrote there:I love metamorphic testing for SQL databases because it in large part reduces the problem of testing a database to...
View Article