# DuckDB 2.0.0 released with async Parquet I/O and Spark dialect mode

> **Key takeaway:** DuckDB 2.0.0 'Cyanoptera' adds asynchronous Parquet read/write, a Spark compatibility mode, aggregate state export for more functions, and CTE-based optimizations for rollup/cube queries.

**Published:** 2026-10-21T13:11:38+00:00 
**Source:** DuckDB Analytical Engine 
**Category:** databases-storage 
**Canonical URL:** https://fosswire.org/news/duckdb-200-released-with-async-parquet-io-and-spark-dialect-.html 

## Summary
DuckDB 2.0.0 'Cyanoptera' is now available. The release introduces asynchronous I/O for Parquet files on local storage, a new `dialect_compatibility_mode='spark'` setting for Spark SQL compatibility, and performance improvements including CTE-based cascading aggregation for rollup/cube/grouping sets queries. Aggregate state export has been expanded to cover quantile, median, mad, list, any_value/first/last, arg_min/arg_max, string_agg, and ordered aggregates. Other additions include static linking support for C-API extensions, MERGE INTO in triggers, and RETURNING support for tables with triggers.

## What's new in DuckDB 2.0.0
- **Async Parquet I/O**: Both reads and writes to Parquet files are now asynchronous for local files, with a new `debug_local_file_system_delay_ms` setting for testing async behavior
- **Spark dialect mode**: New `SET dialect_compatibility_mode='spark'` enables Spark SQL compatibility
- **CTE-based aggregation optimization**: Rollup, cube, and grouping sets queries are now folded into CTEs to enable cascading aggregation for better performance
- **Expanded aggregate state export**: Now supports quantile, median, mad, list, any_value/first/last, arg_min/arg_max, string_agg, and ordered aggregates
- **Static linking for C-API extensions**: Extensions can now be statically linked via the C API
- **Trigger enhancements**: MERGE INTO is now allowed in triggers, and RETURNING clauses work with tables that have triggers
- **Variant type improvements**: New `variant_array_length`, `variant_comparator`, `VariantIterator`, and better shredded vector handling

## Why it matters
The async Parquet I/O and Spark compatibility mode lower barriers for data engineers migrating from Spark pipelines, while the expanded aggregate state export enables more efficient incremental analytics workflows.