DEV Community

Cover image for DuckDB 2.0 LTS adds server mode, triggers and VARIANT
techaiwire
techaiwire

Posted on Originally published at techaiwire.com

DuckDB 2.0 LTS adds server mode, triggers and VARIANT

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 + 1 is 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

Top comments (0)