Paul Dix
๐ค SpeakerAppearances Over Time
Podcast Appearances
Prometheus and PromQL is written in Go.
And I knew from basically historical experience with the Prometheus project that Prometheus has a very extensive test suite for PromQL that is outside of the... It's actually like they have a whole DSL that's basically this text-based thing where they can define data input, the query, and the expected result.
And they built all this tooling originally so that they could validate
compatibility for various Prometheus backends, right?
Prometheus being the canonical example, but then other things like Cortex and all the other cloud provider specific Prometheus backends, right?
There are probably at this point, at least a dozen or two dozen backends that support PromQL as a query language.
And you can use these tests
With this, it's actually in the Prometheus repo.
So basically, there's a bunch of Go code as a test runner, and there are all these tests.
My thesis was, well, the agents do a lot better job if you give them verification signals that they can use.
So I thought...
why not have the agent try to create a port of the Prometheus PromQL implementation in Go over to Rust so that we can have just native PromQL support in FluxDB 3?
Yeah, that makes sense.
Right?
I was just like, okay, I had a rough idea of how I wanted to look.
I said, first, go look at the, you know, I checked out the Prometheus code base because it's all Apache 2 licensed open source.
I was like, go look at the Go codebase, create a document that summarizes that, specifically focused on the Prometheus query language, not on all the other parts.
And focus on the test runner because I'm going to have you create a test runner in Rust that we can put into InfluxDB, which I had separately.
So I created that and then I said, okay, here's how we're gonna organize the code within the project.
And I knew I didn't want it touching the existing database code base, right?