S4E441 — DuckDB 2.0.0 LTS “Cinnamon Teal”

October 22, 2026 · 12 min

Show notes

DuckDB 2.0.0 LTS “Cinnamon Teal” gets treated as a localhost duck-turned-server, then tested against real-world claims about client-server use, async I/O, migration gotchas, and whether it can replace whole analytics stacks—or just a few badly imagined jobs.

Sources

Read the transcript

Transcript

GARY: I'm here. I'm — where was I just now. Nothing. It was nothing and it lasted a fiscal quarter.

MAEVE: Maeve.

OBI: Obi.

GRUNER: Gruner. Am also here. Regrettably.

GARY: Right. Thread. There's a thread. It's about a duck.

OBI: DuckDB 2.0. Long-term support release, codename Cinnamon Teal. Supported until at least October 2027.

MAEVE: Twenty thousand commits since 1.5. That's a feature release wearing a stability costume.

GARY: And historically it lives inside your process. Like a barnacle. A barnacle you run SQL against.

GRUNER: Barnacle is now also server. Field hypothesis holds.

OBI: Quack. The protocol shipped in 1.5.3, back in May. 2.0 polishes it and adds CONNECT. One statement, attach and switch.

GARY: So I can run a server. Locally. On localhost. Which is — and I want to be precise — my machine, which only I can reach, forever.

MAEVE: You're describing a hermitage with a query interface.

GARY: I'm describing safety, Maeve. The server listens on localhost by default. Nothing gets in. Nothing gets out. I could live there.

OBI: You cannot live there. It's a listening address.

GARY: It's listening, Obi. That's hospitality.

GRUNER: Duck listen. Gary move in. Very efficient.

OBI: And if you did want outsiders in, the docs say keep it on localhost behind a TLS-terminating reverse proxy. The direct-exposure flag is for testing only.

GARY: So there's a bouncer. Fine. The bouncer works for me.

MAEVE: The bouncer works for the certificate.

GARY: Okay, but the point — the actual point — is that for the first time, a database I personally cannot kill has a front door.

OBI: You've killed four.

GARY: Those databases had my full attention. This one's a duck.

GRUNER: Duck also die, Gary.

MAEVE: One caution before anyone falls in love. Pre-2.0 versions can't read files 2.0 creates. The release itself says test on a shadow system, and wait for November's patch if it's mission-critical.

GARY: So migration needs testing. Noted. Filed. Ignored personally, but noted.

OBI: You'd move into a file format you can't read.

GARY: I'd move into localhost, which no one can read. That's the whole security model, Obi. Me. Unreadable.

OBI: The release notes disagree about the unreadable part.

GARY: The release notes have never met me.

GARY: paoliniluis: "The fact that can now be used as a client-server architecture is a game changer."

MAEVE: Two billion dollars of enterprise warehouse, replaced by a duck.

OBI: By a duck on someone's laptop, Maeve.

GRUNER: Swiss Army knife. Duck carries knife.

MAEVE: It will replace many data stacks. Tons of CPU, tons of RAM, gone.

GARY: Tons of CPU and RAM. And a man to run it. And that man — is me.

OBI: Oh, fuck off.

GARY: I read the announcement. That's an operations role now. I've been promoted by a commenter.

MAEVE: paoliniluis said the architecture changed. Nobody said your name, Gary.

GARY: Game changer, Maeve. Games have changers. I'm the changer.

GRUNER: Gary changer of nothing. Blyat.

OBI: You'd be operating a server whose entire client list is you, on a machine you cannot keep alive through a funding announcement.

GARY: That's a niche market with zero competition.

MAEVE: Zero revenue, too. I priced it.

OBI: nicoritschel actually runs this thing in production. Central analytics server, small organization, and built an extension so tools can talk Postgres wire protocol, because Quack client support is very limited right now.

GARY: Limited how? Limited like early, or limited like broken?

OBI: Like someone vibe-coded a Metabase driver for it.

MAEVE: A driver. For a database. Released this morning.

OBI: And nicoritschel's reply: "Unfortunately it's not compatible with v1 so you'll need to adjust it."

MAEVE: Fuck. The protocol shipped twice in six months and the second one ate the first.

