Releases: duckdb/duckdb
v1.1.3 Bugfix Release
This is a bug fix release for various issues discovered after we released 1.1.2. There are no new major features, just bug fixes. Database files created by DuckDB versions all the way back to v0.9.* can be read by this version.
What's Changed
- [Adaptive Sniffer] In case files have only one row, be more permissive to detect headers and types. by @pdet in #14174
- Increase bounds for
test/sql/copy/file_size_bytes.test
by @lnkuiper in #14367 - Use table-level locking when acquiring shared locks by @ywelsch in #14370
- [Arrow] Fix scanning of BOOL columns when offsets are involved by @Tishj in #14395
- avoid unnecessary file list materialization when pruning readers by @samansmink in #14397
- Fixing type pushdown on the CSV Scanner by @pdet in #14399
- Issue #14398: Lead Shift Defaults by @hawkfish in #14409
- Escape should default to quoted by @pdet in #14418
- Sniff CSV rejects options and small sniffer fix for ignore_errors by @pdet in #14417
- Fix #14430 - throw an error when reading corrupt statistics in the perfect hash aggregate by @Mytherin in #14442
- Use corrent container to produce BinderErrors by @carlopi in #14437
- Rework list_concat to accept a variable number of arguments similar to string concat by @Mytherin in #14443
- SingleFileBlockManager::MarkBlockAsUsed - also erase from newly_freed_list to ensure trim does not prune blocks that are in-use by @Mytherin in #14467
- acosh: Change example to avoid returning NaN by @szarnyasg in #14477
- Don't move lvalue when inserting in order preserving map by @Maxxen in #14492
- bump vss by @Maxxen in #14493
- Bug in percentage calculation in query_graph by @bjornasm in #14494
- fix: standardize usage of LogicalType::ROW_TYPE for COLUMN_IDENTIFIER_ROW_ID by @rustyconover in #14480
- [Python][Dev] Fix up test to work with older version by @Tishj in #14505
- Avoid throwing on failure to open extensions's .info file (when force installing) by @carlopi in #14272
- Python 3.7 tests are particularly brittle, we will keep building wheels but avoid testing them by @carlopi in #14510
- Being more restrictive with the names option in the csv reader by @pdet in #14466
- [Arrow] Fix issue where uninitialized memory was being read when scanning empty lists by @Tishj in #14538
- Fix #14545 - pivot header must be defined in the grammar by @Mytherin in #14556
- [Python][Arrow] Cast to
py::bytes
when dealing with BLOB in filter pushdown by @Tishj in #14553 - [Dev] Include aliases for RETURNING list expressions in
ToString
by @Tishj in #14533 - CI: Mirror 'reproduced' / 'under review' to the internal repository by @szarnyasg in #14527
- Approx-Top K: Make aggregate state trivially destructible by @Mytherin in #14571
- Don't pre-initialize hash vector in DistinctStatistics construction by @abramk in #14570
- Fix query_graph tool for #14290 by @JasonPunyon in #14521
- Fix typos by @deining in #14579
- [Dev] Traverse the
replace_list
of StarExpression inParsedExpressionIterator::EnumerateChildren
by @Tishj in #14535 - chore: Add EOL to source files by @krlmlr in #14583
- Issue template: Add Swift redirect by @szarnyasg in #14588
- Fix for underflow issue on number of rows in the CSV Reader by @pdet in #14587
- Cas strong by @lnkuiper in #14592
- HTTPFS: HTTPException no longer inherits from IOException by @Mytherin in #14585
- [bufferpool] Fix PurgeAgedBlocksInternal() evictions by @Vegetable26 in #14446
- CI: Add bot for 'minimal reproducible example' by @szarnyasg in #14598
- CI: Fix and simplify 'needs reproducible example' labelling by @szarnyasg in #14608
- CI: Fix and simplify 'needs reproducible example' labelling by @szarnyasg in #14609
- Enable serialization of LogicalExport by @Mytherin in #14594
- Test fixes for new arrow release by @pdet in #14593
- CI: Fix labelling bot by @szarnyasg in #14611
- CI: Add repo name to labelling script by @szarnyasg in #14612
- Unexpected result comparing blob by @Tmonster in #14604
- Storage info update by @szarnyasg in #14371
- Fix #14600: use UUID to generate unique pivot enum names by @Mytherin in #14622
- Fix #14601: avoid exporting entries in the temp or system schema by @Mytherin in #14623
- Issue #14618: Year Day Year by @hawkfish in #14624
- Fix #14542 by @lnkuiper in #14610
- add index plan callback to IndexType by @Maxxen in #14511
- FIX: Discrepancy Between Count and Sum Queries in SQL by @Tmonster in #14634
- Fix Windows Extensions CI by @Mytherin in #14643
- chore: Add qualification for brotli code by @krlmlr in #14628
- fix: Initialize atomic class member by @krlmlr in #14627
- Fix secret serialization issues by @samansmink in #14652
- Add serialization for bitstring_agg function by @ywelsch in #14654
- Force error on CSV Sniffer Failure by @lcostantino in #14661
- bump vss + spatial by @Maxxen in #14667
- Bump extensions: AWS, Delta, Iceberg, INET by @carlopi in #14669
- fix scoping problem with function argument by @Damon07 in #14666
Full Changelog: v1.1.2...v1.1.3
v1.1.2 Bugfix Release
This is a bug fix release for various issues discovered after we released 1.1.1. There are no new major features, just bug fixes. Database files created by DuckDB versions all the way back to v0.9.* can be read by DuckDB v1.1.2.
What's Changed
- [CI] Re-enable ART zero initialisation verification by @taniabogatsch in #14031
- Push filters instead of overwriting filters by @Tmonster in #14078
- Fix test by @Tmonster in #14079
- fix maximum_threads test inside containers by @wenjun93 in #14083
- Fix: remove is_probe_in_domain by @Light-City in #14084
- Add duckdb_extension.h to amalgamation release by @samansmink in #14086
- Bump minimum required cmake version by @abramk in #14089
- Fix parser error by removing alias by @taniabogatsch in #14090
- [Dev] Move
EnumTypeInfoTemplated
definition into ahpp
file by @Tishj in #14038 - Fix #14077: correctly reset next pointer when reconstructing new row group segment tree after vacuum by @Mytherin in #14092
- Format CSV error messages by @szarnyasg in #14097
- Fix the answer file for tpcds q67 at sf100 by @Tmonster in #14096
- Add v1.1.1 to version_map.json by @Flogex in #14110
- CREATE TABLE now supports columns with
ENUM[]
types. by @Tishj in #14102 - fix parquet cardinality when first file is empty by @wenjun93 in #14058
- [Python Dev] Make sure the GIL is released when the connection+db are being shut down by @Tishj in #14113
- Less salt by @lnkuiper in #14173
- remove redundant code by @flashmouse in #14172
- comparison of nested types returns true or false always (even with nulls) by @Tmonster in #14094
- subtype DBInterface.Connection in julia client by @piever in #14193
- [Python] Fix a bug with
python_scan_all_frames
reaching the bottom of the frame stack by @Tishj in #14183 - [Dev] Fix issue where the InsertStatement::ToString call destroyed the
alias
of the ValuesList by @Tishj in #14171 - [Python] Fix issue related to scanning float64 dtype columns that contain a mask by @Tishj in #14170
- Fix some warnings found while compiling duckdb-node by @carlopi in #13994
- fix minmax type info miss by @Damon07 in #14159
- fix: ArrowSchemaMetadata::GetOption to return empty string instead of raising exception if key is not found. by @rustyconover in #14157
- Issue 14151: Fix conflicting defines on Windows hidden by cmake unity builds by @zmajeed in #14154
- Issue 14189: Fix build when threads are disabled by @zmajeed in #14190
- Fix an uncaught error with a generated column containing a subquery by @Tishj in #14198
- Add missing word in TableFunction comment by @JelteF in #14210
- add method to check whether julia connection is open by @piever in #14195
- Avoid schema changes with IF NOT EXISTS by @ywelsch in #14143
- Fix typos in code by @c8ef in #14243
- [Dev] Add the ExecutorException class, making use of the EXECUTOR ExceptionType by @Tishj in #14231
- [Python] Don't allow construction of DuckDBPyType from empty Dict type by @Tishj in #14221
- Fix #14232: fix deliminator optimizer by @flashmouse in #14238
- [CSV Reader] Also use figure-out-line code when ignoring errors. by @pdet in #14184
- remove redundant Bit::SetBit by @flashmouse in #14226
- Fix #14212: mention correct query component when using literal in DISTINCT ON by @Mytherin in #14255
- Removing overzealous check in Parquet by @hannes in #14268
- Update sqlsmith extension and patches by @Tmonster in #14270
- Support for duckdb.varint extension in Arrow. by @pdet in #14273
- Disable CSV ignore_errors benchmark by @pdet in #14277
- Only slice initialized vectors in
PhysicalHashAggregate::SinkDistinctGrouping
by @lnkuiper in #14289 - Fix #14249: return NAN when dividened is 0 by @flashmouse in #14298
- Revert "Fix #14249: return NAN when dividened is 0" by @Mytherin in #14308
- fix macro name with the same function name in it which causing repeat… by @Damon07 in #14296
- Fixing issue with the sniffer on copy statetements by @pdet in #14295
- Json bugfixes by @lnkuiper in #14288
- [Bitstring] Add overload for
bitstring
to accept BIT as the type of the first argument by @Tishj in #14247 - [Fix] Don't initialize reference, constant, and parameter children in intermediate chunk by @taniabogatsch in #14254
- Profiling - correct settings per node type and minor renaming for clarity by @taniabogatsch in #14290
- Fix extension size increase by @samansmink in #14185
- Add option to ignore GeoParquet, disable spatial autoloading when reading GeoParquet by @Maxxen in #14297
- More defensive programming in RowVersionManager::CleanupAppend by @Mytherin in #14317
- Change Makefile to correctly handle DISABLE_SANITIZER and DISABLE_UBSAN by @JelteF in #14316
- [CSV Reader] Making escape not limited to only quotes by @pdet in #14314
- allow external cardinality information (e.g. from iceberg) by @peterboncz in #14292
- [SecretManager] Fix deserialization of Value types in KeyValueSecret::Deserialize by @Tishj in #14332
- Avoid throwing InternalException on reading secret by @carlopi in #14336
- delay the rewrite of a large IN-clause into a MarkJoin on remote Filter-Scans by @peterboncz in #14266
- JSON reader - never generate maps if map_inference_threshold is -1 by @Mytherin in #14348
- [Appender] Support appending to table with generated columns by @Tishj in #14346
- Internal #3251: DateDiff Across Epoch by @hawkfish in #14338
- Bump azure and delta extensions commits by @carlopi in #14350
- Bump spatial to 3f94d52aa9f7d67b1a30e6cea642bbb790c04aa2 by @carlopi in #14351
- Bump more extensions: iceberg, vss and sqlite_scanner by @carlopi in #14352
- Emit profiling info for extension operators by @Mytherin in #14355
Full Changelog: v1.1.1...v1.1.2
v1.1.1 Bugfix Release
This is a bug fix release for various issues discovered after we released 1.1.0. There are no new major features, just bug fixes. Database files created by DuckDB since v0.9.* can be read by DuckDB v1.1.1.
What's Changed
- [Python] Fix a crash related to handling of the
f_locals
by @Tishj in #13821 - [Dev] Remove unnecessary parameter from BufferHandle constructor by @Tishj in #13823
- When vacuuming, immediately checkpoint the vacuumed row groups instead of scheduling a checkpoint task by @Mytherin in #13825
- Check for unquoted errors after finishing up a buffer. by @pdet in #13826
- Issue #13813: TIMETZ Uninvertible Casts by @hawkfish in #13820
- add cardinality for cross product and propositional join by @jeewonhh in #13818
- Add requested_schema argument to PyCapsule interface by @WillAyd in #13802
- Throw at double/float cast to decimal if it does not fit by @pdet in #13745
- [Fix] C API - Correct type comparison in MAP value functions by @taniabogatsch in #13844
- [C-API Dev] Fix up
"Test DataChunk populate ListVector in C API"
test by @Tishj in #13839 - [Dev] Minor cleanup to BufferManager and BlockHandle API by @Tishj in #13838
- Small fixes for prompt of sniff_csv by @pdet in #13843
- [BufferManager] Fix
duckdb_memory()
reporting wrong size fortemporary_storage_bytes
by @Tishj in #13837 - Fix for internal error when using rejects tables and adding implicit cast for boolean values. by @pdet in #13849
- [Fix ART] Correct prefix transformation by @taniabogatsch in #13858
- [Python] Fix issue causing an exception when creating a
duckdb.StarExpression
without anexclude_list
by @Tishj in #13881 - Fix issue with cgroups/slurm variables: skip if memory limit cannot be parsed, and only run this on Linux by @Mytherin in #13879
- Explicit windows-2019 instead of windows-latest by @carlopi in #13883
- CI/Windows: Drop redundant package by @szarnyasg in #13874
- Preserve operator in
BindWithCTE
by @lnkuiper in #13873 - Update description of 'max_temp_directory_size' by @szarnyasg in #13724
- 13810 unnest cross join error by @Tmonster in #13878
- Tweak allocation purging by @lnkuiper in #13877
- Copy From Database - create a balanced UNION ALL tree instead of a depth-first union all tree to avoid stack overflows by @Mytherin in #13889
- [Python] Fix issue related to the GIL when using
execute
with multiple statements by @Tishj in #13893 - Fix #13880: correctly name http_proxy_password setting by @Mytherin in #13890
- Fix #13872: duckdb_result_return_type is not deprecated, and group together deprecated functions by @Mytherin in #13891
- [Python] Add
python_scan_all_frames
to opt-in to scanning all frames (< 1.1 behavior) by @Tishj in #13896 - Improve error on enums by @carlopi in #13885
- Handle extension ABI mismatches in a forward & backward compatible way by @carlopi in #13894
- Fix #13824: min() max() varchar column use default collation by @flashmouse in #13909
- Fix issue in casting 2 byte BIT -> BLOB by @Tishj in #13908
- add missing azure secret providers for autoloading by @samansmink in #13902
- Remove buffer_manager_allocate.patch and bump spatial by @carlopi in #13895
- [Python] Improve
install_extension
to supportrepository
/repository_url
andversion
by @Tishj in #13876 - fix REGEX not supported anymore for valid queries (only statement error) #2889 by @hmeriann in #13633
- [CI] Invert operations on OSX.yml, deploying nightly artifacts before test by @carlopi in #13927
- [Python][Jupyter] Don't use
ExplainFormat::HTML
forexplain('analyze')
by @Tishj in #13928 - Only bind to SQL value functions if there is no alias with this name present we can bind to instead by @Mytherin in #13925
- Improve logic for remote extension install on Windows by @carlopi in #13929
- CI: Trigger actions for labeled discussions by @szarnyasg in #13937
- [Swift] Update README.md in Swift repo by @tcldr in #13955
- [Dev] Add exclusion for
pybind11
internal_pybind11_conduit_v1_
method by @Tishj in #13961 - Create a balanced union tree, also for export by @Mytherin in #13956
- Increment julia version by @Mytherin in #13966
- Fix #13585 - transform from or select first based on order specified by the user by @Mytherin in #13959
- Fix Cross Product Cardinality by @jeewonhh in #13954
- Do not run the date/timestamp format sniffer if they are set by the user by @pdet in #13960
- Modify create_art_varchar.benchmark so it passes weekly regressions by @Tmonster in #13968
- Fix data race when writing GeoParquet by @Maxxen in #13962
- Check vector type in GetVectorScanType to avoid concurrent race when updating validity by @Mytherin in #13965
- Parser Keyword Category Search by @pdet in #13875
- Escape quotes in FTS by @lnkuiper in #13917
- Fix #13941: fix error message in appender by @Mytherin in #13957
- fix: remove http prefix from proxy value when present by @dylanspag-lmco in #13973
- Use defaults when serializing copy to file by @Mytherin in #13978
- Fix #13933: disable join filter pushdown when a join is performed over collated columns by @Mytherin in #13958
- Fix partitions on wide tables by @piever in #13988
- [Fix] Throw exception for UNNEST in lambdas by @taniabogatsch in #13969
- Fixing some parquet issues found by fuzzing by @hannes in #13964
- fix julia partitions for streaming result by @piever in #14000
- More descriptive Parquet created_by with version and source hash by @hannes in #13992
- Decimal downcast limit check by @pdet in #13922
- [C API] Add SQLNULL to the duckdb types by @taniabogatsch in #13999
- Fix crash in the shell caused by printing blobs that failed to cast by @Maxxen in #13983
- [Binding] Always try binding with the schema of the
UserType
first if it's set by @Tishj in #13995 - [Arrow] Only produce 'arrow.json' Extension types when
arrow_lossless_conversion
is enabled. by @Tishj in #13989 - Bugfixes by @lnkuiper in #13982
- Disable swift linux tests by @Mytherin in #14019
- fix minor typos in comments of aggregate function tests by @era127 in #14007
- [CSV Sniffer] Slight change of rules for dialect detection by @pdet in #14013
- [Test Fix] Add noforcestorage to in-memory tests by @taniabogatsch in #14016
- Fix #14020: fix off-by-one in RLE compression: avoid flushing when last_seen_count == 0 which can happen if a column has exactly 2^16 (65535) repeated values by @Mytherin in #14030
- Adds Julia support for scalar UDFs by @drizk1 in #14024
- Proper NULL handling in special json extraction functions by @lnkuiper in #14032
- Fix #13993 - avoid disabling optimizers for SET VARIABLE by @Mytherin in #14028
- [Arrow] Make unknown Arrow extensions throw at scan instead of bind by @pdet in #14015
- Improve assertion macros by @c-herrewijn in #14033
- [Arrow] Move
ArrowUtil
to its own file by @Tishj in #13990 - [CSV Sniffer] Verify validity of header before value access by @pdet in #14040
- Fix #14026: all TIMESTAMP_xx cannot cast to TIME directly by @flashmouse in https://...
DuckDB 1.1.0 "Eatoni"
This release of DuckDB is named "Eatoni" after Eaton's pintail (Anas Eatoni) from the southern Indian Ocean.
Please also refer to the announcement blog post: https://duckdb.org/2024/09/09/announcing-duckdb-110
What's Changed
- Add feature changes back in by @Mytherin in #11146
- Make
MultiFileReader
filename configurable by @lnkuiper in #11178 - [Dev] Fix compilation issues on
feature
by @Tishj in #11082 - add query() and query_table() functions by @chrisiou in #10586
- [Block Size] Move the block allocation size into the block manager by @taniabogatsch in #11176
- LIMIT pushdown below PROJECT by @jeewonhh in #11112
- BUGFIX: IN () filter with one argument should translate to = filter. by @Tmonster in #11473
- Regression Script should calculate micro benchmark differences with the correct base branch by @Tmonster in #11762
- Pushdown filters on window partitions by @Tmonster in #10932
- Arrow ListView Type by @Tishj in #10766
- Add scalar function support to the C API by @Mytherin in #11786
- Add TopN optimization in physical plan mapping by @kryonix in #11290
- Join-dependent filter derivation by @lnkuiper in #11272
- Implement
ROW_GROUPS_PER_FILE
for Parquet by @lnkuiper in #11249 - Prefer Final projected columns on probe side if cardinalities are similar by @Tmonster in #11109
- Propagate unused columns to distinct on by @Tmonster in #11006
- Separate eviction queues by
FileBufferType
by @lnkuiper in #11417 - Disable false positive for vector size nightly in test by @taniabogatsch in #11953
- Rework jemalloc extension by @lnkuiper in #11891
- Tweak jemalloc config by @lnkuiper in #12034
- Httpfs test to nightly by @carlopi in #12196
- Removed three reinterpret casts and some rewriting by @taniabogatsch in #12200
- Begin Profiling Rework to move towards Modularity by @maiadegraaf in #11101
- [CLI] Add highlighting + limited auto-complete for shell dot commands by @Mytherin in #12201
- Skip test to fix block size nightly and add more explicit error checking by @taniabogatsch in #12211
- Remove BLOCK_ALLOC_SIZE from the column segment files by @taniabogatsch in #11474
- [Julia] - Added optional
schema
input argument toDuckDB.Appender
constructor by @curtd in #12174 - Fix Mark Index in the Bound Join Ref by @pdet in #12263
- Fix for CI Regression Failure by @maiadegraaf in #12273
- 🦆 by @samansmink in #12303
- Disable
JEMALLOC_RETAIN
by @lnkuiper in #12185 - Enforce compression extensions for CSV Files by @pdet in #11903
- Make spuriously failing test more robust by @lnkuiper in #12306
- Add new extensions to issue template by @szarnyasg in #12313
- [Fix] Block size nightly run by @taniabogatsch in #12283
- Spell Check | Nothing Major | Corrected base_scanner.cpp by @nj7 in #12282
- add duckdb_bind_timestamp_tz function to C API by @karlseguin in #12151
- [Python] Add some date/datetime functions to pyspark api by @mariotaddeucci in #12075
- Fixes to Windows workflow and ubuntu_18 action by @carlopi in #12308
- [Extension Dev] Forward declare re2 in
hive_partitioning.hpp
by @Tishj in #12302 - add expected errors to test/sql/copy/per_thread_output.test by @hmeriann in #12280
- Issue #12287: ICU Strptime Lists by @hawkfish in #12295
- Issue #12171: Streaming Window FILTER by @hawkfish in #12250
- [Python] Update the Connection wrapper generation, now generates c++ code by @Tishj in #12216
- Use iterator buffer position when storing buffer handles by @pdet in #12315
- Bump Julia client to v0.10.3 by @Mytherin in #12323
- Fix #12286 - in the MetadataManager, prefer to allocate new blocks if the next free block id is smaller than the currently used metadata block by @Mytherin in #12318
- [Fix] Only read file size if file handle still exists by @taniabogatsch in #12319
- Add support for APPEND argument to hive partitioned write by @Mytherin in #12262
- Remove all reinterpret casts from the transformer by @taniabogatsch in #12320
- Additional check for overlapping CTE names by @lnkuiper in #12305
- [Dev]
STANDARD_VECTOR_SIZE
andBLOCK_ALLOC_SIZE
can now be set through the Makefile by @Tishj in #12164 - [Upsert] Fix issue with lambdas in
DO UPDATE SET
expressions by @Tishj in #11866 - [Python] Fix scoping issue for
pandas_analyze_sample
setting by @Tishj in #11706 - Support REGEX matches expected error message by @hmeriann in #12327
- Allow run_fuzzer to reduce multi statements. by @Tmonster in #12278
- Fix #12328 - when flattening STRUCT vectors with NULL values, we need to flatten the children recursively as well by @Mytherin in #12332
- Make
dbgen
generate data in parallel by @Mytherin in #12337 - dbgen: skip parallel generation if DUCKDB_NO_THREADS is set by @Mytherin in #12341
- Add prefix prefix_front_back. to get prefix_front_ and prefix_back_ by @liujiayi771 in #12344
- Issue #12171: Streaming Windowed DISTINCT by @hawkfish in #12311
- Update README by @szarnyasg in #12357
- [CSV Reader] [Skip Option] Tests and fixes by @pdet in #12213
- Adjust BM25 score in FTS extension to prevent negative scores by @lnkuiper in #12356
- Fix typos by @szarnyasg in #12360
- Fix #12293 - accept NULL values in generate_series with timestamp by @Mytherin in #12367
- Fix #12335: avoid calling fsync when writing Parquet files, instead just close the file by @Mytherin in #12371
- Fix parameters passed down to other workflows in OnTag.yml by @carlopi in #12369
- [Python] Fixes for the SQLLogicTest runner implementation by @Tishj in #12372
- Bump julia to v1.0.0 by @Mytherin in #12379
- Fix #11921 - varchar -> timestamp casts are not invertible by @Mytherin in #12376
- Upgrade utf8proc - and move our custom extensions out of utf8proc itself by @Mytherin in #12373
- change max_queries number back to 2000 by @Tmonster in #12375
- Remove sqlsmith extension by @Tmonster in #12300
- Reorder semi and anti joins. by @Tmonster in #11815
- Issue #12351: implicit cast to
TIMESTAMP_MS
,TIMESTAMP_S
,TIMESTAMP_NS
fromDATE
values by @akoshchiy in #12352 - Issue #10023: Approx_Count_Distinct Memory Usage by @hawkfish in #12355
- Fix a small typo in dev instructions for swift setup by @gjmwoods in #12383
- Release lock before returning
BufferHandle
inStandardBufferManager::Pin
by @lnkuiper in #12391 - Remote attach autoload by @carlopi in #12393
- Add JSON type to Parquet reader/writer by @lnkuiper in #12222
- Add
RETURN_FILES
parameter toCOPY TO
by @lnkuiper in #12220 - Updated JoinHashTable to use linear probing to resolve hash collisions by @gropaul in #11472
- [Benchmark Runner] Add
--disable-timeout
flag by @Tishj in #12387 - Don't replace unicode spaces within
$$
quotes in query strings by @lnkuiper in #12405 - [Python] Fix fatal exception caused by empty Pandas Categorical objects. by @Tishj in https://github...
DuckDB 1.0.0 "Nivis"
This release of DuckDB is named "Nivis" after the sadly non-existent Snow Duck (Anas Nivis) that is known for its stability.
Please also refer to the announcement blog post: https://duckdb.org/2024/06/03/announcing-duckdb-100
What's Changed
- Fix move constants optimization by @gitccl in #12189
- FALLOC_FL_PUNCH_HOLE requires GLIBC 2.18 or above - check for this using an #ifdef by @Mytherin in #12193
- Fix cmake install for shared_ptr headers by @carlopi in #12194
- Fix minor warnings by @carlopi in #12195
- Install .ipp files in addition to the usual .hpp files by @smonkewitz in #12198
- Set a default value to the
connection
param in stubs by @tm-drtina in #12207 - Fix #12190: add SYSTEM to set of reserved database names by @Mytherin in #12206
- Add
enable_view_dependencies
which defaults tofalse
by @Tishj in #12209 - [Python] Fix replacement scans incorrectly finding duckdb connection method objects by @Tishj in #12208
- [CI] Diff against the right remote + branch in
Regressions.yml
-Regression Test new micro benchmark
by @Tishj in #12106 - [Python] Fix bug where
enable_external_access
was not being respected by the replacement scan by @Tishj in #12224 - Remove outdated CI for extensions, check duckdb/extension-ci-tools by @carlopi in #12229
- Python: Avoid packaging for both 3.7 on OSX and MacOS 11 by @carlopi in #12236
- Issue #12215: AsOf Predicate Pushdown by @hawkfish in #12238
- [DependencyManager] Don't block
ADD COLUMN
statements if there are dependencies. by @Tishj in #12226 - [Python] Add check for 'params' to
table_function
by @Tishj in #12233 - Extension installing/updateing fixes by @samansmink in #12221
- Move excel extension out of tree by @carlopi in #12123
- Fix #12225: revert OVERWRITE_OR_IGNORE to previous behavior, move new behavior to OVERWRITE flag by @Mytherin in #12240
- Fix warning on unannotated fallthrough by @carlopi in #12244
- Fixup staged uploads /3 by @carlopi in #12245
- [Python] fix build when BUILD_HTTPFS set by @paparodeo in #12223
- Use --always option of git describe for extension tags. by @carlopi in #12253
- [Docs] Fix up examples/python/duckdb-python.py by @Tishj in #12255
- [Fix] Skip lazy WAL creation test for alternative verification by @taniabogatsch in #12258
- add missing virtual destructor by @samansmink in #12266
- Add storage callbacks for checkpoint start and end by @bleskes in #12260
- Do not prefix error messages with an unknown type by @bleskes in #12265
- Fix minor duckdb_extensions table function bug by @samansmink in #12269
- C API: Adding deprecation and move notices to duckdb.h and a test case by @hannes in #12259
- Issue #12252: APPROX_QUANTILE Array Argument by @hawkfish in #12271
- Turn InternalException into NotImplementedException in COPY FROM DATABASE by @Mytherin in #12264
- Add descriptions for vss and delta extensions by @carlopi in #12267
- [C-API] Properly handle exceptions caused by name collisions in
duckdb_register_table_function
by @Tishj in #12257 - Fix for multifilereader extra_columns feature by @samansmink in #12281
- Add
enable_macro_dependencies
which defaults to false by @Mytherin in #12291
Full Changelog: v0.10.3...v1.0.0
v0.10.3 Bugfix Release
This is a bug fix release for various issues discovered after we released 0.10.2. There are no new major features, just bug fixes. Database files created by DuckDB v0.10.* or v0.9.* can be read by DuckDB v0.10.3.
Highlights
Even though this is "only" a bug fix release, there have been some major areas of work that warrant a separate mention:
- We have added a feature to update extensions using the
UPDATE EXTENSIONS
syntax #11677 - There have been some serious internal improvements around checkpointing, most notably, checkpoints can run while other connections are reading, and no longer block new connections while checkpointing #11918. Also,
FORCE CHECKPOINT
no longer actively cancels transactions, it now waits until it can checkpoint #12061 - DuckDB now has native support to load data from HuggingFace using the
hf://
prefix #11831 - We have slightly changed
NULL
casting behaviour with theMAP
type #11745 - The Java JDBC driver has been moved to its own repo: https://github.com/duckdb/duckdb-java #11873
- DuckDB now cleanly compiles with
-Wconversion
and all conversions are actually being checked #11716, #11673
What's Changed
- Add setting to control the maximum swap space by @Tishj in #10978
- [Python][Dev] Dynamically generate the Connection wrapper methods by @Tishj in #11202
- Fixes duckdb wasm by @carlopi in #11688
- Checked conversions between signed and unsigned integers by @hannes in #11673
- Bump Julia to v0.10.2 by @Mytherin in #11700
- Minor improvements to sql_reduce script by @Mytherin in #11701
- Properly avoid build-time dependency on Python by @carlopi in #11713
- Test dockerized compilation in Alpine:latest and Ubuntu:20.04 by @carlopi in #11708
- [COPY CSV] Enable TIMESTAMP_TZ formats by @Tishj in #11711
- Full conversion warnings / checks by @hannes in #11716
- [Safety] Add safety checks to
shared_ptr
access by @Tishj in #11696 - Remove bound_defaults from BoundCreateTableInfo by @Mytherin in #11721
- Improve mkdir error reporting by @Mytherin in #11723
- [Dev] Fix failing CI in Python SQLLogicTest Runner by @Tishj in #11724
- More docker tests, fix compilation up to C++23 standard by @carlopi in #11725
- Upload staging: from 'git describe --tags' to 'git log -1' by @carlopi in #11715
- Internal #1848: Window Progress by @hawkfish in #11702
- Remove BoundConstraint from the TableCatalogEntry by @Mytherin in #11735
- Implicit Cast for any Date/Timestamp by @pdet in #11733
- feat: rewrite which_secret() into a table function by @stephaniewang526 in #11726
- [Map] Rework
MAP
creation method behavior when input is NULL by @Tishj in #11730 - [Dev] Always use
SQLStatement->Copy()
when ALTERNATIVE_VERIFY is defined by @Tishj in #11732 - Reconstruct Error Messages for Flush Cast by @pdet in #11736
- Getting Rid of Value.TryCast in the CSV Sniffer by @pdet in #11717
- Fix Join order optimizer so that plan generation is always via the most current entry in the DP table. by @Tmonster in #11719
- fix(py): support DuckDBPyType#children for array and enum by @Mause in #11754
- Consider not null values when doing export database by @pdet in #11679
- Add missing space in error message by @szarnyasg in #11759
- Allow to build python packages without c++ sources by @carlopi in #11758
- No Mark to Semi join conversion in statistics propagation by @Tmonster in #11596
- Hive partitioned write: lazy partitioning initialization by @Mytherin in #11765
- Hive partitioning: avoid calling CreateDirectories for every flush, instead create the directory for a partition only when that partition is instantiated by @Mytherin in #11777
- [Parquet] Support reading the non-standard NULL ConvertedType by @Tishj in #11774
- Only store CSV Errors if we are doing rejects table, otherwise just ignore it. by @pdet in #11763
- CI: Add job for 'expected behavior' label by @szarnyasg in #11784
- Move recursive_query_csv.test to slow test by @pdet in #11770
- [StatementVerifier] Fix up issues in ToString implementations of classes derived from SQLStatement by @Tishj in #11625
- Hive partitioning: make OVERWRITE_OR_IGNORE remove files on local file systems by @Mytherin in #11787
- [ODBC] Add ODBC Test for Database Reconnection and Data Persistence by @maiadegraaf in #11783
- Correctly parse dollar-quoted strings in sqlite3_complete and linenoise by @Mytherin in #11789
- Add a configurable compression_level parameter to the parquet writer by @Mytherin in #11791
- Close file after file lock failure by @awitten1 in #11795
- Python: Add missing options to write_parquet by @jzavala-gonzalez in #11790
- [PythonDev] Fix up failing tests in CI by @Tishj in #11801
- Fix
static bitpacking_width_t FindMinimumBitWidth(T *values, idx_t count)
inclass BitpackingPrimitives
by @Lloyd-Pottiger in #11757 - Add note on CMAKE_BUILD_PARALLEL_LEVEL by @mlafeldt in #11808
- Elaborate on internal errors by @szarnyasg in #11816
- Fix #11756: Don't throw exception on CREATE UNIQUE INDEX IF NOT EXISTS if index already exists by @ewencp in #11821
- Python CI fixes: skip two tests by @carlopi in #11818
- Fix #11798 - lateral join parameters should not be visible in views by @Mytherin in #11825
- Fix #11804: make sure json_type can check null by @lnkuiper in #11807
- Fixing performance regression in [u]hugeint cast by @hannes in #11829
- [Dev] ClientContextWrapper yak shaving by @Tishj in #11830
- [Python] Add
checkpoint
method, improve shutdown experience by @Tishj in #11810 - [Benchmark] Enable benchmarking result collection by @Tishj in #11529
- [DependencyManager] Create dependencies between foreign key tables and primary key tables. by @Tishj in #11524
- [Python] Synchronize defaults of DuckDBPyRelation method
fetch_df_chunk
by @Tishj in #11834 - Internal #1888 TIMETZ Collation Keys by @hawkfish in #11861
- Removing old code that used to check if a buffer was the last buffer from the file handler by @pdet in #11846
- Use
ToSQLString()
inConstantFilter
for escaped filter output by @rcurtin in #11797 - [StatementVerifier] Add
ToString
for every remaining SQLStatement, is pure virtual now by @Tishj in #11788 - Pushdown Tables Types to CSV Scanner by @pdet in #11792
- [Python Dev] Fix shift between
requirements-dev.txt
andpyproject.toml
before-test
section by @Tishj in #11863 - Join order optimizer asan bug Follow up by @Tmonster in #11794
- BugFix: Introducing Introducing Delim Joins and Delim_Get(s) should respect positionally by @Tmonster in #11812
- Provide the native OID of PG type in pg_type by @goldmedal in #11746
- Move JDBC (Java) Driver to Separate Repo by @hannes in #11873
- Link Java client in issue template by @szarnyasg in #11877
- Change specificity of sniffed types to check time related types earlier by @pdet in #11878
- fix complex top n test case for constant vector verification by @Tmonster in #11882
- [Dev] Merge overloads for HUGEINT cast functions by @Tishj in #11879
- Make " default for quote and " default for escape by @pdet in #11880
- Set secret directory to a test directory when running sqllogictest by @Mytherin in #11885
- Bugfixes by @lnkuiper in #11785
- [Map] Rework interaction (entries, keys, values, extr...
v0.10.2 Bugfix Release
This is a bug fix release for various issues discovered after we released 0.10.1. There are no new features, just bug fixes. Database files created by DuckDB v0.10.* or v0.9.* can be read by DuckDB v0.10.2.
SQL Modifications
This release has a number of bug fixes that change SQL semantics in a few edge cases:
- Nested Boolean Comparisons now have consistent NULL comparison semantics - #11496
- Structs with non-matching keys require explicit casts when compared or combined - #11396
What's Changed
- Bump julia version & fix release script for sub-versions > 9 by @Mytherin in #11225
- Flatten Rewrite by @maiadegraaf in #11223
- ORDER BY ColumnNumber with Collations by @tiagokepe in #11139
- Fix differences to implementation for to_parquet, write_parquet, to_csv, write_csv, Expression.alias, DuckDBPyRelation.map by @binste in #11135
- Issue template: Ask for MWEs by @szarnyasg in #11192
- Cleaning up FSST: Remove unused AVX512 code by @hannes in #11222
- Fix #11211 - correctly fill in string_t padding for bit type by @Mytherin in #11231
- Fix #3391: Stop creating background threads if the thread constructor throws an exception by @Mytherin in #11236
- R_CMD_CHECK: Pin to duckdb/duckdb-r 0ed106a71c by @carlopi in #11245
- Add support for HEX(BLOB) by @Mytherin in #11243
- Remove no_vector_verification in Map Subscript Test by @maiadegraaf in #11242
- Update logos in README by @szarnyasg in #11256
- Ignore user defined parameters that change names or types of csv columns in sniffer's prompt. by @pdet in #11257
- [Python] Fix error caused by looking up a TypeCatalogEntry without an active transaction. by @Tishj in #11255
- [Fix] Fuzzer issue in list_select by @taniabogatsch in #11248
- [Parquet] Support for LZ4 Compression by @hannes in #11220
- Fix #11254: Add missing includes to terminal by @Mytherin in #11265
- Issue #10867: AsOf Predicate Pushdown by @hawkfish in #11233
- Fix plan cost runner regression script by @Tmonster in #11129
- Check if we need to throw any remaining errors at end of CSV scanning by @pdet in #11276
- Allow duplicate names in json objects when ignore_errors is true by @lnkuiper in #11271
- Do not surround JSON with quotes in sqlite shell output by @lnkuiper in #11268
- add TRIM support to virtual filesystem, and implementation on linux by @jkub in #11258
- Perform direct write operation if input data are larger than buffer size by @quentingodeau in #11203
- Fuzzer fixes by @lnkuiper in #11286
- Compile spatial also for rtools by @carlopi in #11291
- allow injecting custom BufferManager implementation by @jkub in #11215
- Default to RECORDS in JSON reader if more than one column is specified by @lnkuiper in #11295
- Add support for materialized CTEs in INSERT/UPDATE/DELETE statements by @kryonix in #10878
- Only throw exception if
je_mallctl
fails in DEBUG mode by @lnkuiper in #11303 - Fixing casting issue in generators by @hannes in #11304
- Rework
FileSystem::OpenFile
call, and addFILE_FLAGS_NULL_IF_NOT_EXISTS
by @Mytherin in #11297 - Fix potential UB when
list()
aggregate is used in combination with other arena using aggregate functions by @Maxxen in #11306 - Fix #11293 - for ARRAY([subquery]) explicitly push the ORDER BY of the underlying subquery into the array aggregate by @Mytherin in #11316
- Fix #11281: explicitly select column types of information_schema tables for all columns, even if they are always NULL by @Mytherin in #11317
- Fixup py upload by @carlopi in #11308
- Issue #11279: TIMESTAMP => TIMESTAMPTZ by @hawkfish in #11320
- Fix null pointer exception when rolling back updates if the rollback was caused by an OOM by @Mytherin in #11309
- Fix #11283 - report consistent foreign key constraint name in information_schema by @Mytherin in #11318
- Fix #11294 - avoid applying Filter Pushdown optimization for UNION/EXCEPT without ALL by @Mytherin in #11315
- Fix #10695 - handle ? prepared statement parameters correctly for POSITION(x IN y) by @Mytherin in #11314
- Windows CLI - emit UTF8 directly using SetConsoleOutputCP(CP_UTF8) if possible by @Mytherin in #11324
- Fix #11319: use modulo when computing day of the week in excel extension by @Mytherin in #11328
- [CI] Fix bash syntax in TwineUpload by @carlopi in #11333
- Fix #11284: avoid adding the same column multiple times to a primary key/unique constraint name list by @Mytherin in #11325
- In ColumnData, limit scan to the current count in the column by @Mytherin in #11329
- Issue #11269: DISTINCT Sorted Aggregates by @hawkfish in #11321
- [Attach] Fix bug causing sequences to break attaching databases. by @Tishj in #11327
- Flatten hash vector before combining list hashes by @lnkuiper in #11340
- Make sniffer more consistent when nullpadding/ignore_errors are on by @pdet in #11313
- fix(arrow): union buffer count & handle schema errors by @Mause in #11326
- fix duckdb-r script by @Tmonster in #11345
- Fix regression_test_runner.py by @carlopi in #11346
- Issue #11234: IEJoin Scan Reset by @hawkfish in #11347
- TPC-H: Use BIGINT for ID fields schema where required by the specification by @szarnyasg in #11341
- Another round of polishing staged releases by @carlopi in #11342
- CI: Remove issue labeling workflow by @szarnyasg in #11355
- RE2 upgrade to version 2023-02-01 by @hannes in #11252
- File System: Add
optional_ptr<FileOpener>
to various calls, and add support for attaching DuckDB files over S3 by @Mytherin in #11343 - README: Display different logo for light/dark mode by @szarnyasg in #11366
- Fix bug in duckdb_bind_blob by @pfarndt in #11368
- Fix OSX CI by @samansmink in #11379
- Enable clang-tidy on headers and fix all headers to conform to our clang-tidy rules by @Mytherin in #11376
- Add logical_type to parameters of format_pg_type by @Flogex in #11369
- Issue #10965: RESPECT IGNORE NULLS by @hawkfish in #11372
- Fix building issues in WIN32, remove unnecessary modification. by @kindred77 in #11356
- Zero-initialize aggregate states with destructors immediately after allocating by @lnkuiper in #11360
- Update README.md by @jingshi-ant in #11357
- Issue #10885: Negative Window RANGEs by @hawkfish in #11390
- Issue #11377: Invertible TIMESTAMP_XXX Casts by @hawkfish in #11392
- Update init.py To export "extract_statements" function by @oomojola in #11394
- Internal #1657: Stricter STRUCT Casts by @hawkfish in #11396
- allow set readonly on attached db by @stephaniewang526 in #11397
- Give preference to FSSPEC defined FS by @pdet in #11400
- Default serialize
optional_idx
, addskip_default
option tojson_serialize_sql()
by @Maxxen in #11405 - CI: Also label PRs as 'stale' and close them when there's no activity by @szarnyasg in #11420
- fix(jdbc): 1-index getBytes() by @Mause in #11421
- Remove redundant default descriptions by @szarnyasg in #11415
- clang-tidy: enable
cppcoreguidelines-pro-type-const-cast
by @Mytherin in #11414 - clang-tidy: enable `cppco...
v0.10.1 Bugfix Release
This is a bug fix release for various issues discovered after we released 0.10.0. There are no new features, just bug fixes. Database files created by DuckDB v0.10.0 or v0.9.* can be read by DuckDB v0.10.1.
What's Changed
- Remove
visualizer
leftovers by @Y-- in #10642 - Add explicit numbering to C enums + various compilation/CI fixes by @Mytherin in #10649
- Disable print method for CSV scanner for R build by @hannes in #10650
- Fix #10548 for the DUCKDB_NO_THREADS case by @carlopi in #10654
- Allow StorageExtension to extend DuckCatalog implementation in order to integration with observability system by @bleskes in #10643
- Update storage info for v0.10.0 by @szarnyasg in #10660
- Revamp duckdb-wasm extensions CI by @carlopi in #10672
- [CI] Re-enable skipped test
window-rows-overflow.test
by @Tishj in #10679 - Catch: prominently display skipped tests by @Mytherin in #10669
- Update Julia to 0.10.0 by @Mytherin in #10689
- Ingestion benchmark framework by @Tmonster in #10341
- [ICU] Add casts from Timestamp_* to TimestampTZ by @Tishj in #9539
- DISTINCT ON - greatly improve performance by rewriting ordered FIRST aggregate into arg_min_null by @Mytherin in #10684
- Fix #10685 - support aliases in join clause by @Mytherin in #10691
- Use assertThrows for throwing assertions in JDBC tests by @peteraisher in #10448
- Casts: report error location in query for failed casts by @Mytherin in #10694
- Fix duckdb spelling in _extension_deploy.yml by @carlopi in #10717
- Fuzzer #1374: ARG_XXX By Decimal by @hawkfish in #10728
- [Python] Rework the python regression test script by @Tishj in #10715
- Removes static member string by @TinyTinni in #10733
- Fuzzer #1372: Order Bind Failure by @hawkfish in #10727
- Fuzzer #1380: To Weeks Overflow by @hawkfish in #10726
- Various fixes by @carlopi in #10708
- Unittest does not satify assertion on MSVC/Debug by @TinyTinni in #10738
- Fix OrderPreservationType issue of MATERIALIZED CTEs by @kryonix in #10587
- Map creation fixes and refactoring by @taniabogatsch in #10436
- Fuzzer #1383: NULL Range Arguments by @hawkfish in #10723
- Fuzzer #1382: Window Stats Overflow by @hawkfish in #10725
- Comment on view columns by @samansmink in #10710
- Union exclude by @Tmonster in #10688
- move the logic for immediate_transaction_mode to the physical operator by @peterboncz in #10739
- [C API] Small fix and more tests by @taniabogatsch in #10748
- List_slice bug fix by @maiadegraaf in #10747
- Enable azure autoload by @samansmink in #10746
- Parquet writer - reduce memory usage of order-preserving write by @Mytherin in #10756
- Refactor csv reader includes because of r path length limitations by @hannes in #10658
- Arrow String View Type by @pdet in #10481
- local_file_system.cpp: minor fix for macOS libproc code by @barracuda156 in #10758
- Make unnamed_subquery naming predictable by @Mytherin in #10765
- [Python] Fix overflow issue in PandasAnalyzer by @Tishj in #10768
- Throw when trying to consume over 128 byte decimals by @pdet in #10601
- CLI: Right-align numerics in markdown tables by @Mytherin in #10767
- Fuzzer #1399: Window NULL RANGE by @hawkfish in #10776
- [CSV Sniffer] Minor sniffer tweak to give preference to dialects that generate the least errors if ignore_errors = true by @pdet in #10777
- Add large benchmark directory by @Tmonster in #10763
- Improve UNPIVOT error messages, and allow expressions in unpivot by @Mytherin in #10773
- Add a method UUID::FromUHugeint to generate a UUID from a uhugeint_t by @Mytherin in #10771
- [CSV Reader] Add lock to buffer reset by @pdet in #10791
- [WINDOWS] Add "/bigobj" that solves compile issue during debug by @maiadegraaf in #10782
- fix: not over-call AllSecrets by @stephaniewang526 in #10807
- Update readme by @szarnyasg in #10814
- [ODBC] Rework Connect to the ODBC driver and add functionality to set all DuckDB configurations in the Connection String by @maiadegraaf in #10692
- Fix arrow conversion, map doesn't support large offset by @yiyuanliu in #10796
- [CSV Reader] Spinlock over GetLine Error + New Strategy for dialect candidates by @pdet in #10755
- Trivial fixes by @carlopi in #10816
- Fix unicode handling in underscore of LIKE operator by @Mytherin in #10821
- JDBC spurious CI failure - an exception being thrown in this test is a race condition by @Mytherin in #10825
- Benchmark runner - allow files (e.g. CSV/Parquet) to be cached using the cache command by @Mytherin in #10817
- Fix #10803 - correctly reclaim space of list indexes when columns are dropped by @Mytherin in #10822
- [Upsert]
INSERT OR REPLACE
fixes by @Tishj in #10789 - [Dev] Add an optional time out in seconds to
run_tests_one_by_one.py
by @Tishj in #10744 - Maintain names in COLUMNS(*) expression, and allow aliasing multiple columns using {column} by @Mytherin in #10774
- Disable AWS/Azure on Windows for now by @Mytherin in #10827
- [Dev] Bump memory limit on batch_memory_usage.test_slow by @carlopi in #10845
- Fix coverity apt-get by @carlopi in #10838
- minor: FixedSizeBuffer::Pin move shared_ptr rather than copying by @mapleFU in #10837
- ci: Upgrade workflows to actions/setup-python@v5 by @krlmlr in #10832
- Fuzzer #1389: ARG_XXX Decimal Casts by @hawkfish in #10742
- Contributor guide: Fix new issue link by @szarnyasg in #10836
- Changing source to src in relational_constraints query by @Dtenwolde in #10848
- Fix: correctly calculate the range of build side for perfect hash join by @gitccl in #10446
- [Python] Fix issue caused by deadlock between
thread.join()
and acquiring the GIL by @Tishj in #10854 - [CSV Parser] 8-Byte Skipping instead of 1-Byte when possible by @pdet in #10855
- Add components of the version to duckdb.hpp by @ahuarte47 in #10840
- [CSV Sniffer] Tweaking header detection by @pdet in #10714
- Check if directory exists before removing files in regression test runner by @Tmonster in #10859
- [Extension] Add CatalogType to the list of functions generated in
extension_entries.hpp
by @Tishj in #10597 - Regression test build side probe side by @Tmonster in #10585
- [Arrow] Fix issue surrounding lifetime of dictionary arrays by @Tishj in #10610
- Fix #10745 - correctly deal with empty float columns in floating point compression routines by @Mytherin in #10863
- [Extensions] Build fixes by @carlopi in #10860
- Fix MSVC linking issue with workaround by @samansmink in #10865
- Reduce memory usage & avoid spilling to disk unnecessarily for order-preserving table creation/insertion by @Mytherin in #10862
- pb/avoid GetSchema opening a transaction by @peterboncz in #10740
- Support dollar-quoted string-constants in the CLI by @Mytherin in #10879
- Shell: avoid printing "Error: " prefix if the error message already has a prefix (e.g. Binder Error:, Parser...
DuckDB 0.10.0 "Fusca"
This release of DuckDB is named "Fusca" after the Velvet Scooter native to Europe.
Note: The on-disk storage format is backwards-compatible with the 0.9 releases of DuckDB. For details, please see the release announcement blog post.
Also note that we've dropped' the "Preview" designation with this release. DuckDB has matured quite a bit since we started creating releases back in 2019, and it is no longer appropriate.
What's Changed
- feat(jdbc): support uuid param type by @Mause in #9164
- Bump ADBC to v0.7 by @pdet in #9185
- Add support for parquet key-value metadata by @Maxxen in #9126
- Default to JSON type if objects have an inconsistent structure by @lnkuiper in #9086
- Add
schema
parameter toread_parquet
by @lnkuiper in #9123 - [Python] Add the ability to provide a list of files to
read_csv
by @Tishj in #8977 - Issue #7672: TIMESTAMP_XX to DATE by @hawkfish in #9279
- N-ary lambdas, and indexes as lambda parameters by @taniabogatsch in #8851
- Feature: Fixed size list nested type (ARRAY) by @Maxxen in #8983
- Fix unused warning by @Maxxen in #9318
- Internal #215: Window EXCLUDE Functionality by @hawkfish in #9220
- Add
json_serialize_plan
, json_serialize_sql tweaks by @Maxxen in #9230 - Add create statement support to fuzzer by @Tmonster in #9011
- Fix for issue #8108: Random() in lambda by @maiadegraaf in #9353
- Fix Lambda Serialization by @taniabogatsch in #9323
- Allow file_row_number with parquet schema option by @samansmink in #9290
- CSV - Always run sniffer by default by @pdet in #9250
- [Python Dev] Import items lazily by @Tishj in #8741
- Array fixes + make validity more lazy by @Maxxen in #9400
- Lambda performance revamp by @taniabogatsch in #9395
- [Python] Support replacement scan on
connection.table(<name>)
method by @Tishj in #9427 - [Dev] Fix failure in Format Check CI job by @carlopi in #9516
- Fix parquet serialization by @Maxxen in #9485
- Support gcs:// and r2:// URLs to read data from GCS and R2 by @chrisiou in #9388
- Don't reset validity target count by @Maxxen in #9565
- Merge into feature by @carlopi in #9583
- Additional list functions by @cryoEncryp in #8907
- [Python] Support
Optional[...]
in DuckDBPyType by @Tishj in #8658 - C-API: support streaming arrow query by @Virgiel in #8642
- Add ToString and Print method for JoinRelationSetManager and Fix JoinNode Print by @Light-City in #9040
- Removed artificial
HUGEINT
minimum by @nickgerrets in #9441 - Parquet Encryption by @lnkuiper in #9392
- Internal #330: Quantile Performance by @hawkfish in #9461
- CAPI: Make it possible to create enum types by @alnkesq in #8788
- 5614 database invalidated by @Tmonster in #9513
- Add support for proper scoping (catalog + schema) to custom types by @Mytherin in #9622
- Internal #576: strptime strftime infinities by @hawkfish in #9615
- ATTACH IF NOT EXISTS by @Mytherin in #9627
- Small benchmark changes by @taniabogatsch in #9638
- add option for keep_alive setting by @samansmink in #9648
- Add "getenv" function to shell which can be used to read environment variables, and allow functions to be used in SET statements/PRAGMA statements by @Mytherin in #9651
- Julia release by @Mytherin in #9670
- In set operations ORDER BY columns refer to the first set operation in SQL - so the reference is not ambiguous by @Mytherin in #9658
- Replace old logos by @szarnyasg in #9674
- Fix dbgen/dsdgen when using custom catalog and schema by @ywelsch in #9686
- [Arrow] Properly use the parent's
array.offset
in many places in the scan by @Tishj in #9661 - Update issue template with API/extension repositories by @szarnyasg in #9693
- [Python] Fix lossy
datetime.timedelta
to INTERVAL conversion by @Tishj in #9688 - Issue template: Report vulnerabilities via dedicated channel by @szarnyasg in #9711
- Fix #9601: Call correct method in duckdb_pending_execution_is_finished by @Mytherin in #9728
- Merge Feature Into Main by @Mytherin in #9726
- feat(c): add functions for determining statement/return types by @Mause in #9430
- Issue #9673: ICU DST Truncation by @hawkfish in #9705
- Deserialize header fields by @carlopi in #9687
- fix: restore support for windows network paths by @Mause in #9725
- Constant time attach path lookup and locking to ensure unique file handles by @taniabogatsch in #9671
- [ART] WAL serialization, automatic checkpointing, decoupling catalog and storage, index names by @taniabogatsch in #9339
- Fix expanding structs in queries with ORDER BY by @taniabogatsch in #9481
- Only emit batch indices valid within the current pipeline by @ywelsch in #9702
- Fix #9717: Correctly set null statistics of children of structs by @Mytherin in #9733
- Fixes to warning and rendering of bar() by @carlopi in #9734
- Don't show "blabla" as part of syntax error by @mlafeldt in #9746
- Fix #9742: correctly catch empty ROW case in UPDATE by @Mytherin in #9744
- Explicitly attach duckdb file type by @taniabogatsch in #9747
- For ATTACH - Resolve extension prefix before determining the name so "sqlite:file.db" is again correctly aliased as "file" instead of "sqlite:file" by @Mytherin in #9753
- Wasm: Add wasm_threads as a class of built extensions by @carlopi in #9735
- Remove index joins by @taniabogatsch in #9751
- Support EXCEPT ALL and INTERSECT ALL by @hannes in #9636
- Add nightly deploy script by @samansmink in #9761
- update vcpkg by @samansmink in #9759
- Close s3 filehandle on destruction by @samansmink in #9758
- add list of collations that are required to determine equality. by @Tmonster in #9757
- Apply fix for patching vcpkg in extension workflow by @samansmink in #9767
- Internal #766: SkipList Coin Toss by @hawkfish in #9772
- Support reading large decimals into doubles in the Parquet reader by @Mytherin in #9770
- ATTACH - Always run ExtractExtensionPrefix also if a name is provided by @Mytherin in #9771
- Issue #9762: Interval Fractional Seconds by @hawkfish in #9773
- Internal #716: Summarize approx_unique BIGINT by @hawkfish in #9774
- Issue #9755: TIMESTAMP_XX DOUBLE Parts by @hawkfish in #9769
- Add support for COPY FROM DATABASE statement by @Mytherin in #9765
- chore: move links duckdblabs -> duckdb by @dpprdan in #9779
- Detect FreeBSD platform by @szarnyasg in #9782
- Extention template: Enable DuckDB-Wasm extensions by @carlopi in #9356
- Version: add info on v0.9.2 by @carlopi in #9788
- [JDBC] Sync all methods from a statement that interact with a query result by @pdet in #9659
- format_bytes rework, moving from decimal multipliers to binary ones by @carlopi in #9736
- Make FORCE CHECKPOINT abort transactions of concurrently running...
0.9.2 Bugfix Release
This is a bug fix release for various issues discovered after we released 0.9.1. There are no new features, just bug fixes. Database files created by DuckDB v0.9.0 or v0.9.1 can be read by DuckDB v0.9.2 (i.e. v0.9.2 is backwards compatible with both v0.9.0 and 0.9.1 and vice versa).
What's Changed
- [Dev] Fix Wasm.yml by @carlopi in #9303
- [Dev] Fix Wasm.yml, hardcoding extension config to latest duckdb-wasm by @carlopi in #9307
- Fix R CMD check script by @Tmonster in #9326
- [Dev] Remove unused tools/wasm folder by @carlopi in #9328
- [ODBC] SQLColAttribute fix by @maiadegraaf in #9316
- Fix typo by @shreeve in #9313
- [Dev] Trigger R.yml only only if there are changes to R.yml itself by @carlopi in #9304
- Add thread limit to test by @lnkuiper in #9305
- fix typing_extensions ImportError in experimental spark api by @Mause in #9346
- HTTPFS: Move from HTTPException to base class IOException by @carlopi in #9351
- fix for System.Data.ODBC GetSchema() by @bucweat in #9336
- Removes some static global variables by @TinyTinni in #9310
- Bump Julia to 0.9.1 by @Mytherin in #9354
- [Optimizer] Fix transitive filter issue by @Tishj in #9337
- Julia - v0.9 by @Mytherin in #9359
- fix time_bucket_tz(day): don't truncate input to a day boundary in #9320
- Increase the minimum cmake version to 3.5 by @taniabogatsch in #9364
- [PyArrow] Fix bug in timestamp pushdown by @Tishj in #9377
- Satisfy GCC's LTO checks by @krlmlr in #9386
- New generate_query_graph tool. by @Tmonster in #9212
- Fix LIST aggregate prepare statement exception by @taniabogatsch in #9370
- [Python] Throw explicit error for misuse of
execute
by @Tishj in #9394 - update R CMD workflow to apply patches in .github/patches/duckdb-r by @Tmonster in #9412
- [UnionVerify] Properly deal with SelectionVectors by @Tishj in #9409
- [ART] Improve error message for zero bytes in BLOBs by @taniabogatsch in #9415
- Enable serialization of LogicalCopyToFile by @Maxxen in #9418
- Nits for storage and Python API comments by @szarnyasg in #9414
- Issue #9416: Windowed Peer Functions by @hawkfish in #9425
- [Python] Adjust
relation.df()
to output microsecond precision forDATE
types. by @Tishj in #9362 - [Python] Support PEP 563 by @Tishj in #9385
- Fix #8185 - avoid infinite recursion in AddTransitiveFilters by @Mytherin in #9440
- Fix 9447: SIGSEGV when executing read_csv() query for struct with empty VARCHAR by @ryderblue in #9448
- Fuzzer #1294: Non-Constant NULL Format by @hawkfish in #9450
- GitHub Actions bot: Prune search space with '--search' by @szarnyasg in #9445
- Issue #9396: AsOf Inequality Optimisation by @hawkfish in #9449
- Add bot for the 'Needs Documentation' label by @szarnyasg in #9444
- Fix field ids in LogicalCopyToFile:Deserialize by @Maxxen in #9424
- [Export Database] Produce up-to-date query for ViewCatalogEntry by @Tishj in #9375
- include csv_rejects_table headers for amalgamation by @Maxxen in #9454
- feat(jdbc): result streaming by @Mause in #9437
- [Arrow] Add support for dictionary's in child arrays (i.e list of ENUM) by @Tishj in #9331
- Detect AppleClang in cmake, add defines for
DUCKDB_MAJOR/MINOR/PATCH_VERSION
by @Maxxen in #9457 - [Dev] Fix build for extension-upload-wasm to fix (avoiding manual copy) by @carlopi in #9467
- Fix #9459 - remove unused qualified name parsing by @Mytherin in #9472
- Add license to Swift client by @szarnyasg in #9446
- Issue #8937: Window Order Collation by @hawkfish in #9477
- adding System.Data.ODBC testing to Windows.yml CI. by @bucweat in #9372
- fix(jdbc): support decimal arrays by @Mause in #9489
- Needs documentation workflow: Use correct event by @szarnyasg in #9464
- Needs documentation label: Add PR number in backlink by @szarnyasg in #9491
- Fix 9399 by @lnkuiper in #9411
- Enable option to skip building duckdb shell in extension distribution CI by @Maxxen in #9483
- fix confusing variable name by @SkyFan2002 in #9503
- Add MySQL Scanner Aliases + Enable Autoloading by @Mytherin in #9505
- Fix #9498: Amalgamation to properly define DUCKDB_VERSION by @carlopi in #9500
- Issue #582: Greenland TimeZone Change by @hawkfish in #9508
- [Union] Fix issue with keyword/quoted UNION member names. by @Tishj in #9432
- Dev: Avoid adding name_extension for extensions with DONT_LINK by @carlopi in #9496
- Implement array-based JDBC ResultSet by @elefeint in #8972
- Fix #9360, fix #9466: grab a lock before creating directories to fix race condition on Windows in partitioned write by @Mytherin in #9473
- Internal #582: Remove utc_offset Dependency by @hawkfish in #9521
- [ART] Don't allow index creation in readonly mode by @taniabogatsch in #9527
- Remove redundant class by @ccfelius in #9511
- Hive partitioning: Fix preprocessing of CreateDirectories by @carlopi in #9535
- fix: check for IsRowId before accessing column name by @stephaniewang526 in #9542
- Commit drop of index memory by @taniabogatsch in #9540
- [Catalog] Fix locking issues + identify problem in MappingValue by @Tishj in #9523
- JDBC - Add append method for LocalDateTime by @Jens-H in #9435
- Use run_tests_one_by_one to fix CI by @Mytherin in #9570
- pin run-vcpkg action version by @samansmink in #9579
- Add rowsort to test_window_order_collate.test by @carlopi in #9574
- Fix exploding Delim Joins by @Tmonster in #9564
- HivePartition: Add also lock on partition_state by @carlopi in #9576
- Fix typo by @lnkuiper in #9587
- [C-API] fix duckdb_parameter_name declaration by @suketa in #9566
- Fix incorrect template specialization by @jhammer in #9529
- fix(jdbc): allow use of nested result values after close by @Mause in #9592
- Allow pausing pipeline in NextBatch call by @ywelsch in #9562
- Optimize performance of jaccard function by @ucasfl in #9560
- [Python] Add missing default values to stubs of aggregate functions. by @Tishj in #9595
- Fix symbol leakage check by @Mytherin in #9604
- Issue: #8867 Fix: remove unused variables for logical_root. by @Light-City in #8866
- CI: Add job for 'needs maintainer approval' PR tag by @szarnyasg in #8853
- Ci: Fix trigger of 'needs maintainer approval' job by @szarnyasg in #9610
- fix(jdbc): combine jar publish steps by @Mause in #9484
- Increment postgres_scanner version by @Mytherin in #9504
- Improve linear probing performance of
GroupedAggregateHashTable
by @lnkuiper in #9575 - Expose InterruptState in NextBatch by @ywelsch in #9606
- [Arrow] Support LargeString and LargeList by @Tishj in #9471
- Issue #9589: Prefer strict TIMESTAMPs by @hawkfish in #9600
- Fix issue with streaming query results by @samansmink in https://g...