khazana — your personal signal terminal khazana — your personal signal terminal
No. 030 eng-blog gh-rel-duckdb 75

DuckDB v1.5.0 "Variegata"

This release of DuckDB is named "Variegata" after the paradise shelduck Tadorna Variegata, also known as the paradise duck, a species of Shelduck (a group of goose-like ducks), endemic to New Zealand. Please also refer to the announcement blog post:…

data-science data-strategy tech

25 min read open original ↗

This release of DuckDB is named "Variegata" after the paradise shelduck Tadorna Variegata, also known as the paradise duck, a species of Shelduck (a group of goose-like ducks), endemic to New Zealand. Please also refer to the announcement blog post: https://duckdb.org/2026/03/09/announcing-duckdb-150.html What's Changed Optimize LAST aggregate to iterate backward within batches by @xe-nvdk Allow user type with schema defined to have array bounds by @Dtenwolde in #18342 Remove case-insensitive character from grammar files by @Dtenwolde in #18948 Fix query() function error message for PIVOT statements without explicit IN clauses by @shivampr in #18900 Merge v1.4-andium into main by @c-herrewijn in #18952 [Dev] Some light code cleanup in RemoveUnusedColumns::VisitOperator by @Tishj in #18964 Support renaming a database - ALTER DATABASE <> RENAME TO <> by @abramk in #18970 V1.4 andium by @Mytherin in #18982 Fix field id uniqueness for alter database by @abramk in #18988 Fix unused variable warnings by @mlafeldt in #18913 Avoid adding a TupleDataChunkPart with only one row. by @lance5401 in #18904 Tiny fix for ColumnDataAllocator::ColumnDataAllocator by @baolinhuang in #18990 Fixes for ALTER DATABASE - use serialization framework, and fix stringification of identifiers by @Mytherin in #18994 Expected errors 2053 by @hmeriann in #18960 Fix union semantics in recursive CTEs by @cryoEncryp in #19017 Multifile parquet_metadata and friends parallelism by @J-Meyers in #18854 [Optimize] use StorageLock for CompressionFunction by @baolinhuang in #19028 PEG grammar updates by @Dtenwolde in #19031 Rework Compression Function registration to avoid grabbing locks by @Mytherin in #19045 Merge v1.4 into main by @Mytherin in #19048 [C-API] default to adding overload on conflict when registering functions by @Maxxen in #19036 Destroy row groups in parallel by @Mytherin in #19053 Switching core extension upload to dedicated credentials by @hannes in #19060 CI: Increase stale bot timeout to 1 year by @szarnyasg in #19000 Revert "set default value of MAIN_BRANCH_VERSIONING to false" by @c-herrewijn in #19057 Fix extension load by @dentiny in #19079 Change core extensions bucket name by @hannes in #19082 Merge v1.4 into main by @Mytherin in #19098 Allow directory override for extension build by @Mytherin in #19110 Skip serialization of row_start in DataPointer when targeting latest storage by @Mytherin in #19111 [C-API] Initial support for accessing file system by @Maxxen in #19086 Rework UNION (ALL) operators (SetOperationNode/LogicalSetOperation/PhysicalUnion) to have multiple children by @Mytherin in #19109 pushdown filter when doing cross or lateral join with unnest by @DinosL in #19085 Fix unholy interaction between CREATE VIEW and CTE definitions by @kryonix in #19116 Add support for read_duckdb - a function that allows reading / globbing DuckDB database files by @Mytherin in #19108 Fix typo by @szarnyasg in #19130 fix: check tree depth and flatten dep join for custom operator extension by @Wal8800 in #19094 During optimistic writing, gather N row groups and write them at the same time column-at-a-time by @Mytherin in #19118 Remove unused code by @szarnyasg in #19134 Add support for late materialization and filter pushdown to read_duckdb by @Mytherin in #19145 Move storage block prefetching to an option instead of baking in testing during ALTERNATIVE_VERIFY + add a test config for this option by @Mytherin in #19146 Introduce parser_override_function_t by @Dtenwolde in #19126 Perform deduplication based on join_keys when building ht by @tianjq16 in #19097 Print help to stdout by @staticlibs in #19170 Validate filesystem registration by @dentiny in #19168 Fix missing replacement scan code for CTEs by @kryonix in #19159 Correctly set row start in WAL replay by @Mytherin in #19192 Use a PartialBlockManager per column, instead of sharing one over the entire row group by @Mytherin in #19194 Internal #5380: AsOf Join Pipeline by @hawkfish in #19169 Cross and lateral join pushdown with unnest or json - update by @DinosL in #19152 Missing error messages for test cases by @hmeriann in #19129 [Profiling] Move EXTRA_INFO into the metrics map by @maiadegraaf in #19124 Common Subplan Elimination by @lnkuiper in #19080 GEOMETRY Rework: Part 1 - Logical Type by @Maxxen in #19136 [Parquet] Implement (unshredded) VARIANT support for COPY TO parquet by @Tishj in #19125 Add more missing error messages to test cases by @hmeriann in #19210 [CI] - Fix failing Extension updating test NightlyTests job by cleaning up some space on the runner by @hmeriann in #19214 Inconsistent semicolon handling by @Dtenwolde in #19199 Internal #5383: Range Join Sorting by @hawkfish in #19174 [Profiling] Add QueryContext to more functions, for Reads by @maiadegraaf in #18726 Merge v1.4-andium into main by @Maxxen in #19225 [shell] Fix tilde parsing for .once statement by @dentiny in #19254 Partially remove BoundQueryNode - have Bind directly emit a BoundStatement by @Mytherin in #19289 Binder clean-up by @Mytherin in #19293 test: add test for CREATE TABLE with my_schema.my_enum[] by @NickCrews in #19296 Fix uncaught exception in test_empty_profiling_settings.test by @maiadegraaf in #19286 GEOMETRY Rework: Part 2 - Statistics by @Maxxen in #19203 Internal #5380: AsOf Sorting Conversion by @hawkfish in #19278 Add option for opt-in to parser override by @Dtenwolde in #19181 Remove BoundTableRef and make binding a TableRef directly return a BoundStatement by @Mytherin in #19294 Rewrite Grouped Top-N Window Functions To Aggregations by @d-justen in #19280 Perform optimistic reads while filling gaps in CachingFileSystem by @carlopi in #19122 Issue #19027: AsOf Join Predicates by @hawkfish in #19316 Enable experimental metadata re-use by default by @Mytherin in #19317 Binder: BoundQueryNode cleanup by @Mytherin in #19322 Remove old sort code by @lnkuiper in #19321 [Parquet] Implement shredded VARIANT support for COPY TO parquet by @Tishj in #19219 Merge andium into main by @Tishj in #19325 [C API] Expose column count and type for table description by @taniabogatsch in #19334 Relocate the python sqllogic code to the dedicated repository by @Tishj in #19340 Binder: Rework the way set operations work so that we can use the standard binding flow by @Mytherin in #19342 Rework CTE binding: remove CTENode, and bind CommonTableExpressionMap directly instead by @Mytherin in #19351 Avoid keeping shared ptr to ClientContext in QueryContext by @Mytherin in #19353 Internal #6190: AsOf Threading by @hawkfish in #19328 [Indexes] Buffer Managed Indexes Part 4: Segment Handles for Base Leaf by @artjomPlaunov in #19303 Provide force assertion macros by @dentiny in #19212 Parse result for PEG transformer by @Dtenwolde in #19229 Allow * NOT SIMILAR TO 'pattern' by @Dtenwolde in #19232 [C API] Improve documentation on list vectors by @taniabogatsch in #19349 Make Binding CTEs lazy, and other CTE binding refactors by @Mytherin in #19372 Internal #6210: IEJoin Threading by @hawkfish in #19361 [CI] Move two test cases from duckdb-httpfs repo by @hmeriann in #19368 [C API] Update misleading "use instead" by @taniabogatsch in #19371 Enable -Wtype-limits warning and fix warnings by @hannes in #19382 [Profiling] Add metrics for ATTACH / CHECKPOINT / WAL replay by @taniabogatsch in #19367 Update issue template by @szarnyasg in #19384 Not building imdb all the time by @hannes in #19388 CSV Reader: make line reconstruction deal with buffer_pos == buffer_size by @Mytherin in #19390 [Dev] variant_extract BindData copy fix by @Tishj in #19394 [Dev] Add a VARIANT visitor class by @Tishj in #19387 Switch RowVersionManager to using the FixedSizeAllocator by @Mytherin in #19392 [Profiling][CAPI] Add appender profiling test by @maiadegraaf in #19383 Use statement for PEG Parser transformer by @Dtenwolde in #19302 old_transactions is no longer necessary by @Captain32 in #19381 Add Null Support for TopNWindowElimination Rule by @d-justen in #19370 Use const references in exceptions varargs by @maiadegraaf in #18723 Merge v1.4-andium into main by @Mytherin in #19402 [Variant] Implement comparison operation logic for Variant columns by @Tishj in #19337 Implement std::allocator that uses ArenaAllocator by @lnkuiper in #19412 [CI] Correct file path in test case by @hmeriann in #19429 [C API] Patch C API query progress documentation by @taniabogatsch in #19430 Fixes .dump command failing with ROLLBACK when dumping tables in non-default schemas. by @shivampr in #19363 [C API] Extend documentation around header generation by @taniabogatsch in #19433 Internal #6270: Fix small binary fallback values for arg_min/max_nulls_last by @d-justen in #19434 Merge v1.4 into main by @Mytherin in #19438 SET statement for PEG Transformer by @Dtenwolde in #19320 Add DuckDB::String to operators by @maiadegraaf in #19423 Make cached hashes thread-safe and emit dictionary vectors from Perfect Hash Join by @lnkuiper in #19332 fix: make GetCachedHashes thread safe by @0ax1 in #19274 [Profiling] Enable ATTACH / CHECKPOINT / WAL replay metrics by default by @maiadegraaf in #19436 Update / simplify issue template by @szarnyasg in #19442 Move FORCE_ASYNC_SINK_SOURCE from Nightly to Main by @carlopi in #19452 Fix WITH ORDINALITY virtual columns by @niykko in #19315 Internal #6196: AsOf Prefix Comparisons by @hawkfish in #19456 Add safe queue and deque by @dentiny in #19273 💝 duckdb now has its endoflife.date page ⏳ by @adriens in #19450 Fix wording in README by @lnkuiper in #19462 [C-API] Add support for defining config options (settings) by @Maxxen in #19473 Internal #6196: AsOf Prefix Comparisons by @hawkfish in #19466 Internal #6196: AsOf Prefix Comparisons by @hawkfish in #19484 [TPCH] fix load.sql to produce valid test data by @hmeriann in #19441 [minor] Add catalog type to exception by @dentiny in #19488 GEOMETRY Rework: Part 3 - Filter pushdown by @Maxxen in #19439 [minor] Address test compilation warnings by @dentiny in #19492 Fix issue #17941: Cryptic error message when dropping a column part of a unique constraint. by @arjanssuri in #19465 [Optimizer] Support constant order normalization by @doublefish5106 in #19494 Use Late Materialization in TopNWindowElimination Optimizer by @d-justen in #19463 Internal #6326: AsOf Join Copying by @hawkfish in #19505 [swift] fix microseconds conversion to seconds by @kokluch in #19486 Fix bug initializing std::vector for column names in ADBC API by @CurtHagenlocher in #19444 Remove empty lines at the start of code blocks by @lnkuiper in #19519 Merge v1.4 into main by @Mytherin in #19528 Fix failing python replacement scan by @evertlammerts in #19509 Adds parquet_full_metadata function by @J-Meyers in #19148 [Profiling] Add WAL_REPLAY_ENTRY_COUNT and COMMIT_WRITE_WAL_LATENCY metrics by @maiadegraaf in #19524 Convert CLI to use C++ API, and remove sqlite API wrappers by @Mytherin in #19536 Adding release name for 1.5 by @hannes in #19540 CLI: Generate ".help" menu from the list of commands, and add syntax highlighting to .help by @Mytherin in #19542 CLI: Refactor command-line parameters into a struct similar to MetadataCommands, and add better errors + syntax highlighting by @Mytherin in #19544 Delete Statement and expression associativity for PEG Transformer by @Dtenwolde in #19507 Attach statement for PEG transformer by @Dtenwolde in #19460 Augment Table API function via context stored in AsyncResult object by @carlopi in #19422 Add COLUMNS() expansion support to DISTINCT ON by @shivampr in #19550 Retain recursive unnest column names by @DinosL in #19310 Adds struct variant to regexp_extract_all by @J-Meyers in #19078 CLI: Make last query result queryable through the _ token by @Mytherin in #19553 CLI: rework .import to use built-in readers by @Mytherin in #19563 Count also time blocked waiting for the lock in BLOCKED_THREADS_TIME by @carlopi in #19547 Change format_version to 2 when specify V2 for PARQUET_VERSION by @koron in #18855 Fix: list_concat(NULL) returns NULL by @maiadegraaf in #19565 CLI: More shell code refactoring, remove global variables and split commands into separate files by @Mytherin in #19568 Consdier offset in topn optimizer by @ZENOTME in #19561 Fix Issue #19487: array_to_string on empty list return NULL instead of empty string by @arjanssuri in #19548 CLI: Add support for dynamic prompts by @Mytherin in #19579 Custom Order Row Group Scans by @d-justen in #19537 Added missing return code checks for ADBC test cases by @hannes in #19576 CLI: Make startup-text display configurable using the .startup_text by @Mytherin in #19584 CLI: Unify all highlighting color code, add support for extended (8-bit) colors and add .display_colors command by @Mytherin in #19587 Replace deprecated header by @krlmlr in #19602 const-safe: Add const handling for list_entry_t by @krlmlr in #19603 Fix uninitialized physical_type in move constructor by @krlmlr in #19604 Fix uninitialized variable in multi-file progress tracking by @krlmlr in #19597 Fix uninitialized members in CachedFile constructor by @krlmlr in #19598 Fix uninitialized members in HashJoinGlobalSourceState by @krlmlr in #19599 [C API] Generate description, deprecated, and use_instead for function groups by @taniabogatsch in #19586 Merge v1.4-andium into main by @carlopi in #19589 CLI: Sort .display_colors by group / hue / luminosity by @Mytherin in #19610 Use std::remove_cv for physical type id fetching by @dentiny in #19614 [C-API] Initial support for defining COPY functions by @Maxxen in #19186 Apply RemoveUnusedColumns below table in out functions by @geoffxy in #19474 Fix uninitialized sorted_tuples member by @krlmlr in #19593 Array comparison optimization by @EslamAhmed171 in #19591 Python SQLLogicTest - show results in a consistent order by @DinosL in #19562 Add missing description to copy CAPI by @lnkuiper in #19617 Speed up Dictionary and DICT_FSST compression by replacing std::unordered_map with PrimitiveDictionary by @yan-alex in #19577 CLI: Display auto-complete suggestions when tabbing through them by @Mytherin in #19626 Allow Table function to opt-in to return arbitrary combinations of [0, output.size()] x [HAVE_MORE_OUTPUT, FINISHED] by @carlopi in #19566 Add a Mermaid Flowchart transformer for EXPLAIN output by @tobilg in #19581 Add recovery mode to ATTACH options and enable NO_WAL mode by @taniabogatsch in #19612 feat: add --sql option to .open in the cli client by @hello-world-bfree in #19445 [ART] Pretty Printer + Verify by @artjomPlaunov in #19558 Internal #6341: AsOf Parallelism by @hawkfish in #19605 Add window functions to duckdb_functions by @Tishj in #19532 CLI: Fix cursor rendering in multi-line editing mode by @Mytherin in #19649 CLI: Eagerly open database also if it does not exist by @Mytherin in #19627 CLI: Make the progress bar configurable by @Mytherin in #19650 Encapsulate BaseScalarFunction properties by @Maxxen in #19632 Buffer-managed query results by @lnkuiper in #19437 [ART] Iterative Iterator by @artjomPlaunov in #19521 CI Fuzzer runtime error by @DinosL in #19630 Guard printing for bignum by @krlmlr in #19600 Don't truncate test names to 80 characters by @JelteF in #19642 [Parquet] Emit VARIANT from Parquet VARIANT columns, instead of JSON by @Tishj in #18996 CLI: Make Linenoise work on Windows by @Mytherin in #19659 Issue #19499: HashedSort Sorting Memory by @hawkfish in #19664 Fix incorrect partition calculation due to missing vector_type by @tianjq16 in #19638 CLI - store action as just a char to avoid sanitizer complaints by @Mytherin in #19679 Merge v1.4 into main by @Mytherin in #19670 More arena_stl_allocator integration by @lnkuiper in #19677 Fix z/OS-specific issues by @DNikolaevAtRocket in #19641 CLI - Add paging support for output by @Mytherin in #19676 GEOMETRY Rework: Part 4 - Fixup Parquet Extension + Add Arrow Support by @Maxxen in #19476 SegmentTree: move next and index out of SegmentBase and into SegmentNode by @Mytherin in #19686 Add Clear method to BaseAppender by @EtgarDev in #19623 Handle edge case for date_trunc optimization by @rcurtin in #19628 fix checkpointing on files that dont exist by @dioptre in #19344 Fix: Correct typos in comments and error messages by @feichai0017 in #19257 Fix compiler warnings on main by @lnkuiper in #19690 Issue #19499: HashedSort Sorting Memory by @hawkfish in #19687 Internal #6519: HashedSort Memory Footprint by @hawkfish in #19702 Fix LENGTH(NULL) with GROUP BY NULL binding issue by @shivampr in #19269 New EXTENSION_RELATION type by @krlmlr in #19596 array intersect by @krleonid in #19667 Internal #6341: AsOf Deadlock by @hawkfish in #19705 Add options for how invalid utf-8 should be handled in decode() by @casperhart in #18168 CommonSubplan improvements by @lnkuiper in #19710 Fix #18653: remove unnecessary delim_join by @flashmouse in #19235 Internal #6523: AsOf Exception Handling by @hawkfish in #19703 CLI: Refactor BoxRenderer, add wrapping support for large values, and add pretty printing / highlighting for nested types, JSON and variant by @Mytherin in #19721 Fix empty result pullup for ANTI joins by @feichai0017 in #19701 search activer binders in table function binder during binding column… by @Damon07 in #14486 Move formatting logic for tests and benchmarks into a standalone script by @adsharma in #17350 Exclude Row Groups in Top-N Queries by @d-justen in #19655 fix bug in generate_grammar script by @OrangieLou in #19751 Internal #4490: DENSE_RANK Performance by @hawkfish in #19757 Internal #6521: HashedSort Scan Lock by @hawkfish in #19758 Issue #19647: Constant Window Allocators by @hawkfish in #19752 BoxRenderer: Fix rendering of empty results by @Mytherin in #19746 Bump ducklake main by @J-Meyers in #19756 Fix initialization when all values are NULL in SMALLER_BINARY aggregation by @DinosL in #19755 Clean up unused headers in parser/ and subfolders by @Schwarf in #18422 Fix #17251: Eliminate duplicates after a set operation using set sema… by @tianjq16 in #17267 Implement outer join elimination by @flashmouse in #18043 [C-API] Add support for catalog entry lookup by @Maxxen in #19684 Add Stats API to filesystem interfaces by @dentiny in #19743 Add sleep scalar function by @krleonid in #19736 Add flush memory threshold for appender to prevent OOM by @p1p1bear in #19007 add statement debug and debug_skip by @samansmink in #18472 Storage: Remove start from RowGroup, ColumnData and ColumnSegment, and rework the way that start is defined in the ColumnSegmentTree by @Mytherin in #19761 Add Seek() to TupleDataCollection for IEJoin optimization by @EslamAhmed171 in #19753 Fix TopN Pruning Test by @d-justen in #19768 Support reading pipes with read_text by @lnkuiper in #19765 Support TopN dynamic filter for NULLS FIRST by @feichai0017 in #19744 fix(#18481): Avoid to overwrite secret_directory configuration by it default value by @quentingodeau in #19448 Change back default strategy for debug_physical_table_scan_execution_strategy by @carlopi in #19778 Fix major big-endian issues by @DNikolaevAtRocket in #19748 Disable sleep() function if DuckDB isn't compiled with threads by @lnkuiper in #19783 Remove unused parameter from arrow by @pdet in #19784 Block Allocator by @lnkuiper in #19678 Merge v1.4-andium into main by @Mytherin in #19771 CLI: Add table metadata rendering, and use this rendering for .tables and DESCRIBE queries by @Mytherin in #19792 CLI: Improve array rendering by no longer adding newlines after every array entry unless there are complex objects in the array by @Mytherin in #19795 CLI: For .tables - group tables by database/schema, and render the database name and schema of the tables as a header above the tables by @Mytherin in #19798 Skip test block_allocator_memory.test on 32bit platforms by @carlopi in #19794 [ADBC] Fix bug in StatementGetParameterSchema when no params are set by @amoeba in #19790 Specify shared deletion option on windows by @dentiny in #19782 Fix flaky sleep test by @krleonid in #19803 Internal #6541: Window ArenaAllocator Usage by @hawkfish in #19770 CLI: Several auto-complete improvements, make auto-complete behave more like zsh by @Mytherin in #19805 [Profiling] Split COMMIT_WRITE_WAL_LATENCY into COMMIT_LOCAL_STORAGE_LATENCY and WRITE_TO_WAL_LATENCY by @maiadegraaf in #19808 Move GetData as GetDataInternal, and have GetData as wrapper by @carlopi in #19791 [swift] fix compiler warnings for deprecated @_implementationOnly by @kokluch in #19800 CLI: Silence auto-complete failures instead of exiting by @Mytherin in #19813 Random small nits by @taniabogatsch in #19828 Add test to exclusion list by @Maxxen in #19827 Create statement for PEG Transformer by @Dtenwolde in #19807 Add struct_keys method to StructVector by @EtgarDev in #19673 [Dev] Disallow aggregates used in the TRY expression child by @Tishj in #16285 CI Cleanup by @Mytherin in #19840 Fix positional scan and restore task executor by @carlopi in #19825 [CLI] fix escaping sequence for ctrl/alt arrow key shortcuts by @tobwen in #19261 Enable macros in DuckLake by @pdet in #19836 Make RowGroup::Checkpoint and ColumnData::Checkpoint generate a new RowGroup/ColumnData - instead of checkpointing them in-place by @Mytherin in #19843 Fix incorrect results with NOT EXISTS and IS DISTINCT FROM operator (#19680) by @henry8128 in #19811 #6429 Roaring Booleans by @yan-alex in #19785 GEOMETRY Rework: Part 4 - Step 2 - Adjust WKB conversion functions by @Maxxen in #19848 Internal #6607: IEJoin Task Locking by @hawkfish in #19852 Add TOTAL_MEMORY_ALLOCATED profiling metric by @krleonid in #19834 Delete unused block header size by @ccfelius in #19855 [CAPI] Expose basic custom log storage to CAPI by @maiadegraaf in #19810 Enable reads to run concurrently while another connection is checkpointing by @Mytherin in #19867 CLI: Enable support for mouse clicks in Linenoise - pressing Ctrl+Q allows a single mouse-click to be consumed to change the cursor position by @Mytherin in #19869 Add alias reference support (alias.) by @EtgarDev in #19747 [Compression] Fix an existing and a new bug in Roaring compression by @Tishj in #19878 PEG Transformer template script by @Dtenwolde in #19812 [Testing][Dev] Extend tests covered by the storage_compatibility test config by @Tishj in #19860 [swift] decode boolean primitive type by @kokluch in #19890 [Parquet] Implement automatic shredding for VARIANT columns in COPY TO parquet by @Tishj in #19336 Offset Pruning for Pagination Queries by @d-justen in #19806 Internal #6568: SortStrategy Refactoring by @hawkfish in #19814 Refactor hash join filter scan helper by @feichai0017 in #19802 [Optimizer] Fix cardinality estimates getting lost through struct_extract expressions by @Tishj in #19829 [Dev] Fix assertion failure in AlterType by @Tishj in #19850 Internal #6653: WindowExpression Construction by @hawkfish in #19885 Fix nested sleep_ms calls and add tests by @krleonid in #19837 fix: make row_start an optional_idx in PartitionStatistics by @rustyconover in #19903 CLI: Refactor shell rendering code, move everything to ShellRenderer, and perform various fixes by @Mytherin in #19897 [Storage] Implement storage for VARIANT columns by @Tishj in #19674 Encapsulate scalar/aggregate function callbacks by @Maxxen in #19707 Merge V1.4 -> Main by @pdet in #19876 Checkpoint: prevent adding blocks to the free_list that are still being used by concurrent readers by @Mytherin in #19928 Merge V1.4 -> Main by @pdet in #19935 Avoid eagerly grabbing the checkpoint lock when performing inserts, instead grab a shared table lock by @Mytherin in #19937 [Checkpoint] Fully rewrite stats on Checkpoint by @Tishj in #19932 fix: update aggregate docs regarding combine, add guards around calling combine callback. by @rustyconover in #19938 [Wal]ReplayDelete in batches instead of rows by @artjomPlaunov in #19904 CheckZonemapSegments: iterate on filters, then jump further by @carlopi in #19865 Tweak Relation::Query() by @krlmlr in #19594 More TASK_EXECUTOR opt-in by @carlopi in #19940 [Stats] has_no_null is no longer initialized to true in BaseStatistics::CreateEmpty by @Tishj in #19948 [Stats] Improve the VariantStats class to support merging and better visualization by @Tishj in #19950 Handle empty table name on CREATE by @yan-alex in #19955 Fix ColumnAliasBinder by @d-justen in #19956 CLI: Add support for dark / light mode that is automatically detected by @Mytherin in #19985 CLI: Change return value from -1 to false in TryGetBackgroundColor by @c8ef in #19992 CLI: Fully unify result rendering, and fix automatic pager mode by @Mytherin in #19988 Adding extension alias lookup in GetDatabaseType by @tomas-karnagel in #19980 CLI: Various auto-complete fixes by @Mytherin in #19995 ALP uncompressed mode by @yan-alex in #19902 Disable block allocator test on non-64bit by @lnkuiper in #19999 Add comments to cardinality estimator code by @Tmonster in #19973 [fix] ClientBufferManager::Pin to also propagate context when available by @carlopi in #19986 Sideways Information Passing for Joins using Bloom Filters by @gropaul in #19502 Don't require icu unless extension is enabled by @dg0yt in #19963 Add z/OS support for block allocator by @DNikolaevAtRocket in #19977 Add a secondary extension directory for package managers by @xhochy in #17499 #15867 - Make it possible to hide query in profiling output by setting query_name metric to false. by @ormandi in #15870 Internal #6607: IEJoin Task Locking by @hawkfish in #20028 Fix #19984: shouldn't use outer table distinct info to eliminate join by @flashmouse in #20023 fix: allow table in/out functions to indicate if they support parallelism by @rustyconover in #19951 Fix #20029: accept "\e\" as termination sequence, and add a timeout to TryGetBackgroundColor by @Mytherin in #20042 Fix #20034: correctly move correlated columns for lazy CTEs by @Mytherin in #20038 Bloom filter row group skipping by @lnkuiper in #20035 CLI: Optimize and clean-up result rendering code by @Mytherin in #20021 fix alter table rename / alter on temp table losing temporary flag by @diwu-sf in #20011 Improve catalog error message for missing schemas by @krleonid in #19922 feat(adbc): partial supporting ADBC 1.1.0 by @eitsupi in #19833 [Profiling] Generate more metric code and add metric subgroups by @maiadegraaf in #19483 Filesystem-compatible wrapper for CachingFileSystem by @dentiny in #19972 #Fix 18158: Deliver child column info by @flashmouse in #18327 Allow concurrent commits to happen while a checkpoint is running by @Mytherin in #20052 CLI: Improve rendering of wide values, and improve auto-complete by @Mytherin in #20074 Checkpoint: Allow vacuuming of rows for tables that have indexes if the vacuum does not change the rowids by @Mytherin in #20073 Eagerly Execute Min/Max Aggregates on Statistics by @d-justen in #19906 Late extension linking by @hannes in #19369 ADBC: Set append data error in Ingest() by @kou in #19991 Don't throw permission error during binder when LocalFileSystem is disabled by @JelteF in #20077 Add struct_values function to return field values of STRUCT by @EtgarDev in #19968 TupleDataCollection + MemoryTag fix by @lnkuiper in #20089 Enable Parquet reader support for uniformly encrypted Parquet files written by Arrow C++ API by @ccfelius in #20046 Fix source and bin dirs to duckdb's root by @evertlammerts in #20088 Allow CTEs to emit NULL types by @Mytherin in #20097 Change CLI highlighting colors and error message rendering by @Mytherin in #20099 Roaring boolean FetchRow fix by @yan-alex in #20101 Fix race condition in piecewise merge join by @lnkuiper in #20059 Improve join filter pushdown for ON clause conditions by @EslamAhmed171 in #19888 Merge V1.4 -> Main by @pdet in #20111 Fix parsing of dollar quoted strings in various places by @JelteF in #20121 Do not autocomplete within dollar-quoted strings by @JelteF in #20122 Fix concurrent test failure by @Mytherin in #20129 Fix over-eager constraint checking in the presence of primary keys/unique constraints by @Mytherin in #20119 When shortening columns in the BoxRenderer, avoid applying the min col width twice by @Mytherin in #20126 Unify column renaming behavior of CTEs with other places in the system by @kryonix in #20116 Fix vector sizes CI by @lnkuiper in #20130 [Logging] Add assertions for LogType type by @maiadegraaf in #20064 [Profiling] Check that file type set by profiling_output matches output type by @maiadegraaf in #19946 Add flag to use pre-built static library by @hannes in #20092 Create Shell Log Storage to Print Warnings in CLI by @maiadegraaf in #19974 [Doc] Add ccache into contributing doc build section by @dentiny in #20139 Fix column lifetime for DISTINCT ON by @feichai0017 in #19786 documentation for extension patch workflow by @artjomPlaunov in #19905 Art pretty printer options by @artjomPlaunov in #20079 feat: add OperatorOrder() to table functions to indicate ordering needs. by @rustyconover in #19954 Internal #6777: IEJoin Unified L1/2 by @hawkfish in #20083 fix: link error on linux with multiple definition of LogicalType::VARCHAR in shell_renderer.cpp by @rustyconover in #20096 Remove pointer indirection in ExtensionAccess by @staticlibs in #19529 [Dev] Fix failure on extension_entries.hpp on main by @Tishj in #20138 [Dev] Fix concurrent test failure (followup) by @Tishj in #20140 HashCSVStateMachineConfig to return hash_t by @carlopi in #20137 Provide option disable cache validation by @dentiny in #19886 Parallel TupleDataCollection destructor by @lnkuiper in #20159 Internal #6778: IEJoin Parallel L1/L2 by @hawkfish in #20152 Allow concurrent insertions into tables with indexes while checkpointing by @Mytherin in #20160 Revert linux toolchain downgrade by @hannes in #20170 Do not exit shell on Ctrl+C by @staticlibs in #20155 CLI: Several rendering fixes / improvements by @Mytherin in #20175 fix: remove extra space in GetName() for PhysicalTableScan in profiler output by @rustyconover in #20179 Internal #6779: 64-Bit Range Joins by @hawkfish in #20176 More CommonSubplanOptimizer improvements by @lnkuiper in #20168 Profiling: Fix rows_scanned by @d-justen in #20161 [Optimizer] Clean up the cross-over point from ColumnIndex -> StorageIndex by @Tishj in #20087 Issue #19629: DATE_TRUNC Return Type by @hawkfish in #20120 Move to macos-latest for newer compiler by @hannes in #20169 [minor] Avoid divide by 0 for json progress report by @dentiny in #20196 Allow Late Materialization for Parquet in TopNWindowElimination by @d-justen in #20066 Link MSVC runtime library statically by @staticlibs in #19415 fix ci run - 'no space left on device' by @c-herrewijn in #20203 fix: simplify logic by removing empty else branch by @darion-yaphet in #20184 fix: simplify platform detection in CMakeLists.txt by @darion-yaphet in #20183 Add days_in_month internal macro for retrieving number of days in a month by @ArNine in #20180 Fix try cast for variant to incompatible struct types by @wmTJc9IK0Q in #20211 fix: add schema and catalog to table scan explain output by @rustyconover in #20181 feat: add filenames to MultiFileDynamicToString by @rustyconover in #20182 [C-API] Add support for scalar function local states by @Maxxen in #20109 CLI: Add .last to re-render the last query result, and make several (performance) improvements to .mode duckbox by @Mytherin in #20223 Throw exception if there is ARTKey mismatch by @artjomPlaunov in #20225 Fix Windows shell input: correct variable buffering and character order by @EslamAhmed171 in #20217 [minor] Address compilation warnings by @dentiny in #20213 Refactor PhysicalCreateIndex and introduce index build abstraction by @ccfelius in #20158 Refactor PhysicalCreateIndex and introduce index build abstraction by @Maxxen in #19461 Internal #6837: Streaming IGNORE NULLS by @hawkfish in #20226 [Optimizer] Push down struct_extract expression to the storage. by @Tishj in #20063 Friendly SWITCH case by @Dtenwolde in #20001 Parallel SortedRunMerger destructor by @lnkuiper in #20200 Internal #6462: Implement AGO Macro by @hawkfish in #20228 Do not call UnregisterBlock from destructor by @staticlibs in #20242 [minor] Address more compile warnings by @dentiny in #20232 Re-enable aws tests by @Tmonster in #20249 Fix wrong error message when add primary key to a view(#20239) by @ArNine in #20253 Fix last parallel destructor race condition (hopefully) by @lnkuiper in #20251 [Optimizer] Pushdown a CAST expression on top of a struct_extract by @Tishj in #20250 [ART] Prefix handles by @artjomPlaunov in #19658 Fix: CHECK constraint internal error on UPDATE with missing columns (#20199) by @AestheticAkhmad in #20243 Internal #6462: Implement AGO Macro by @hawkfish in #20257 feat: preserve ATTACH options and return via duckdb_databases() by @rustyconover in #20186 support reading parquet files with empty groups by @achille-roussel in #20135 Move checkpointing outside of the attached database destructor by @taniabogatsch in #19930 Issue #20076: Implement CountWindowElimination Logic by @hawkfish in #20273 Minor python fixes by @c-herrewijn in #20269 Fix concat(null) error by @d-justen in #20266 Big-endian patches (FSST, arrow, types, md5) by @DNikolaevAtRocket in #20237 Merge v1.4-andium into main by @carlopi in #20231 Allow concurrent deletes while checkpointing by @Mytherin in #20286 Correctly handle default expressions in WAL when doing ALTER TABLE ... ADD COLUMN ... DEFAULT ... by @yan-alex in #20224 [Fix] Use the current schema and catalog during data creation for TPCH and TPCDS by @taniabogatsch in #20290 peg grammar: start rule first by @jraymakers in #20275 return_stats for boolean and numeric (128 bits) during copy by @aykut-bozkurt in #20222 Fixes raised by cppcheck by @carlopi in #20323 Fixup QueryProfiler::GetBytesRead and Written by @carlopi in #20318 Internal #6974: Window Self-Join Files by @hawkfish in #20317 Internal #6999: Window TopN Comparisons by @hawkfish in #20316 Internal #6943: IEJoin Code Cleanup by @hawkfish in #20315 Use eager min/max aggregation on parquet statistics by @d-justen in https://github.com/duckdb/duckdb/pull/20301 c-api: adding out_file against NULL check by @ProjectMutilation in https://github.com/duckdb/duckdb/pull/20303 Apply LRU cache to parquet metadata by @dentiny in https://github.com/duckdb/duckdb/pull/20157 [Profiling] Add duckdb_profiling_settings() macro by @maiadegraaf in https://github.com/duckdb/duckdb/pull/20234 Fix some compiler warnings on apple clang 17 by @hannes in https://github.com/duckdb/duckdb/pull/20337 feat(adbc): support the uri option of ADBC 1.1.0 by @eitsupi in https://github.com/duckdb/duckdb/pull/20312 feat(adbc): support ADBC_INFO_DRIVER_ADBC_VERSION (new in ADBC 1.1.0) by @eitsupi in https://github.com/duckdb/duckdb/pull/20344 GEOMETRY Rework: Part 5 - Coordinate Reference System Support by @Maxxen in https://github.com/duckdb/duckdb/pull/20143 Remove two unnecessary test exclusions by @yan-alex in https://github.com/duckdb/duckdb/pull/20347 Preserve uppercase chars in DB filename on Windows by @staticlibs in https://github.com/duckdb/duckdb/pull/20298 Eager aggregate support filter by @flashmouse in https://github.com/duckdb/duckdb/pull/20198 [Profiling] Add enable_profiling() Table Function by @maiadegraaf in https://github.com/duckdb/duckdb/pull/20151 Fix: Potential Unexpected Result when Using TRY Expression #20006 by @AestheticAkhmad in https://github.com/duckdb/duckdb/pull/20238 Fix #20308: Added collation binding to the join conditions by @gemy26 in https://github.com/duckdb/duckdb/pull/20349 Pick up stale PR 19271 by @lnkuiper in https://github.com/duckdb/duckdb/pull/20359 Support reading FIXED_LEN_BYTE_ARRAY fields with DELTA_BYTE_ARRAY encoding by @arouel in https://github.com/duckdb/duckdb/pull/20270 Parquet: Populate the column_orders field and expose it in parquet_file_metadata by @lasanaka-jumptrading in https://github.com/duckdb/duckdb/pull/20241 Add RemoveFiles to FileSystem by @utay in https://github.com/duckdb/duckdb/pull/20333 Perform cleanup when COPY function throws an error by @yan-alex in https://github.com/duckdb/duckdb/pull/20345 Pick up stale PR 19268 by @lnkuiper in https://github.com/duckdb/duckdb/pull/20358 CachingOperator: handle also ORDERED, and consider swapping chunks by @carlopi in https://github.com/duckdb/duckdb/pull/20259 fix binder: handle errors with over in where inside subquery by @Pranav2612000 in https://github.com/duckdb/duckdb/pull/20310 Add interruption check to optimizer execution by @EtgarDev in https://github.com/duckdb/duckdb/pull/20377 Out of core tests by @lnkuiper in https://github.com/duckdb/duckdb/pull/20383 Use forward-compatible std::shuffle by @philippmd in https://github.com/duckdb/duckdb/pull/20395 fix compilation with FORCE_QUERY_LOG=1 by @zhanglei1949 in https://github.com/duckdb/duckdb/pull/20387 [minor] Fix a few compilation warnings by @dentiny in https://github.com/duckdb/duckdb/pull/20385 Add parse_formatted_bytes function to parse human-readable byte size by @EtgarDev in https://github.com/duckdb/duckdb/pull/20107 Fix issue #20187: Fix PIVOT aggregate mismatch for ranges >=21 by @gemy26 in https://github.com/duckdb/duckdb/pull/20272 Fix caching filesystem CanSeek by @dentiny in https://github.com/duckdb/duckdb/pull/20330 Improve format script compatibility on Windows by @xuboying in https://github.com/duckdb/duckdb/pull/20398 Add way to skip version checks in scripts/format.py by @carlopi in https://github.com/duckdb/duckdb/pull/20388 Fix function chain in qualify(#20233) by @ArNine in https://github.com/duckdb/duckdb/pull/20262 Fix concat(null) is null return false, it should be true(issue: #20306) by @ArNine in https://github.com/duckdb/duckdb/pull/20320 NightlyTests fixes by @lnkuiper in https://github.com/duckdb/duckdb/pull/20408 Storage cleanup: remove unused headers and fix transitive includes by @Schwarf in https://github.com/duckdb/duckdb/pull/20407 Avoid frequent checkpoints triggered by optimistic insertions by @Captain32 in https://github.com/duckdb/duckdb/pull/20336 No catalog found Nightly test fix by @ccfelius in https://github.com/duckdb/duckdb/pull/20409 TIME_NS Support + Arrow by @pdet in https://github.com/duckdb/duckdb/pull/20361 feat(adbc): support the experimental adbc.ingest.target_catalog option and improve ingest name resolution by @eitsupi in https://github.com/duckdb/duckdb/pull/20369 Fix file opener propagation by @dentiny in https://github.com/duckdb/duckdb/pull/20414 Cleanup RowGroup Scan code, and make BoundIndex::Delete throw an error if the rows are not present in the index by @Mytherin in https://github.com/duckdb/duckdb/pull/20430 [Optimizer] Support NOT elimination by @doublefish5106 in https://github.com/duckdb/duckdb/pull/20394 JSON Reader: exit scan loop if we have found an error that we can't yet throw by @Mytherin in https://github.com/duckdb/duckdb/pull/20434 Merge V1.4 -> Main by @pdet in https://github.com/duckdb/duckdb/pull/20350 Internal #6975: Window Inner Self-Join by @hawkfish in https://github.com/duckdb/duckdb/pull/20459 Issue #20413: ASOF Arbitrary Predicates by @hawkfish in https://github.com/duckdb/duckdb/pull/20456 [C API] Expose safe string assign function by @taniabogatsch in https://github.com/duckdb/duckdb/pull/20467 Internal #6976: Window Self-Join Predicate by @hawkfish in https://github.com/duckdb/duckdb/pull/20473 CMake: export also duckdb_generated_extension_loader by @carlopi in https://github.com/duckdb/duckdb/pull/20449 Chore: merge back main into v1.5-variegata by @carlopi in https://github.com/duckdb/duckdb/pull/20469 add_third_party(skiplist) into top level CMake by @carlopi in https://github.com/duckdb/duckdb/pull/20494 Add SHOW schemas by @c-herrewijn in https://github.com/duckdb/duckdb/pull/20492 [SQLLogicTest] Add the CONTINUE statement by @Tishj in https://github.com/duckdb/duckdb/pull/20489 Remove fs limitation: OVERWRITE is not supported for remote file systems by @carlopi in https://github.com/duckdb/duckdb/pull/20487 [Encryption] Adding random IV and tag for canary encryption by @ccfelius in https://github.com/duckdb/duckdb/pull/20208 [Optimizer] Push down variant_extract + cast into the storage layer by @Tishj in https://github.com/duckdb/duckdb/pull/20268 Internal #6977: Window Self-Join Aggregate by @hawkfish in https://github.com/duckdb/duckdb/pull/20497 Full Changelog: v1.4.4...v1.5.0