2.0.0
DuckDB v2.0.0 "Cyanoptera"
This release of DuckDB is named "Cyanoptera" after Spatula Cyanoptera, a species of duck found in western North and South America.
Please also refer to the announcement blog post: https://duckdb.org/2026/10/21/announcing-duckdb-200.html
What's Changed
- Make
Identifiera class instead of using string everywhere by @Mytherin in https://github.com/duckdb/duckdb/pull/23161 - Move to tidy-check diff again by @Mytherin in https://github.com/duckdb/duckdb/pull/23196
- Step 3: Make duplicate eliminator optimizer logic work for CTE rewrite by @kryonix in https://github.com/duckdb/duckdb/pull/23187
- Allow
MERGE INTOin triggers by @Dtenwolde in https://github.com/duckdb/duckdb/pull/23179 - RETURNING support for tables with triggers by @krleonid in https://github.com/duckdb/duckdb/pull/23153
- Remove special formatting code for main CMakeLists.txt by @Mytherin in https://github.com/duckdb/duckdb/pull/23211
- Expand aggregate state export to work with lists (
StateListType) and sort keys (StateSortKey), and add aggregate state export tolist,any_value/first/last,arg_min/arg_maxby @Mytherin in https://github.com/duckdb/duckdb/pull/23199 - Initial implementation of
variant_array_lengthprocessing function by @sebastiaan-dev in https://github.com/duckdb/duckdb/pull/23167 - Add row group count to parquet RETURN_STATS by @pdet in https://github.com/duckdb/duckdb/pull/23218
- Unify
ProfilerPrintFormatandExplainFormat, remove special casing and move towards pluggable tree renderers by @Mytherin in https://github.com/duckdb/duckdb/pull/23222 - Rework
quantileto uselistinfrastructure by @Mytherin in https://github.com/duckdb/duckdb/pull/23228 - Add
decimal_averageaggregate function by @Dtenwolde in https://github.com/duckdb/duckdb/pull/23097 - Step 4: Make unnest rewriter recognize CTE-based plans by @kryonix in https://github.com/duckdb/duckdb/pull/23240
- Rework ordered aggregates to use the
listinfrastructure by @Mytherin in https://github.com/duckdb/duckdb/pull/23231 - Pluggable combine types rules by @yan-alex in https://github.com/duckdb/duckdb/pull/23173
- Auto generate
select.gramby @Dtenwolde in https://github.com/duckdb/duckdb/pull/23236 - Unify quantile
update/combinecallbacks with the list aggregate by @Mytherin in https://github.com/duckdb/duckdb/pull/23247 - Add
JSONBenchto the benchmark suite by @Mytherin in https://github.com/duckdb/duckdb/pull/23265 - Add support for static linking C-API extensions by @Maxxen in https://github.com/duckdb/duckdb/pull/22251
- Add
vertex_extractfunction to get coordinates out of point-geometries by @Maxxen in https://github.com/duckdb/duckdb/pull/23252 - [Dev] Resolve
DEFAULTs for INSERT/UPDATE/MERGE_INTO at bind-time rather than plan-time by @Tishj in https://github.com/duckdb/duckdb/pull/23033 - Consistent ordering for gen files in package_build by @staticlibs in https://github.com/duckdb/duckdb/pull/23267
- Transform type literals into unbound logical types by @d-justen in https://github.com/duckdb/duckdb/pull/23237
- Remove UnaryAggregateDestructor, and instead fold it into UnaryAggregate by @Mytherin in https://github.com/duckdb/duckdb/pull/23268
- Add comment policy for bots by @Mytherin in https://github.com/duckdb/duckdb/pull/23272
- Fix null sentinel for keys in dict vector (Arrow) by @evertlammerts in https://github.com/duckdb/duckdb/pull/22648
- Parquet: add expression stats pruning for arithmetic filters by @Damon07 in https://github.com/duckdb/duckdb/pull/23264
- Add
init_local_state_finalizecallback to aggregate functions which allows them to create aFunctionLocalStatethat is persisted acrossFinalizecalls, and use this to speed up ordered aggregates by @Mytherin in https://github.com/duckdb/duckdb/pull/23270 - fix out-of-bounds read in strict time parsing by @jmestwa-coder in https://github.com/duckdb/duckdb/pull/23266
- Add support for
string_aggto export its state by making separators part of the signature by @Mytherin in https://github.com/duckdb/duckdb/pull/23271 - Remove redundancies in join filter creation by @d-justen in https://github.com/duckdb/duckdb/pull/23250
- Add setting
force_update_to_del_and_insertwhich forces updates to always be converted to delete and inserts by @Mytherin in https://github.com/duckdb/duckdb/pull/23281 - [Variant] Implement
SetVectorTypeforShreddedVectorBufferby @Tishj in https://github.com/duckdb/duckdb/pull/23280 - Commits on top of PR #20859 by @lnkuiper in https://github.com/duckdb/duckdb/pull/23282
- Dead node counting fixes by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/23289
- Add support for
quantile,median,madto aggregate state export by @Mytherin in https://github.com/duckdb/duckdb/pull/23285 - Optimize rollup / cube / grouping sets queries by folding them into CTEs to allow for cascading aggregation by @Mytherin in https://github.com/duckdb/duckdb/pull/23287
- Async Parquet Writes by @lnkuiper in https://github.com/duckdb/duckdb/pull/23283
- Step 5: Make Mark to Semi join conversion more stable by @kryonix in https://github.com/duckdb/duckdb/pull/23296
- Add setting: SET dialect_compatibility_mode='spark' by @yan-alex in https://github.com/duckdb/duckdb/pull/23251
- Remove stale PR workflow by @DinosL in https://github.com/duckdb/duckdb/pull/23301
- Fix flaky
AsyncFileWritertest by @lnkuiper in https://github.com/duckdb/duckdb/pull/23300 - [Variant] Fix crash for variant_extract on non-object shredded column by @Tishj in https://github.com/duckdb/duckdb/pull/23303
- Add Parquet ASYNC I/O for local files by @pdet in https://github.com/duckdb/duckdb/pull/23290
- Fix flaky
AsyncFileWritertest by @lnkuiper in https://github.com/duckdb/duckdb/pull/23309 - Simplify subquery planning for provably single-row subqueries by @lnkuiper in https://github.com/duckdb/duckdb/pull/23306
- Add
variant_comparatorwhich ensures variants are ordered / compared in the same manner as native DuckDB values by @Mytherin in https://github.com/duckdb/duckdb/pull/23307 - Add missing import / fix non-unity builds by @evertlammerts in https://github.com/duckdb/duckdb/pull/23308
- Pass
ParserOptionsin default macro generation by @nicholasjng in https://github.com/duckdb/duckdb/pull/23288 - [Dev] Refactor
MultiFileReader::GetVirtualColumnExpressionandBaseFileReader::expression_mapby @Tishj in https://github.com/duckdb/duckdb/pull/22928 - Allow slicing of shredded vectors, and fix issue with shredded vectors being fed into
StructVector::GetEntriesby @Mytherin in https://github.com/duckdb/duckdb/pull/23312 - Auto generate transform
expression.gram(Part 8) by @Dtenwolde in https://github.com/duckdb/duckdb/pull/23310 - Add
VariantIteratorwhich allows traversal of variant values without unshredding by @Mytherin in https://github.com/duckdb/duckdb/pull/23317 - Remove specialized variant comparison code by @Mytherin in https://github.com/duckdb/duckdb/pull/23319
- Internal #9655: Test Vector DOUBLE[3] by @hawkfish in https://github.com/duckdb/duckdb/pull/23320
- Add export/import callbacks for aggregates with non-standard state, and support
approx_top_k/approx_quantileby @Mytherin in https://github.com/duckdb/duckdb/pull/23304 - Avoid unnecessary call to ToUnifiedFormat in ColumnSegment filter by @Mytherin in https://github.com/duckdb/duckdb/pull/23324
- CMake: Set the extension base directory to the duckdb module dir by @nicholasjng in https://github.com/duckdb/duckdb/pull/23328
- Handle exceptions thrown while recovering from a failed commit by @Huey97 in https://github.com/duckdb/duckdb/pull/23298
- Use optional semantic values for generated transformer rules by @Dtenwolde in https://github.com/duckdb/duckdb/pull/23332
- [Parquet] Fix corrupted file invalidating the database by @Tishj in https://github.com/duckdb/duckdb/pull/23331
- Report in check_peg_parser parse errors by @fallintoplace in https://github.com/duckdb/duckdb/pull/22975
- Step 6: Flip the switch and have delim join as CTEs by default by @kryonix in https://github.com/duckdb/duckdb/pull/23333
- Add invoke scalar function by @feichai0017 in https://github.com/duckdb/duckdb/pull/23185
- Allow empty STRUCT types by @Maxxen in https://github.com/duckdb/duckdb/pull/23273
- Fix uninitialized TransactionContext::invalidation_policy and auto_rollback members by @evertlammerts in https://github.com/duckdb/duckdb/pull/23321
- Propagate shredded stats through
variant_comparatorby @Mytherin in https://github.com/duckdb/duckdb/pull/23336 - AGENTS.md: Drop in-process by @szarnyasg in https://github.com/duckdb/duckdb/pull/23345
- Clean-up VariantIterator API and unify it with vector iterator infrastructure by @Mytherin in https://github.com/duckdb/duckdb/pull/23346
- Support AFTER INSERT FOR EACH ROW triggers by @EtgarDev in https://github.com/duckdb/duckdb/pull/23284
- Add
shredded_vectoroption todebug_verify_vectorby @Mytherin in https://github.com/duckdb/duckdb/pull/23343 - Fix state export finalize with non-zero offset, and update list of skipped tests by @Mytherin in https://github.com/duckdb/duckdb/pull/23349
- Propagate stats in
structured type -> variantcasts by @Mytherin in https://github.com/duckdb/duckdb/pull/23347 - Deprecate Implicit Table-Function Identifier String Conversion by @kryonix in https://github.com/duckdb/duckdb/pull/23350
- Support submodules in extensions patching process by @staticlibs in https://github.com/duckdb/duckdb/pull/23191
- Nicer variable syntax by @Dtenwolde in https://github.com/duckdb/duckdb/pull/21194
- Remove
TransformEnumby @Dtenwolde in https://github.com/duckdb/duckdb/pull/23355 - Quote special object keys in json_each/json_tree fullkey and path by @truffle-dev in https://github.com/duckdb/duckdb/pull/23206
- New
debug_local_file_system_delay_mssetting and asynchronous file initialization/finalization by @lnkuiper in https://github.com/duckdb/duckdb/pull/23353 - Fix leak on pending query close by @evertlammerts in https://github.com/duckdb/duckdb/pull/23344
- Allow table functions to propagate the query return type by @Mytherin in https://github.com/duckdb/duckdb/pull/23358
CompressedMaterializationandJoinFilterPushdownforVARIANTby @lnkuiper in https://github.com/duckdb/duckdb/pull/23356- Use the new
VariantIteratorto unshred instead of first decomposing intoVariantValuefollowed by re-constructing the variant by @Mytherin in https://github.com/duckdb/duckdb/pull/23359 - In variant_extract correctly traverse child stats during stats propagation by @Mytherin in https://github.com/duckdb/duckdb/pull/23361
- Make list aggregate append work on batches of rows instead of per rows and implement cluster update function by @Mytherin in https://github.com/duckdb/duckdb/pull/23380
- [SqllogicTester] Add
--stdinoption to read statements from stdin by @Tishj in https://github.com/duckdb/duckdb/pull/23381 - Add support for state export to ordered aggregates by @Mytherin in https://github.com/duckdb/duckdb/pull/23376
- Clean up examples folder by @d-justen in https://github.com/duckdb/duckdb/pull/23378
- Allow triggering internal join types by @hannes in https://github.com/duckdb/duckdb/pull/23339
- CLI: mode .trash should not force result materialization by @Teggy in https://github.com/duckdb/duckdb/pull/23377
- Fix sleep overflow by @dentiny in https://github.com/duckdb/duckdb/pull/23395
- Add Parquet variant of JSONBench by @Mytherin in https://github.com/duckdb/duckdb/pull/23397
- Fix metadata reader offset advancement by @wufengwind in https://github.com/duckdb/duckdb/pull/23392
- Add support for compressed materialization for geometry points by @Maxxen in https://github.com/duckdb/duckdb/pull/23393
- Enable parser tools (bison) for musl main extensions by @smvv in https://github.com/duckdb/duckdb/pull/23401
- Replace slow 'dd bs=1' calls and verify extensions concurrently by @smvv in https://github.com/duckdb/duckdb/pull/23402
- Add support for pushing collations into lists using
lambda_transform, and add support for collations tolist_contains / list_positionby @Mytherin in https://github.com/duckdb/duckdb/pull/23400 - Merge
v1.5-variegatainto main by @Mytherin in https://github.com/duckdb/duckdb/pull/23403 - Rework parquet variant reading to use
ParquetVariantIteratorand removeVariantValueclass by @Mytherin in https://github.com/duckdb/duckdb/pull/23399 - Add dictionary surviving hash join by @ahmetkarapinar in https://github.com/duckdb/duckdb/pull/23360
- Infer geometry type based on WKB string stats by @Maxxen in https://github.com/duckdb/duckdb/pull/23394
- Feature/ilike constant pattern fastpath by @krleonid in https://github.com/duckdb/duckdb/pull/23406
PhysicalCopyToFileasync fixes and improvements by @lnkuiper in https://github.com/duckdb/duckdb/pull/23418- Fix connection_id regression in EndQueryInternal logging by @rustyconover in https://github.com/duckdb/duckdb/pull/21884
- Use github script to add member label and move PR to draft by @smvv in https://github.com/duckdb/duckdb/pull/23417
- Fix client ctx ref cycle by @evertlammerts in https://github.com/duckdb/duckdb/pull/23372
- Add managed async task queue by @guillesd in https://github.com/duckdb/duckdb/pull/23404
- check for interrupt state in ExecuteTaskInternal by @evertlammerts in https://github.com/duckdb/duckdb/pull/23379
- Fix stale projection maps in ProjectionPullup by @DinosL in https://github.com/duckdb/duckdb/pull/23424
- Skip caching when no version metadata available by @dentiny in https://github.com/duckdb/duckdb/pull/23427
- Clean async tasks after schedule by @dentiny in https://github.com/duckdb/duckdb/pull/23410
- fix: skip deduplication for volatile aggregates and window expressions by @Pratzz1202 in https://github.com/duckdb/duckdb/pull/23413
- Test and fix single-thread async draining by @lnkuiper in https://github.com/duckdb/duckdb/pull/23436
- Fix type inconsistency for thread count variables by @c-herrewijn in https://github.com/duckdb/duckdb/pull/23438
- fix out-of-bounds read in substring with negative offset by @jmestwa-coder in https://github.com/duckdb/duckdb/pull/23429
- Internal #9375: TIME_BUCKET For TIME by @hawkfish in https://github.com/duckdb/duckdb/pull/23411
- Add dictionary-aware cache operator by @ahmetkarapinar in https://github.com/duckdb/duckdb/pull/23447
- Support AFTER DELETE FOR EACH ROW triggers with OLD.col references by @krleonid in https://github.com/duckdb/duckdb/pull/23452
- Bump postgres_scanner, remove patches by @carlopi in https://github.com/duckdb/duckdb/pull/23451
- Sort unordered delete return IDs to stabilize test by @smvv in https://github.com/duckdb/duckdb/pull/23450
- Add support for partial shredded stats emission for parquet variants by @Mytherin in https://github.com/duckdb/duckdb/pull/23439
- Clear stale projection maps after CTE rewrite pass by @kryonix in https://github.com/duckdb/duckdb/pull/23456
- Add
QualifiedNameusage to Function/Type/Window expression, and add hash / equality by @Mytherin in https://github.com/duckdb/duckdb/pull/23455 - Preserve original chunk cardinality in TryProbeConstant by @smvv in https://github.com/duckdb/duckdb/pull/23431
- Emit shredded vectors from Parquet when reading variant columns by @Mytherin in https://github.com/duckdb/duckdb/pull/23454
- Make regex operators match PostgreSQL behaviour by @lnkuiper in https://github.com/duckdb/duckdb/pull/23432
- Implement cryptographic hash functions in
EncryptionUtilby @lnkuiper in https://github.com/duckdb/duckdb/pull/23461 - Add
QualifiedNameusage toDropInfo/AlterInfo/CopyInfoby @Mytherin in https://github.com/duckdb/duckdb/pull/23460 - Add a fast path for reading all-NULL columns in Parquet by @Mytherin in https://github.com/duckdb/duckdb/pull/23464
- Refactor Multi-File Scan for ASYNC I/O by @pdet in https://github.com/duckdb/duckdb/pull/23419
- fix: raise error on invalid
regexp_replacereplacement strings by @Vallabh-1504 in https://github.com/duckdb/duckdb/pull/23422 - Add
QualifiedNameusage to CreateInfo by @Mytherin in https://github.com/duckdb/duckdb/pull/23467 - Make profiling printers pluggable through a
ProfilerExtension, and use this in the CLI to add syntax highlighting toEXPLAIN (ANALYZE)output by @Mytherin in https://github.com/duckdb/duckdb/pull/23470 - Issue #23441: Distinct Self Join by @hawkfish in https://github.com/duckdb/duckdb/pull/23446
- Optimize single-key hash group partitioning performance by @lnkuiper in https://github.com/duckdb/duckdb/pull/23449
- Move
BaseTableReftoQualifiedNameby @Mytherin in https://github.com/duckdb/duckdb/pull/23471 - Add a JSON API and use that instead of calling
yyjsondirectly by @Mytherin in https://github.com/duckdb/duckdb/pull/23466 - Copy table_filters to LHS scan in late materialization by @baolinhuang in https://github.com/duckdb/duckdb/pull/23453
- fix integer overflow when sizing the DELTA_BYTE_ARRAY length buffer by @jmestwa-coder in https://github.com/duckdb/duckdb/pull/23420
- More
QualifiedName, and preserve qualified names as much as possible instead of going back to catalog/schema/name by @Mytherin in https://github.com/duckdb/duckdb/pull/23474 - Fix eviction node memleak when external file cache disabled by @dentiny in https://github.com/duckdb/duckdb/pull/23444
- Add I/O metrics test harness, and fix many places where the
QueryContextwas not passed in correctly by @Mytherin in https://github.com/duckdb/duckdb/pull/23477 - [ASYNC I/O] Refactor Multifile Scan for Read Ahead by @pdet in https://github.com/duckdb/duckdb/pull/23472
- Push down type casts to file readers by @myrrc in https://github.com/duckdb/duckdb/pull/22788
- Finalize hash groups early in
PartitionedCopyby @lnkuiper in https://github.com/duckdb/duckdb/pull/23481 - Optimize flat contiguous string appends to
ColumnDataCollectionby @lnkuiper in https://github.com/duckdb/duckdb/pull/23485 - Push
QualifiedNameintoEntryLookupInfoin Catalog look-ups, and use QualifiedName directly in more places by @Mytherin in https://github.com/duckdb/duckdb/pull/23478 - Fix partial join filter pushdown through projections by @ted-wq-x in https://github.com/duckdb/duckdb/pull/23484
- Transformer trampoline skeleton by @Dtenwolde in https://github.com/duckdb/duckdb/pull/23414
- More
QualifiedNameclean-up, preserveQualifiedNameas much as possible by @Mytherin in https://github.com/duckdb/duckdb/pull/23487 - Avoid using
INVALID_CATALOG/DEFAULT_SCHEMAin identifiers inQualifiedNameby @Mytherin in https://github.com/duckdb/duckdb/pull/23488 - Attached database invalidation scope by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/23468
- Rework
query_treeprofiler renderer - and add syntax highlighting to it in the CLI by @Mytherin in https://github.com/duckdb/duckdb/pull/23475 - Make
QualifiedNameimmutable and instead override the entire qualified name when modified by @Mytherin in https://github.com/duckdb/duckdb/pull/23490 - [WIP] Add support for creating nested schemas by @Mytherin in https://github.com/duckdb/duckdb/pull/23492
- Generate WAL serialization code, instead of manually writing it by @Mytherin in https://github.com/duckdb/duckdb/pull/23495
- Fix time duration calculation by @dentiny in https://github.com/duckdb/duckdb/pull/23293
- [WIP] Add support for dropping nested schemas by @Mytherin in https://github.com/duckdb/duckdb/pull/23497
- Query Profiler: Rework
FORMAT HTMLto an interactive display, and add.webandFORMAT WEBto automatically open in a web browser by @Mytherin in https://github.com/duckdb/duckdb/pull/23494 - Make LogicalGet SupportSerialization check more robust by @kryonix in https://github.com/duckdb/duckdb/pull/23476
- Fix JSON COPY date/time formatting for nested values by @OlexG in https://github.com/duckdb/duckdb/pull/23329
- Internal #9813: dtime_t Type Safety by @hawkfish in https://github.com/duckdb/duckdb/pull/23493
- Improve cache memory estimation on filepath cache object by @dentiny in https://github.com/duckdb/duckdb/pull/23482
- Allow non-"list" LIST child name in remap_struct by @regadas in https://github.com/duckdb/duckdb/pull/23437
- Fix DISTINCT window aggregate ordering by @mohsinsurani in https://github.com/duckdb/duckdb/pull/23491
- Make sure chunks are tightly packed when bypassing the sort by @lnkuiper in https://github.com/duckdb/duckdb/pull/23502
- Fix test runner encoding problem and format julia code on main by @smvv in https://github.com/duckdb/duckdb/pull/23505
- Httplib backport security issues by @ProjectMutilation in https://github.com/duckdb/duckdb/pull/23440
- Add
LogicalType::TUPLEby @Maxxen in https://github.com/duckdb/duckdb/pull/23465 - Collect source-based code coverage for fast tests by @smvv in https://github.com/duckdb/duckdb/pull/23486
- Add error handling around
exportoption by @Dtenwolde in https://github.com/duckdb/duckdb/pull/23508 - autocheckpoint error propagation by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/23510
- bound multi-byte reads in UTF8ToCodepoint by @jmestwa-coder in https://github.com/duckdb/duckdb/pull/23459
- Upload codecov as github artifacts by @smvv in https://github.com/duckdb/duckdb/pull/23509
- Add eager aggregation to PartialAggregatePushdown by @ywelsch in https://github.com/duckdb/duckdb/pull/23506
- Bump aws extension, remove deprecated function by @yan-alex in https://github.com/duckdb/duckdb/pull/23503
- Fuzzer pivot issue with
ConstructConstantFromExpressionby @Dtenwolde in https://github.com/duckdb/duckdb/pull/23511 - Allow more expressions in PositionExpression by @Dtenwolde in https://github.com/duckdb/duckdb/pull/23523
- make unittest cli/config parsing lenient with lists by @benfleis in https://github.com/duckdb/duckdb/pull/23525
- Fix FORCE INSTALL being ignored by new PEG parser by @mlafeldt in https://github.com/duckdb/duckdb/pull/23524
- Add ICU date_diff support for TIMESTAMPTZ_NS by @jingdaws in https://github.com/duckdb/duckdb/pull/23302
- Don't push down CAST if there's a TRY_CAST by @myrrc in https://github.com/duckdb/duckdb/pull/23535
- Address test warning by @dentiny in https://github.com/duckdb/duckdb/pull/23546
- Add helper iterators around SQLStatements (either from the parser or post pre-processing) by @carlopi in https://github.com/duckdb/duckdb/pull/23291
- Rename columns to original names before passing to reader if they were aliased by @myrrc in https://github.com/duckdb/duckdb/pull/23548
- Add windows_undefs to a multi-file reader header by @staticlibs in https://github.com/duckdb/duckdb/pull/23541
- Add
FETCH FIRST/NEXTsyntax by @Dtenwolde in https://github.com/duckdb/duckdb/pull/23533 - Rewrite
LEFTtoANTIif there is aIS NULLfilter on the null-extended side by @lnkuiper in https://github.com/duckdb/duckdb/pull/23550 - Dont special-case geometry stats pruning, pass child stats to filter callback by @Maxxen in https://github.com/duckdb/duckdb/pull/23540
- Issue #18039: Nested Comparison Semantics by @hawkfish in https://github.com/duckdb/duckdb/pull/23539
- Fold empty list contains filters to EMPTY_RESULT by @dentiny in https://github.com/duckdb/duckdb/pull/23543
- Polish, no reference but ClientContext& by @carlopi in https://github.com/duckdb/duckdb/pull/23554
- Bump aws to cloudformation_create_stack by @carlopi in https://github.com/duckdb/duckdb/pull/23558
- Don't allow empty identifiers by @Dtenwolde in https://github.com/duckdb/duckdb/pull/23553
- Fix typo in UNNEST error message (#23532) "at lease" → "at least" by @tempewda in https://github.com/duckdb/duckdb/pull/23538
- Codename 'Cyanoptera' by @carlopi in https://github.com/duckdb/duckdb/pull/23056
- Add ClientContext::BindStatement by @evertlammerts in https://github.com/duckdb/duckdb/pull/23526
- [MultiFileReader] Add virtual
GetMetadatafunction by @Tishj in https://github.com/duckdb/duckdb/pull/23571 - Implement
CONNECT '<uri>' [(OPTS...)]as ephemeral attach by @carlopi in https://github.com/duckdb/duckdb/pull/23555 - Optimizer: use UTF-8 successor for LIKE prefix pushdown by @wufengwind in https://github.com/duckdb/duckdb/pull/23559
- Improve connect integration by @carlopi in https://github.com/duckdb/duckdb/pull/23576
- Propagate client context for stats fetch by @dentiny in https://github.com/duckdb/duckdb/pull/23582
- Fix ART iterator crash on empty table close range scan (#23064) by @preksha-kamalesh in https://github.com/duckdb/duckdb/pull/23573
- Make
chains_longer_than_oneinJoinHashTableanatomicby @lnkuiper in https://github.com/duckdb/duckdb/pull/23597 - Add regression test for foreign key violation message by @kalyanamdewri in https://github.com/duckdb/duckdb/pull/23584
- Configurable approximate join order threshold by @jonaskr8 in https://github.com/duckdb/duckdb/pull/23530
- Add parquet as ducklake dep by @smvv in https://github.com/duckdb/duckdb/pull/23598
- Disable function coverage in report to remove 5k HTML pages by @smvv in https://github.com/duckdb/duckdb/pull/23600
- bump sqlsmith by @c-herrewijn in https://github.com/duckdb/duckdb/pull/23632
- Fix stats collection for dictionary encoding by @dentiny in
These notes run past the length kept in the archive. The rest is on the publisher’s page.