DuckDB released version 2.0.0 on October 21, 2026, as a long-term support (LTS) release that the project will support until at least October 2027. It adds a built-in server mode, SQL triggers and a new parser. It also makes a one-way change: database files written by 2.0 cannot be opened by any earlier version, so upgrades need a plan.
DuckDB is an open-source SQL database for analytics. Like SQLite, it runs inside your program rather than as a separate server. Unlike SQLite, it is built for big analytical queries over large tables and files such as Parquet and CSV.
What DuckDB 2.0 adds
The DuckDB announcement calls 2.0 the team's largest feature release so far, built from close to 20,000 commits since version 1.5. "DuckDB 2.0 is above all a feature release," the DuckDB team writes. The release is codenamed "Cinnamon Teal," after the duck species Spatula cyanoptera. The GitHub release uses the name "Cyanoptera."
| Feature | What it does |
|---|---|
| Quack server mode | Runs DuckDB as a server that other clients connect to |
| Triggers |
CREATE TRIGGER runs SQL automatically, before or after a change to a table |
| VARIANT type | Stores semi-structured data, such as JSON, and splits out its common structure for better compression and speed |
| Async I/O | Reads Parquet and CSV files while queries run, with several requests in flight, mainly to speed up cloud storage like Amazon S3 |
| New SQL parser | A PEG-based parser is now the default; extensions can add their own SQL syntax, and errors show where the problem is |
| Native time zones | Time zones, calendars and collations no longer need the ICU library |
A trigger is a rule stored in the database: when a row changes, run this SQL too. DuckDB 2.0 supports BEFORE and AFTER triggers, at row or statement level. Some combinations are not supported yet, such as a BEFORE ... FOR EACH ROW trigger on UPDATE.
Quack turns DuckDB into a server
Until now, DuckDB served one program at a time. With Quack, CALL quack_serve(...) starts a server, and a client connects with ATTACH 'quack:...'. A new CONNECT statement switches a whole session to a remote database. The command-line tool gains matching -serve and -connect flags.
The server listens only on the local machine by default. For remote access, the DuckDB team recommends putting it behind a reverse proxy that handles TLS encryption. InfoWorld reported in August that Quack also makes it easier to query PostgreSQL and MySQL databases remotely.
Breaking changes to check before upgrading
According to the release post and the GitHub release notes, these changes can break existing code or builds:
- Files are one-way. DuckDB 2.0 reads and writes existing database files. "DuckDB versions before 2.0 cannot read database files created by DuckDB 2.0," the team warns.
-
New parser by default.
SET enable_legacy_parser = true;brings back the old one. -
Single-arrow lambdas are off. Syntax like
x -> x + 1is disabled.SET lambda_syntax = 'enable_single_arrow';turns it back on until version 2.1 removes it. - Integer division by zero now raises an error instead of returning NULL.
- Builds need C++17, up from C++11, and release builds now use the Clang compiler. Amalgamation builds are deprecated.
- Intel Macs are being phased out. Community extensions are no longer built for macOS on x86_64, and DuckDB 2.1 drops support.
The sources disagree on one detail. InfoWorld's preview described a stable C API for extensions. The release post says the revamped C API v2 is "not yet marked as stable," because the team wants to test it in the field first.
Support windows
| Version | Supported until |
|---|---|
| DuckDB 2.0 (LTS) | At least October 2027 |
| DuckDB 1.5 | March 2027 (extended) |
| DuckDB 1.4 | Late November 2026 |
What this means for developers
Treat this as a planned migration, not a routine bump.
- Copy your database files before the first open. Once DuckDB 2.0 writes to a file, an older tool or teammate on 1.5 can no longer read it. Upgrade every reader of a shared file together.
- Test on a copy of production. The DuckDB team recommends a shadow system first. For mission-critical work, it suggests waiting for the first patch release, due in November.
- Check your client. The command-line tool and Python client are ready now. Go, R and Java clients, and some extensions, "may take a few days," the team says.
- Search your SQL for two patterns. Look for single-arrow lambdas and any integer division that could hit zero. Both behave differently now.
- Do not expose a Quack server directly. Keep it on localhost, or put a TLS reverse proxy in front, as the team advises.
- Teams on 1.4 should move first. Its support ends in late November 2026, so upgrade to 2.0, or to 1.5 for a smaller step.
This article was first published on Tech AI Wire.
Also available in
Deutsch · 日本語 · Français · Español · Português
Sources
- Announcing DuckDB 2.0.0 - DuckDB
- DuckDB v2.0.0 release notes - GitHub
- DuckDB 2.0 coming this fall with client-server mode - InfoWorld
Top comments (0)