Impact Score: 5/10
DuckDB: 0.3.2 Preview Release "Gibberifrons"
Source available โ automated, not human-reviewed
Component: duckdb ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.
Analysis updated: 2026-11-01.
โก Executive Summary (TL;DR)
DuckDB v0.3.2. Source highlight: This preview release of DuckDB is named "Gibberifrons" after the Sunda teal
Who Does This Impact? (Role-Based Analysis)
๐ป Software Engineers & Devs
Check the source notes against the package and APIs you use before upgrading.
๐ Product & Engineering Leads
Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.
โ๏ธ DevOps & Security
Verify the target version, runtime requirements and rollback procedure in the official documentation.
โจ New Features & Capabilities (6)
- #2797: Add interface support for incremental/deferred query execution in main thread
- #2682: Issue #561: Time Zone Support, #2703: #561: Time Zone Foundations
- #2578: Enable support for multi-dot column references
- #2613: Add support for EXPLAIN ANALYZE
- #2569: Support installation of extensions from central repository
- #2843: Parquet Writer: Support writing all types (test_all_types), and write column statistics, #2838: Add support for reading and writing the MAP type to the Parquet reader/writer, #2832: Parquet Writer Rework: Support complex types, #2597: Extend Parquet writer support for UNSIGNED types, various timestamp types, and correctly set converted types in more cases
๐ง Bug Fixes & Patches (6)
- #3042: Issue #3029: Prevent CURRENT_QUERY folding
- #3041: Fix #3017: detect recursive view construction and throw an appropriate error
- #3040: Fix #3015: fix edge case issue with many null values in physical Top N
- #3039: Update Java DuckDBAppender to allow appending null values - fixes issue 3035
- #3028: Install covr from main development branch
- #3026: Issue #2965: CTE parameter binding
๐ View Raw Release Notes (Original Developer Log)
This preview release of DuckDB is named "Gibberifrons" after the [Sunda teal](https://en.wikipedia.org/wiki/Sunda_teal)
Binary builds are listed below. Feedback is very welcome.
Note: Again, this release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the `EXPORT DATABASE` command with the old version followed by `IMPORT DATABASE` with the new version to migrate your data. See the [documentation](https://duckdb.org/docs/sql/statements/export) for details.
Below a list of changes in this release
### Features
- #2797: Add interface support for incremental/deferred query execution in main thread
- #2682: Issue #561: Time Zone Support, #2703: #561: Time Zone Foundations
- #2578: Enable support for multi-dot column references
- #2613: Add support for EXPLAIN ANALYZE
- #2569: Support installation of extensions from central repository
- #2843: Parquet Writer: Support writing all types (test_all_types), and write column statistics, #2838: Add support for reading and writing the MAP type to the Parquet reader/writer, #2832: Parquet Writer Rework: Support complex types, #2597: Extend Parquet writer support for UNSIGNED types, various timestamp types, and correctly set converted types in more cases
### Minor Changes & Bug Fixes
- #3042: Issue #3029: Prevent CURRENT_QUERY folding
- #3041: Fix #3017: detect recursive view construction and throw an appropriate error
- #3040: Fix #3015: fix edge case issue with many null values in physical Top N
- #3039: Update Java DuckDBAppender to allow appending null values - fixes issue 3035
- #3028: Install covr from main development branch
- #3026: Issue #2965: CTE parameter binding
- #3024: Issue #3023: Simple filtered aggregates
- #3021: Move install_extension test to test_slow
- #3016: Issue #2923: Quote ENUM types
- #3014: Issue #2908: UTF8 BOM Headers
- #3013: Fix #3005: correctly normalify vector in array_slice
- #3012: Fix #2999: Support ANY_JOIN in flattening correlated subqueries
- #3011: Fix #2986: correctly copy old data over when calling repalloc in parser
- #3004: Fix #2997: allow maximum CSV line size to be configurable
- #3001: Document installation of dependencies in Python package README
- #3000: Lookup parent frames for replacement scans
- #2983: Fix #2975: fix off-by-one in transform of string constant to decimal in case of large negative numbers
- #2982: Python API - allow duckdb.query to run arbitrary queries
- #2980: Fix dead link in readme
- #2979: Fixing Python CI
- #2978: Ensure that users cant run concurrent queries using cursor()
- #2974: Use cpp11 for rpkg
- #2973: ODBC: SQLGetTypeInfo, SQLTables, and SQLColumns
- #2971: Arrow use_async argument deprecation
- #2969: FieldWriter/FieldReader for Backwards/Forwards Compatible Storage
- #2963: Fixing parquet scan with or filters (issue #2955)
- #2957: Fixing wrongful release of arrow arrays
- #2956: fix: use selection vector to ensure ids are ordered
- #2953: Fix cancellation configuration
- #2952: Check coverage for R
- #2951: Adding Cross Product Relation
- #2949: Update copyright info to name DuckDB Foundation
- #2946: Style R code
- #2943: Disable arrow integration tests on Windows
- #2941: Prefix inlined third party libraries with duckdb_
- #2940: CMakeLists.txt: Add 'delayimp.lib' to delay-loaded DLL on MSVC
- #2939: src/include/duckdb/common/assert.hpp: Added winapi
- #2937: Install Python 3.7 from source on Ubuntu 16
- #2935: adding the v to the amalgamation version string
- #2930: list_slice test fix
- #2925: Enable building the HTTPFS extension for both Windows and OSX
- #2924: Add Node 17 to build factory
- #2921: Fix for array_slice when end index is out of bounds
- #2920: ODBC: cursor functions
- #2919: Preserve Identifier Case by default, rather than lower-casing all unquoted identifiers
- #2918: Add left join type to python relational API
- #2917: list_slice alias for array_slice
- #2912: Fixing Arrow Stream Output Error
- #2906: not export deletes to allow crosscompile
- #2905: Use difftime_str instead of hms class
- #2904: Use correct hms value
- #2903: Robust cancellation via concurrency
- #2901: Minor tweaks in R code
- #2899: Support for GROUP BY ALL/ORDER BY ALL
- #2895: Add duckdb_keywords function
- #2894: OSS Fuzz Fixes
- #2890: ODBC driver assets
- #2888: Add JDBC's setTimestamp method
- #2886: Use double to store scale factor in TPC-H answers
- #2885: Better support for Parquet 2 Page Layout
- #2880: fix python profile html generator to support updated JSON format.
- #2871: Issue #1423: Refactor PiecewiseMergeJoin
- #2870: bug fix for order by header
- #2869: Value Rework: Make all members private and use accessors
- #2867: test: fixed typo for decimal type in test_all_types
- #2865: Issue #2782: Non-Gregorian Calendars
- #2864: C API: Deprecate direct access into duckdb_result and duckdb_column structs
- #2863: ODBC: conformance core level of SQLAllocHandle, SQLFreeStmt, SQLGetDiagRec, SQLSetStmtAttr, and descriptors
- #2856: Issue #2842: Implement make_date/time/timestamp
- #2855: right case for winsock2.h
- #2854: Issue #2831: Disable WINDOW FILTER
- #2852: Issue #2827: Postgres datepart compatibility
- #2851: When using Replace, keep the alias of the original column
- #2850: Avoid reading past the end of the string when parsing a time as part of an interval
- #2848: Fix #2847: Write parquet files to test dir
- #2846: Issue #2780: Remove DATETZ type
- #2845: Turn FileSync into a nop in the PipeFileSystem, and add clear error message when ParquetReader is used to read from a FIFO stream (e.g. /dev/stdin)
- #2844: Support read_csv_auto from /dev/stdin
- #2837: Fix potential use after move detected by linter, and add DISABLE_DUCKDB_REMOTE_INSTALL define
- #2835: Issue #2834: ICU BindAdapterData::Equals
- #2833: CI Fixes, TSAN Fix
- #2830: Fix #2828: setup.py BUILD_HTTPFS does not work
- #2825: Fix #2823: Correctly alter cardinality estimation in LIMIT/SAMPLE clauses
- #2822: Issue #2779: DATE_PART structs
- #2819: add `INTERVAL` support to node.js
- #2818: Adding Parquet extension to node module
- #2817: R: Make method definition more similar to S3
- #2808: Revert stack-overflow detection back to having a maximum (expression) depth in the transformer
- #2807: Add discord badge
- #2806: Refactor SQLLogicTest
- #2802: R-Dataset: Add flag to enable async scanner
- #2801: Add support for list equivalent of range/generate_series with timestamp+interval
- #2800: Fix #2749: avoid copying subquery in BETWEEN expressions
- #2799: Fix #2791: allocate data and mask locations to correctly handle counts > vector_size in the row_gather
- #2798: Fix issue in perfect hash join when (max - min) does not fit into an INT64
- #2796: Addition of QUALIFY clause
- #2794: Add Extension Install CI tests, and fix various issues found through this process
- #2793: Enum Functions
- #2792: PhysicalStreamingWindow operator
- #2788: Issue #2778: Missing date parts
- #2784: adds `BOOLEAN` support to node.js bindings
- #2773: Fix #2761: correctly check that stderr is pointing to a terminal
- #2770: Fix a bug in the sqlite3_api_wrapper that resulted in not correctly reporting why a database could not be opened
- #2767: Issue #561: Implement ICU AGE
- #2765: Add Connection::GetTableNames method to C++ API that allows you to extract the required table names from a query
- #2760: Issue #561: Implement ICU DATEDIFF
- #2759: Fix string constructor usage
- #2757: Extension dashes to underscores
- #2756: Issue #561: Implement ICU DATESUB
- #2753: Python - Test All Types
- #2751: Fix #2750: check enable_external_access flag in more locations
- #2748: Cleanup pointer swizzling code
- #2746: Fix #2745: correctly detect when a RECURSIVE CTE does not contain a reference to itself (i.e. is not a recursive CTE at all)
- #2744: C++17 warning fixes, plus CI tests for compiling (parquet) amalgamation with C++17
- #2742: Common: typo and remove unused files
- #2739: Add test_all_types function
- #2738: GH Actions: avoid upload on master, and try to fix codecov failures on master
- #2737: Typo: Rename Alises to Aliases
- #2732: Tests for Python + #1732
- #2731: Pushing down OR filters
- #2730: Issue #561: ICU Date addition
- #2729: Add duckdb_functions table function
- #2727: RAII for SortedBlock
- #2725: Windows: Remove OVERLAPPED IO flag, it is not required and seems to cause concurrency problems
- #2723: Fix #2471: correctly handle offset passed by ::UpdateSegment, and handle it earlier to clean up code
- #2722: Infer COPY TO format from file extension
- #2721: Update of PERCENT keyword in the LIMIT clause(#2671)
- #2719: Fix #2713: correctly bind multi-part column references in correlated subqueries
- #2718: Add "position" as an alias to the "instr" function
- #2712: Use and_kleene for Arrow filters
- #2711: Fix CSE optimizer: keep around expressions as they might be referenced in the expression_map
- #2710: Modify LEAST/GREATEST to ignore NULL values
- #2708: Fix #2701: Handle VALUES lists in correlated subqueries
- #2706: Ignore cancel request on master
- #2702: Rename snappy namespace to duckdb_snappy, and enable Parquet extension for the exported symbol checker
- #2697: Support reading of ZSTD files, and add support for writing GZIP and ZSTD files
- #2696: FetchDF for nested types (Lists, Maps and Structs)
- #2693: Fix #2663: correctly implement EXTRACT(EPOCH from TIME) as seconds since midnight
- #2692: Fix #2678: Fix undefined behavior for sequences close to INT64 min/INT64 max
- #2691: Correctly handle synchronous I/O being returned from Windows API
- #2690: Use templated memcpy/memcmp more
- #2689: Reduce memory footprint of Python/R compilation by default by disabling unity builds unless DUCKDB_BUILD_UNITY flag is enabled
- #2686: Fix #2685: prevent CSE optimizer from causing short-circuiting issues, and add disable_optimizers setting
- #2684: Python 3.10 builds
- #2681: Benchmark/test format cleanup
- #2679: Bitpacking storage compression
- #2673: remove extra semicolon.
- #2665: Merge arrow_register into register function
- #2662: Fix #2656: correctly transform DISTINCT with ORDER BY into DISTINCT ON
- #2660: Issue #2614: Wide windows
- #2659: Fix #2652: Make struct fields case insensitive
- #2658: Fix various Windows unicode issues
- #2657: Initializing matchers to avoid valgrind complaints
- #2655: Add templated memcpy/memcmp
- #2650: Fix bug in parquet reader causing list columns to be parsed incorrectly (#2557)
- #2648: Fix #686: remove hard-coded memory limit in parser and fix error message propagation from exceptions thrown in parser
- #2644: Fix #2641: correctly handle tab delimiters in COPY TO/FROM
- #2642: Issue #2552: SUBSTR BIGINT
- #2639: Fix #2586: correct semantics for extract(second, ...) from intervals
- #2636: Hashing enum values (Enum comparison bug fix)
- #2635: Fix for R factor scans
- #2631: ODBC: Refactoring Parameter Descriptor
- #2630: Try to Cast Enums to other types
- #2626: Escape column names in dbWriteTable() Fixes #2622
- #2623: Fix #2612: Correctly check that default is set on copy of SetDefaultInfo
- #2611: Multithreaded Python
- #2609: Configuration Rework & Cleanup
- #2602: Adding pragma option for parquet binary as string
- #2583: Issue #2549: Support IGNORE NULLS
- #2576: Add generate_subscripts macro
- #2526: Sequence ownership