logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·29.10.26
← Back to news

DuckDB 2.0.0 LTS “Cinnamon Teal”

Original article
duckdb.org|239 points|27 comments|by nnx|Oct 21, 2026

Introducing DuckDB 2.0.0 LTS: “Cinnamon Teal”

The DuckDB team is thrilled to unveil DuckDB version 2.0.0 LTS, codenamed “Cinnamon Teal” (inspired by the Spatula cyanoptera, a vivid reddish-brown duck native to the western Americas).

This release represents our most significant leap in functionality to date. Since the launch of DuckDB 1.5, we have integrated nearly 20,00020,00020,000 commits to bring you a polished Quack protocol, asynchronous I/O, a first-class VARIANT type, agent mode, triggers, and a more flexible SQL parser.

Core Philosophy: While the 1.0 milestone focused on backward compatibility and stability, DuckDB 2.0 is primarily a feature-driven release.

For those seeking a deeper dive, we recommend our “A Preview of DuckDB v2.0” guide or the full GitHub release notes.


🛠️ Installation & Support Lifecycle

To get started, head over to the installation page.

  • CLI & Python: Available now.
  • Go, R, Java: Coming in a few days (pending final reviews).
  • Extensions: Rolling out shortly.

Support Matrix

We are currently maintaining three distinct release lines to ensure a seamless migration path:

VersionStatusSupport End DateNote
2.0.0LTSOctober 2027Current flagship feature release
1.5LTSMarch 2027Support extended to facilitate testing
1.4LTSNovember 2026Legacy long-term support

🌐 DuckDB as a Server: The Quack Protocol

DuckDB was strictly an in-process database. While it remains highly efficient in-process, DuckDB 2.0 evolves the Quack protocol (introduced in v1.5.3) to enable a traditional client-server architecture.

The CONNECT Statement

We've introduced the CONNECT command to streamline the process of attaching to and switching into a remote database.

Example Workflow:

Server Side:

-- Start the server
CALL quack_serve ( token = 'my_token' ); 
CREATE TABLE events ( date DATE, name VARCHAR ); 
INSERT INTO events VALUES ( '2027-04-07', 'DuckCon #8' );

Client Side:

-- Attach and switch session
ATTACH 'quack:localhost' AS qk ( TOKEN 'my_token' ); 
CONNECT qk ; 
SELECT * FROM events ;

Security Note: To expose the server to other machines, place it behind a TLS-terminating reverse proxy. The allow_other_hostname setting is intended strictly for testing.

Beyond Quack: The CONNECT statement also works with PostgreSQL and MySQL. Our new remote pushdown optimizer ensures that queries are executed on the remote server, avoiding the need to pull massive tables across the network.

CLI Integration

The CLI now supports streamlined flags for server management:

  • duckdb -serve: Launches a Quack server.
  • duckdb -connect: Connects to an existing server.

🚀 Performance Enhancements

Asynchronous I/O

DuckDB 2.0 implements asynchronous I/O for CSV and Parquet files. By decoupling the I/O layer from query processing, the system can maintain multiple concurrent requests in flight.

This results in a massive boost for remote storage (e.g., s3://), where network latency is a bottleneck.

Throughput≈Parallel Requests×Bandwidth per Request\text{Throughput} \approx \text{Parallel Requests} \times \text{Bandwidth per Request}Throughput≈Parallel Requests×Bandwidth per Request

Network Throughput Visualization Figure 1: Comparison of network throughput showing the efficiency of asynchronous reads.


🧬 The VARIANT Type: First-Class Support

The VARIANT type allows for the storage of semi-structured, schema-less data (similar to JSON) without sacrificing the speed of columnar execution.

Key Improvements:

  • Shredding: DuckDB 2.0 automatically detects common structures and "shreds" them for superior compression and execution speed.
  • End-to-End Pipeline: Shredded execution persists from storage through to Parquet read/write operations.
  • Tooling: A new suite of variant_* functions is now available.

Example Usage:

CREATE TABLE events ( payload VARIANT );

INSERT INTO events VALUES 
( '{"user": {"id": 42, "tags": ["a", "b"]}}' :: JSON :: VARIANT ), 
( '{"event": "click", "x": 10, "y": 20}' :: JSON :: VARIANT );

SELECT variant_type(payload), variant_keys(payload) FROM events;
variant_type(payload)variant_keys(payload)
OBJECT[user]
OBJECT[event, x, y]

🤖 Agent Mode in the CLI

With the rise of AI coding assistants like Claude Code, Codex, and Cursor, the CLI now includes a specialized Agent Mode.

When DuckDB detects it is being operated by an AI agent, it automatically adjusts its output:

  • Standard Mode: Pretty-printed tables for humans.
  • Agent Mode: Compact Markdown tables for easier LLM parsing.