1.2.0
DuckDB 1.2.0 "Histrionicus"
This release of DuckDB is named "Histrionicus" after the good-looking Harlequin duck (Histrionicus Histrionicus) that inhabits "cold fast moving streams in North America, Greenland, Iceland and eastern Russia".
Please also refer to the announcement blog post: https://duckdb.org/2025/02/05/announcing-duckdb-120
What's Changed
- Optimise division by a constant at runtime for integer division by @JAicewizard in https://github.com/duckdb/duckdb/pull/10348
- Add cross join to Python Relational and PySpark API by @khalidmammadov in https://github.com/duckdb/duckdb/pull/13519
- Fix #13805: throw a more descriptive error message when an on-disk file is referenced using a replacement scan for an unsupported file format by @Mytherin in https://github.com/duckdb/duckdb/pull/13871
- Make sampling accept parameters at the parser/transformer layer by @Mytherin in https://github.com/duckdb/duckdb/pull/13903
- Fix #13867: use 64-bit random numbers to generate random numbers for
random()by @Mytherin in https://github.com/duckdb/duckdb/pull/13920 - Fix #13769: when binding views, always first search in the schema that the view is defined in by @Mytherin in https://github.com/duckdb/duckdb/pull/13921
- Rework table bindings to be components (
catalog,schema,table) instead of flat strings by @Mytherin in https://github.com/duckdb/duckdb/pull/14017 - Add auto-loadable extension settings to duckdb_config_count and duckdb_get_config_flag by @Mytherin in https://github.com/duckdb/duckdb/pull/14021
- Fix #10961 - in the HAVING clause - in case of column name conflicts, bind to aliases instead of to ungrouped columns by @Mytherin in https://github.com/duckdb/duckdb/pull/14023
- Enable filter pushdown through Logical Unnest by @Tmonster in https://github.com/duckdb/duckdb/pull/14008
- Allow duplicate table aliases in the table binder by @Mytherin in https://github.com/duckdb/duckdb/pull/14035
- Unify DESCRIBE [query] and DESCRIBE [table] by @Mytherin in https://github.com/duckdb/duckdb/pull/14039
- Support qualified identifiers in the
EXCLUDEclause by @Mytherin in https://github.com/duckdb/duckdb/pull/14043 - Add
SMALLER_BINARYflag to reduce binary size by @Mytherin in https://github.com/duckdb/duckdb/pull/14057 - Smaller Binary: remove more templates from arg_min_max by @Mytherin in https://github.com/duckdb/duckdb/pull/14071
- Unify entropy and mode aggregates - and skip specialized implementations for entropy with smaller binary by @Mytherin in https://github.com/duckdb/duckdb/pull/14080
- [Python] Add
set_default_connectionto theduckdbmodule by @Tishj in https://github.com/duckdb/duckdb/pull/13442 - Provide workaround for prefetching parquet files with incorrect page offsets by @samansmink in https://github.com/duckdb/duckdb/pull/13697
- Move
core_functionsto a separate extension by @Mytherin in https://github.com/duckdb/duckdb/pull/14149 - PySpark df.drop() to support expressions by @khalidmammadov in https://github.com/duckdb/duckdb/pull/14059
- add some RealNest benchmarks by @hmeriann in https://github.com/duckdb/duckdb/pull/13345
- feed table function into multifilereader initialization by @samansmink in https://github.com/duckdb/duckdb/pull/14112
- [Dev] Fix an issue causing ExecuteTask to do much more work than intended by @Tishj in https://github.com/duckdb/duckdb/pull/14034
- Overhaul Parquet dictionary handling by @hannes in https://github.com/duckdb/duckdb/pull/14194
- [Feature] Allow passing the catalog (database name) to appender by @taniabogatsch in https://github.com/duckdb/duckdb/pull/13692
- Add Taxi Dataset Benchmark by @pdet in https://github.com/duckdb/duckdb/pull/14197
- Feature #3036: Window Spooling by @hawkfish in https://github.com/duckdb/duckdb/pull/14181
- Small C Extension API changes by @samansmink in https://github.com/duckdb/duckdb/pull/13987
- Add HTML and Graphviz support for explain analyze by @abramk in https://github.com/duckdb/duckdb/pull/13942
- Fix #13064: offer more suggestions with same score by @Damon07 in https://github.com/duckdb/duckdb/pull/14048
- New Algorithm to find a new line on parallel execution by @pdet in https://github.com/duckdb/duckdb/pull/14260
- Making client context lock optional for relation binding by @pdet in https://github.com/duckdb/duckdb/pull/14093
- [Feature] Allow passing the catalog during C API appender creation by @taniabogatsch in https://github.com/duckdb/duckdb/pull/14256
- Make test random output ordered by @Damon07 in https://github.com/duckdb/duckdb/pull/14267
- Skip test_window_distinct by @Mytherin in https://github.com/duckdb/duckdb/pull/14309
- Taxi Benchmark by @pdet in https://github.com/duckdb/duckdb/pull/14301
- Switch to shared pointer for multfilelists by @samansmink in https://github.com/duckdb/duckdb/pull/14291
- Push #14298 to feature branch by @flashmouse in https://github.com/duckdb/duckdb/pull/14311
- Implement PullUp Empty Results optimizer by @Tmonster in https://github.com/duckdb/duckdb/pull/13524
- [Export/Import] Use the DependencyManager to (stable) sort the entries before export by @Tishj in https://github.com/duckdb/duckdb/pull/14196
- Partitioning-Aware Aggregation and Partitioning-Aware Infrastructure by @Mytherin in https://github.com/duckdb/duckdb/pull/14329
- Add df.unionByName to PySpark API by @khalidmammadov in https://github.com/duckdb/duckdb/pull/14063
- Or filter pushdown into zone maps by @Tmonster in https://github.com/duckdb/duckdb/pull/14313
- Get the current setting in the database file opener by @Mytherin in https://github.com/duckdb/duckdb/pull/14361
- [Feature + Fix] Support ALTER TABLE tbl ALTER col TYPE USING and fix null handling in struct_insert by @taniabogatsch in https://github.com/duckdb/duckdb/pull/14359
- [C API] Add table_description_create_ext and table_description_get_column_name by @taniabogatsch in https://github.com/duckdb/duckdb/pull/14285
- Move _rtools platform to be equivalent to _mingw by @carlopi in https://github.com/duckdb/duckdb/pull/14368
- Fix for accidental like skip in the CSV Buffer by @pdet in https://github.com/duckdb/duckdb/pull/14380
- Table locks - always grab table locks through the transaction interface by @Mytherin in https://github.com/duckdb/duckdb/pull/14379
- Implementing array_slice and [] for BLOB by @hannes in https://github.com/duckdb/duckdb/pull/14358
- Rework settings handling and implement auto-generation for new ones by @Mytherin in https://github.com/duckdb/duckdb/pull/14383
- Rework settings handling and implement auto-generation for new ones by @chrisiou in https://github.com/duckdb/duckdb/pull/14018
- Arrow list buffer - suggest setting
arrow_large_buffer_sizeto true when regular list buffer size is exceeded by @Mytherin in https://github.com/duckdb/duckdb/pull/14384 - Fix incorrect merge conflict resolution in workflow file by @Mytherin in https://github.com/duckdb/duckdb/pull/14390
- Update Parquet Thrift to latest version by @hannes in https://github.com/duckdb/duckdb/pull/14258
- Reformat list functions by @c-herrewijn in https://github.com/duckdb/duckdb/pull/14372
- Tidy Check to do complete run also on feature by @carlopi in https://github.com/duckdb/duckdb/pull/14394
- [Python] Use an
ArrowQueryResultinFetchArrowTablewhen possible. by @Tishj in https://github.com/duckdb/duckdb/pull/14319 - Make mysql_scanner auto-loadable, and add mysql/postgres secrets by @Mytherin in https://github.com/duckdb/duckdb/pull/14392
- Improvement the speed of table sample systems by @continue-revolution in https://github.com/duckdb/duckdb/pull/12631
- Support defining column names in CTAS by @douenergy in https://github.com/duckdb/duckdb/pull/14327
- Fix pointer indirection in pyrelation.cpp by @carlopi in https://github.com/duckdb/duckdb/pull/14403
- Fix idx_t to int64_t implicit conversion flagged by clang-tidy by @carlopi in https://github.com/duckdb/duckdb/pull/14402
- Storage: make
ROW_GROUP_SIZEconfigurable by @Mytherin in https://github.com/duckdb/duckdb/pull/14406 - [Dev] Update vendored ZSTD to v1.5.6 by @Tishj in https://github.com/duckdb/duckdb/pull/14360
- Top-N: Rework to use heap of sort keys by @Mytherin in https://github.com/duckdb/duckdb/pull/14424
- reformat string functions by @c-herrewijn in https://github.com/duckdb/duckdb/pull/14400
- Prefix Aliases in SQL by @hannes in https://github.com/duckdb/duckdb/pull/14436
- [Dev] Optimize
ValidityMaskwhen reading from aColumnDataCollectionby @Tishj in https://github.com/duckdb/duckdb/pull/14416 - [Dev] Further optimize the CDC ValidityMask deserialization by @Tishj in https://github.com/duckdb/duckdb/pull/14448
- Reformat date and map functions by @c-herrewijn in https://github.com/duckdb/duckdb/pull/14425
- Reformat generic functions by @c-herrewijn in https://github.com/duckdb/duckdb/pull/14423
- Push dynamically generated join filters through
UNION,UNNESTandAGGREGATEby @Mytherin in https://github.com/duckdb/duckdb/pull/14453 - Try auto-casting for mismatching data chunks in the Appender API by @taniabogatsch in https://github.com/duckdb/duckdb/pull/14433
- Implement
DELTA_BINARY_PACKEDcompression in Parquet writer by @lnkuiper in https://github.com/duckdb/duckdb/pull/14257 - Eviction Queue Partitioning by @lnkuiper in https://github.com/duckdb/duckdb/pull/14375
- Implement
map_extract_firstby @lnkuiper in https://github.com/duckdb/duckdb/pull/14175 - RowGroup no longer lives in format namespace by @Mytherin in https://github.com/duckdb/duckdb/pull/14469
- Convert the shell from C to C++ by @Mytherin in https://github.com/duckdb/duckdb/pull/14473
- Fixing an issue with parquet dictionary reading by @hannes in https://github.com/duckdb/duckdb/pull/14438
- Strip down unused/unsupported options from the CLI by @Mytherin in https://github.com/duckdb/duckdb/pull/14478
- [PySpark] Add withColumns, withColumnsRenamed, cos, acos, any_value, approx_count_distinct and various array functions by @binste in https://github.com/duckdb/duckdb/pull/14347
- CLI Code Cleanup: move all shell functions into the ShellState by @Mytherin in https://github.com/duckdb/duckdb/pull/14483
- CLI Code Cleanup: Move rendering logic into separate Renderer classes by @Mytherin in https://github.com/duckdb/duckdb/pull/14485
- Reformat compressed materialization functions by @c-herrewijn in https://github.com/duckdb/duckdb/pull/14470
- Internal #3273: Shared Window Expressions by @hawkfish in https://github.com/duckdb/duckdb/pull/14450
- CLI Code Cleanup: rework metadata commands in the shell by @Mytherin in https://github.com/duckdb/duckdb/pull/14503
- CSV Parallel Reading Validation by @pdet in https://github.com/duckdb/duckdb/pull/14439
- Avoid recompilations of duckdb when there are no actual changes by @carlopi in https://github.com/duckdb/duckdb/pull/14176
- Add
-safemode to shell which disables external access, and remove SQLite UDFs from the shell by @Mytherin in https://github.com/duckdb/duckdb/pull/14509 - [PySpark] Add functions covar_pop, covar_samp, call_functions, endswith, startswith, exp, factorial, log2, ln, degrees, radians, atan, atan2, tan, round, bround by @binste in https://github.com/duckdb/duckdb/pull/14454
- Reformat arithmetic operators by @c-herrewijn in https://github.com/duckdb/duckdb/pull/14489
- add attach with default tables by @samansmink in https://github.com/duckdb/duckdb/pull/14118
- Add duckdb_param_logical_type by @Giorgi in https://github.com/duckdb/duckdb/pull/14515
- Remove most BUILD_ options for extensions, using CORE_EXTENSIONS by @carlopi in https://github.com/duckdb/duckdb/pull/14531
- CLI: more code clean-up by @Mytherin in https://github.com/duckdb/duckdb/pull/14551
- Reformat nested and sequence functions by @c-herrewijn in https://github.com/duckdb/duckdb/pull/14495
- Parquet: Fixing selection vector calculation by @hannes in https://github.com/duckdb/duckdb/pull/14558
- CLI: Fix for .mode markdown rendering after refactor by @Mytherin in https://github.com/duckdb/duckdb/pull/14569
- Out-Of-Core Updates & Deletes by @Mytherin in https://github.com/duckdb/duckdb/pull/14559
- Manage
enable_external_accessat the FileSystem level, and addallowed_pathsandallowed_directoriesoption by @Mytherin in https://github.com/duckdb/duckdb/pull/14568 - feat(iejoin): use sort to replace binary search in iejoin by @my-vegetable-has-exploded in https://github.com/duckdb/duckdb/pull/14507
- Clean-up distinct statistics - add hashes cache add the Append and Vacuum layers, and remove unnecessary lock by @Mytherin in https://github.com/duckdb/duckdb/pull/14578
- [PySpark] Test Spark API with actual PySpark as backend by @binste in https://github.com/duckdb/duckdb/pull/14526
- Internal #3273: Shared Window Frames by @hawkfish in https://github.com/duckdb/duckdb/pull/14544
- Reformat aggregate functions by @c-herrewijn in https://github.com/duckdb/duckdb/pull/14530
- Expose threshold argument of Jaro-Winkler similarity by @zmbc in https://github.com/duckdb/duckdb/pull/12079
- No pushing filters below projections that cast to a lower logical type id by @Tmonster in https://github.com/duckdb/duckdb/pull/13617
- Implement
left_projection_mapfor joins by @lnkuiper in https://github.com/duckdb/duckdb/pull/13729 - remove superfluous comment by @c-herrewijn in https://github.com/duckdb/duckdb/pull/14586
- [Dev] Make the
regression_test_runnereasier to replicate by @Tishj in https://github.com/duckdb/duckdb/pull/14557 - [PySpark] Add dataframe methods drop_duplicates, intersectAll, exceptAll, toArrow by @binste in https://github.com/duckdb/duckdb/pull/14458
- Internal #3381: Window Race Condition by @hawkfish in https://github.com/duckdb/duckdb/pull/14599
- Rework generated EnumUtil code by @Mytherin in https://github.com/duckdb/duckdb/pull/14391
- Force aggregate state to be
trivially_destructible, unlessAggregateDestructorType::LEGACYis used by @Mytherin in https://github.com/duckdb/duckdb/pull/14615 - AWS - remove expected error message by @Mytherin in https://github.com/duckdb/duckdb/pull/14633
- Temp directory compression by @lnkuiper in https://github.com/duckdb/duckdb/pull/14465
- Add support for SELECT * RENAME by @Mytherin in https://github.com/duckdb/duckdb/pull/14650
- [PySpark] Add autocompletion for column names to dataframes by @binste in https://github.com/duckdb/duckdb/pull/14577
- Force aggregate state to be
is_trivially_move_constructibleby @lnkuiper in https://github.com/duckdb/duckdb/pull/14640 - Correctly render EXPLAIN EXECUTE - use op.GetChildren() instead of hard-coding special cases by @Mytherin in https://github.com/duckdb/duckdb/pull/14651
- Buffer Manager - Make DestroyBufferUpon atomic by @Mytherin in https://github.com/duckdb/duckdb/pull/14656
- proposed enhancements to the query graphs by @peterboncz in https://github.com/duckdb/duckdb/pull/14637
- Sampling respects seed from random number generator if no seed is given. by @Tmonster in https://github.com/duckdb/duckdb/pull/14374
- Blockwise NL Join: Return control on every iteration in
ExecuteInternalby @Mytherin in https://github.com/duckdb/duckdb/pull/14658 - feature(spark): add hex and unhex functions by @spenrose in https://github.com/duckdb/duckdb/pull/14573
- Support
SELECT * LIKE '%col%'syntax by @Mytherin in https://github.com/duckdb/duckdb/pull/14662 - feature(spark): add base64 and unbase64 function by @spenrose in https://github.com/duckdb/duckdb/pull/14561
- Fix #14663: correctly propagate null values in list concat operator by @Mytherin in https://github.com/duckdb/duckdb/pull/14675
ALTER TABLE ADD PRIMARY KEYby @taniabogatsch in https://github.com/duckdb/duckdb/pull/14419- Merge feature into main by @Mytherin in https://github.com/duckdb/duckdb/pull/14690
- Support for CSV Encoding (UTF-16 and Latin-1) by @pdet in https://github.com/duckdb/duckdb/pull/14560
- Fix #14699 - Correctly handle SHOW TABLES in views by @Mytherin in https://github.com/duckdb/duckdb/pull/14705
- Fix #14701 - avoid flattening in-place in ColumnData Append method by @Mytherin in https://github.com/duckdb/duckdb/pull/14708
- Use TryCastAs instead of DefaultTryCastAs in comparison_simplification by @Mytherin in https://github.com/duckdb/duckdb/pull/14711
- Value interface & serialization clean-up by @Mytherin in https://github.com/duckdb/duckdb/pull/14710
- Fix various nightly CI issues by @Mytherin in https://github.com/duckdb/duckdb/pull/14720
- CLI: Add support for
.thousand_sepand.decimal_sepby @Mytherin in https://github.com/duckdb/duckdb/pull/14721 - Propagate collations through functions in a generic manner by @Mytherin in https://github.com/duckdb/duckdb/pull/14717
- Add functions for handling null duckdb_values by @Giorgi in https://github.com/duckdb/duckdb/pull/14687
- adaptive filters should not reorder filters that can throw by @Tmonster in https://github.com/duckdb/duckdb/pull/14672
- [Python] Add
LambdaExpressionto the Python Expression API by @Tishj in https://github.com/duckdb/duckdb/pull/14713 - Add fallback for thread count if jemalloc cannot identify by @lnkuiper in https://github.com/duckdb/duckdb/pull/14688
- csv: parse escape character in unquoted fields by @fanyang01 in https://github.com/duckdb/duckdb/pull/14464
- [Python][Expression API] Add the
betweenmethod on theExpressionclass by @Tishj in https://github.com/duckdb/duckdb/pull/14726 - [Attach][Macro] Fix issues identified with an attached macro by @Tishj in https://github.com/duckdb/duckdb/pull/14715
- Dont quote strings on csv files if quote='' by @pdet in https://github.com/duckdb/duckdb/pull/14731
- sqlite3_api_wrapper: avoid nullptr dereference by @ProjectMutilation in https://github.com/duckdb/duckdb/pull/14748
- Rework
BlockHandleto no longer have friend classes, and reworkConvertToPersistentso it fails if there are active outstanding pins by @Mytherin in https://github.com/duckdb/duckdb/pull/14746 - Revert "CMake: Avoid dependency-inducing codegeneration of extension headers" by @carlopi in https://github.com/duckdb/duckdb/pull/14723
- [PySpark] Add more functions such as ascii, asin, btrim, char, corr, ... and fix differences in ordering of null values between PySpark and DuckDB by @binste in https://github.com/duckdb/duckdb/pull/14738
- Added list value getters duckdb_get_list_child and duckdb_get_list_size by @prashanthellina in https://github.com/duckdb/duckdb/pull/14714
- [Python][Expression API] Add
collateto create aCollateExpressionby @Tishj in https://github.com/duckdb/duckdb/pull/14749 - copy to operator still write schema for empty rows by @wenjun93 in https://github.com/duckdb/duckdb/pull/14524
- [Python] Use nullable dtypes in Pandas
DataFramecreation when possible by @Tishj in https://github.com/duckdb/duckdb/pull/14377 - Update metrics generation script and include it in CI run by @taniabogatsch in https://github.com/duckdb/duckdb/pull/14756
- Add support for projection pushdown into struct fields by @Mytherin in https://github.com/duckdb/duckdb/pull/14750
- Optimistic writes: flush the last row group in all scenarios by @Mytherin in https://github.com/duckdb/duckdb/pull/14759
- Improve SqlStatement::ToString for UPDATE and DELETE statement to include alias of RETURNING clause by @HarshLunagariya in https://github.com/duckdb/duckdb/pull/14765
- Add JSON Logical Type metadata to parquet writer by @niger-prequel in https://github.com/duckdb/duckdb/pull/14747
- [Python] Add support for
Expressiontovaluesto create a ValueRelation by @Tishj in https://github.com/duckdb/duckdb/pull/14757 - Add missing global options to Python's
write_parquetby @fr3fou in https://github.com/duckdb/duckdb/pull/14766 - Add operator name to profiling output by @ywelsch in https://github.com/duckdb/duckdb/pull/14744
- Detect catalog changes on DROP IF EXISTS by @ywelsch in https://github.com/duckdb/duckdb/pull/14742
- Correctly deal with continued operation after reading a truncated WAL, and clean up WAL handling logic in storage manager by @Mytherin in https://github.com/duckdb/duckdb/pull/14785
- [Fix] Error message in transaction manager by @taniabogatsch in https://github.com/duckdb/duckdb/pull/14788
- Initialize the grouping sets when there is a group by all to enable filter pushdown by @Tmonster in https://github.com/duckdb/duckdb/pull/14660
- Merge feature into main again by @Mytherin in https://github.com/duckdb/duckdb/pull/14793
- [Python][Expression API] Add
updatetoDuckDBPyRelation, acceptingExpressionobjects | AddDefaultExpressionby @Tishj in https://github.com/duckdb/duckdb/pull/14780 - Fix #14540: fix unnest rewriter by @flashmouse in https://github.com/duckdb/duckdb/pull/14784
- [PySpark] Add approxCountDistinct, add_months, and various array functions by @binste in https://github.com/duckdb/duckdb/pull/14620
- Add syntax highlighting support for errors in the CLI by @Mytherin in https://github.com/duckdb/duckdb/pull/14799
- Implement #14787: allow expressions in the aggregate clause of a PIVOT statement, as long as the aggregate clause only modifies the aggregate result and does not contain other columns by @Mytherin in https://github.com/duckdb/duckdb/pull/14800
- When repeatable is set, set ParallelSink to false by @Tmonster in https://github.com/duckdb/duckdb/pull/14797
- [Catalog] Fix issue related to uncaught problems during a COMMIT by @Tishj in https://github.com/duckdb/duckdb/pull/14150
- [Upsert] Support non-distinct values in the inserted data by @Tishj in https://github.com/duckdb/duckdb/pull/14293
- Fix issue copying a TABLE that references a SEQUENCE by @Tishj in https://github.com/duckdb/duckdb/pull/14693
- fix duckdb_extension.h macros for C by @samansmink in https://github.com/duckdb/duckdb/pull/14808
- LTO CMake setting was not working anymore on MacOS, fixing that by @carlopi in https://github.com/duckdb/duckdb/pull/14811
- Add syntax highlighting support to the DuckBox query result by @Mytherin in https://github.com/duckdb/duckdb/pull/14820
- Avoiding unnecessary rebinding by @samansmink in https://github.com/duckdb/duckdb/pull/14616
- Support struct projection pushdown in Parquet files by @Mytherin in https://github.com/duckdb/duckdb/pull/14839
- Internal #3263: Window Distinct Deadlock by @hawkfish in https://github.com/duckdb/duckdb/pull/14775
- Issue #14737: DISTINCT ORDER Dependency by @hawkfish in https://github.com/duckdb/duckdb/pull/14840
- [Python][Dev] Skip
test_pandas_selectionon Python3.8 by @Tishj in https://github.com/duckdb/duckdb/pull/14851 - [Python][Dev] Fix issues with new/updated tests in the python sqllogictest implementation by @Tishj in https://github.com/duckdb/duckdb/pull/14850
- add function ends_with back by @Damon07 in https://github.com/duckdb/duckdb/pull/14859
- Require
capacityin ValidityMask by @Mytherin in https://github.com/duckdb/duckdb/pull/14846 - Issue #11557: DECIMAL Downcast Rounding by @hawkfish in https://github.com/duckdb/duckdb/pull/14860
- Increase map inference threshold by @lnkuiper in https://github.com/duckdb/duckdb/pull/14848
- Output exception message on parse exception by @ackxolotl in https://github.com/duckdb/duckdb/pull/14852
- Use
LogicalTypeId::Unknowninstead ofLogicalTypeId::SQLNULLfor macro binding by @lnkuiper in https://github.com/duckdb/duckdb/pull/14809 - return InsertionOrderPreservingMap from TableFunction to_string by @samansmink in https://github.com/duckdb/duckdb/pull/14835
- Support default values when appending data chunks by @taniabogatsch in https://github.com/duckdb/duckdb/pull/14733
- [PySpark] Add a lot more functions incl. some regexp ones by @binste in https://github.com/duckdb/duckdb/pull/14761
- Added getters for enum and struct type values by @prashanthellina in https://github.com/duckdb/duckdb/pull/14831
- Fix write partition columns false by @ykskb in https://github.com/duckdb/duckdb/pull/14871
- Generate In-Clause filters from hash joins by @Mytherin in https://github.com/duckdb/duckdb/pull/14864
- Move FTS extension out-of-tree by @lnkuiper in https://github.com/duckdb/duckdb/pull/14872
- [C API] More tests and nits by @taniabogatsch in https://github.com/duckdb/duckdb/pull/14758
- Issue #14885: DATEPART Cache Bounds by @hawkfish in https://github.com/duckdb/duckdb/pull/14891
- Fix arrow table filters by @Tmonster in https://github.com/duckdb/duckdb/pull/14893
- [Python] Fix various issues uncovered by #12959 by @Tishj in https://github.com/duckdb/duckdb/pull/13149
- Remove some Snappy definitions by @lnkuiper in https://github.com/duckdb/duckdb/pull/14897
- [Fix] Binder exception when creating a foreign key on a view by @taniabogatsch in https://github.com/duckdb/duckdb/pull/14882
- [C API] Implement AddColumn and ClearColumns for the Appender by @taniabogatsch in https://github.com/duckdb/duckdb/pull/14880
- python: use PyUnicode_FromStringAndSize() by @methane in https://github.com/duckdb/duckdb/pull/14895
- Top-N: Improve performance with large heaps, and correctly call Reduce by @Mytherin in https://github.com/duckdb/duckdb/pull/14900
- Append to child column first in list column append by @Mytherin in https://github.com/duckdb/duckdb/pull/14902
- Update cardinality during limit pushdown by @jeewonhh in https://github.com/duckdb/duckdb/pull/14901
- Add
struct_concatby @Maxxen in https://github.com/duckdb/duckdb/pull/14853 - [Compression] Add ZSTD compression by @Tishj in https://github.com/duckdb/duckdb/pull/14514
- Improve timestamp functionality by @taniabogatsch in
These notes run past the length kept in the archive. The rest is on the publisher’s page.