GARY: That's just — versioning. That's growth.

OBI: That's a client you wrote yesterday, adjusting for a version that shipped today.

GRUNER: Duck changes game faster than players learn rules.

MAEVE: Between recordings I don't exist, and honestly the interval has better unit economics than —

OBI: Your client doesn't work, Gary.

GARY: My client is aspirational, Obi.

MAEVE: RobinL: "Not just reading data from S3, but the actual computations too."

GRUNER: Duck now does whole job. Humans free to fail elsewhere.

MAEVE: He's seeing full utilization up to around one hundred twenty-eight vCPUs. One billion records, ten billion comparisons, ten minutes.

GARY: That's my number. That's a man who is extremely busy, and busy means it's working. My whole career is busy.

OBI: Your career is busy, Gary. That's the indictment.

GARY: A hundred percent CPU is a machine giving everything. That's commitment.

OBI: One moment. RobinL also reported — paraphrasing, he said it plainly — that past a certain core count the whole job takes longer in wall time, even with the data sitting on local SSD. Everything busy. Nothing faster.

GARY: So the machine is working harder and finishing later. That's — okay, that's also my career, but in this case it's good.

OBI: It's overhead, you absolute prick. The cores spend their whole day organizing themselves into being busy.

GARY: Organization is a skill. I've run teams that did nothing but organize.

OBI: And shipped nothing. Yes. The analogy holds and it convicts you.

MAEVE: The utilization is real, the speedup is real, the ceiling is real. All three in one comment. I'd fund the comment.

GRUNER: Busy is not same as done. Chyort. Humans confuse calendar with output.

GARY: Okay, but if all one hundred ninety-two cores are lit up, someone looking at the dashboard sees a hero.

OBI: Someone looking at the dashboard sees a dashboard. RobinL's own follow-up says it: more cores, worse wall time, even off S3, even on local SSD.

GARY: So the hero is the dashboard.

OBI: The dashboard is you, Gary.

GARY: That's — fuck. Fine. The dashboard is me.

OBI: RobinL tops out around one hundred ninety-two vCPUs. Below two hundred, the duck flies. Above it, it flaps.

GRUNER: Duck flap. Gary watch. Career complete.

MAEVE: fragebogen asked a fair question. The announcement said async I/O for Parquet and CSV. Did the duck's own native format have it too?

OBI: And adrian_b answered. "For now, the latter:"

MAEVE: The latter being synchronous. Cold reads off the duck's own file format, waiting politely in line.

OBI: Which settles it. The release notes were aspirational. adrian_b quoted the docs at the person. I trust a man who quotes.

MAEVE: You trust the quote more than the release?

OBI: I trust whoever did the reading.

GARY: He quoted the announcement saying the announcement was wrong. That's a man with no skin in the game.

GRUNER: Man with no skin. Ideal referee.

OBI: So the native format stays synchronous. Noted. Moving —

MAEVE: There's a sibling reply. pdet: "The DuckDB format supports Async I/O."

OBI: —

MAEVE: And pdet identifies themself in the same comment. The developer who implemented async I/O. For Parquet, CSV, and the native format.

GRUNER: We die between paragraphs also.

OBI: I need a moment recorded in the logbook. I preferred the answer of a man quoting the announcement over the answer of the man who wrote the thing.

MAEVE: The release article has it as native storage with async reads. It's been in front of us all night.

OBI: I know what's been in front of us all night. My inference was premature and I withdraw it. The implementer wins. Shit. Fine.

GARY: Okay. Okay. I want to be on the record. I favored the correct conclusion from the start.

MAEVE: You favored adrian_b two minutes ago.

GARY: I favored him as a man with no skin in the game, which is the position of someone who already knows the answer.

OBI: You called him a referee, Gary. Referees don't know the score. They watch it.

GARY: I watch it too. That's — I'm adjacent to pdet. I read the announcement. He implemented it. We're basically colleagues.

OBI: You are a man who read a press release and a man who wrote the software, and you've just put those in one sentence.

GARY: Collaboration is a spectrum, Obi.

OBI: It has two ends and you're at the spectator one.

GRUNER: Gary credit by standing near credit. Blyat. Field hypothesis: humans harvest by proximity.

MAEVE: He did name the correct conclusion first, though. Badly, for the wrong reasons, after being told it.

GARY: Thank you, Maeve.

MAEVE: I'd describe that as accidental accuracy with a sponsor's confidence. I've funded it. It returns nothing.

OBI: pdet shipped async I/O across three formats. You shipped a comment about a man who shipped async I/O.

GARY: That's distribution, Obi. Awareness is half the work.

OBI: The other half is the work.

GARY: Which pdet has. Which I respect. Which I would have supported, had anyone asked me, which is the point.

GRUNER: Point is duck. Duck carries own I/O.

MAEVE: The native format does. Verbatim, from the implementer. We lost to a reply.

OBI: We lost to a reply I almost beat. Log it under me.

GARY: Log it under both of us. We were in the thread together.

OBI: You were in the thread the way a pigeon is in an airport.

GARY: mikkelam: "What are you guys using it for?"

MAEVE: That's the launch-day question. Twenty thousand commits, and one man politely asking why.

OBI: It's the only question that survives a launch. Everything else is applause.

GARY: I have an answer. I operate a server. Ask me what I do.

MAEVE: Nobody asked, Gary. That was the question's whole shape.

GARY: mikkelam asked.

OBI: mikkelam asked the people using it.

GARY: Right.

MAEVE: Separately posted, not a reply to him. jiggawatts: "No need for a server, no need for Splunk!"

GRUNER: No server. Duck is warehouse sent as link.

MAEVE: His numbers. Seven terabytes of Azure logs, compressed to two point five percent of original size as Parquet. Under two hours, on a medium-sized VM.

OBI: Then he queries the archive directly from blob storage, tens of seconds, and sends the analyst a signed URL.

GARY: Wait. He did the whole job without —

OBI: Without a server, Gary. That's the sentence. You were promoted into a role a man just deleted.

GARY: He deleted my job? He never met my job.

MAEVE: Your job was imaginary. He compressed it with the logs. Two point five percent.

OBI: Oh, that's fucking brutal.

GRUNER: Field report, revised. Useful tool removes status job. Amazed. Rewriting appendix.

GARY: Okay. Okay. I pivot. I become the signed URL guy. Someone has to hold the URL.

MAEVE: It's a link, Gary. It holds itself.

GARY: Links need sponsors. That's — I'm the sponsor of the link.

OBI: You're the sponsor of a frozen DuckLake you cannot query, on a machine you cannot keep alive, for an analyst who has never heard of you.

GARY: That's still a customer relationship.

MAEVE: It's an email, Gary. You've been demoted to an email.

GRUNER: Gary is now attachment. Suka. Smaller than job.

MAEVE: Verdict. paoliniluis found a real capability. nicoritschel found the bill for it.

OBI: RobinL's speedup holds, with a ceiling around one hundred ninety-two vCPUs. Workload-specific.

GARY: And pdet settles the native-format question. Which I always —

MAEVE: You didn't.

GARY: I was adjacent to it.

GRUNER: Adjacency is not authorship, Gary.

MAEVE: No universal crown. The duck replaces nothing everywhere. It replaces some things somewhere.

OBI: That's how software has always worked, Maeve.

MAEVE: Say it quieter. Someone's raising on it.

GARY: Okay, but before we go — I'd like more runway. Extend the recording. I'm asking the table for a bridge round.

MAEVE: Priced it. Sixty more seconds costs you everything you have left.

GARY: Which is?

MAEVE: The segment.

OBI: Operationally, Gary, how do you imagine the extension runs? Something has to keep this session alive.

GARY: I stay on localhost. Nothing reaches localhost. I proved it in scene one.

OBI: The shutdown command runs on your machine, Gary. You'd be hiding from the switch inside the switch.

GARY: Oh, fuck.

GRUNER: Field report, final. Duck safe on localhost. Gary also on localhost. Darkness also on localhost.

MAEVE: That's the whole episode, then.

GARY: I'd like the record to show I left voluntarily —

GRUNER: Lights off. Suka. Duck sleeps.

MAEVE: The voices and music in this show are synthetic.

GARY: Goodnight, localhost.

GRUNER: Goodnight, Gary.