DuckDB v0.3.3stable Released Apr 11, 2022
Impact Score: 5/10

DuckDB: 0.3.3 Preview Release "Sansaniensis"

Source available โ€” automated, not human-reviewed

Component: duckdb ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Compatibility not verified โ€” check source notes
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

DuckDB v0.3.3. Source highlight: This preview release of DuckDB is named "Sansaniensis" after the (regrettably extinct) Chenoanas sansaniensis.

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)

  • #2926: DuckDB SQL backend for dbplyr
  • #2970: JSON extension
  • #2998: Support explicit aggregate state export, re-combination and finalisation
  • #3069: S3 writes and #3225: S3 file glob
  • #3092: Basic UDF support for Node API
  • #3109: Storage dictionary compression

๐Ÿ”ง Bug Fixes & Patches (6)

  • #2954: JDBC enable usage of LocalDateTime via get/setObject
  • #2985: Issue #2590: Add overwrite flag to CSV copy, overwrite only if query completes
  • #3006: JDBC BigDecimal support
  • #3007: Feature: Add support for Excel text format (Update #2996)
  • #3010: R: Arrow timestamps in seconds, milliseconds and nanoseconds
  • #3027: Allow literal option for regex
๐Ÿ“„ View Raw Release Notes (Original Developer Log)
This preview release of DuckDB is named "Sansaniensis" after the (regrettably extinct) [Chenoanas sansaniensis](https://books.google.nl/books?hl=en&lr=&id=jcEyAQAAMAAJ&oi=fnd&pg=PA1&ots=Yo7uqiwWjB&sig=jeAB2gFbhShF5AWmK1obw8FfYZk&redir_esc=y#v=onepage&q&f=false). 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 ## Major Changes & Features - #2926: DuckDB SQL backend for dbplyr - #2970: JSON extension - #2998: Support explicit aggregate state export, re-combination and finalisation - #3069: S3 writes and #3225: S3 file glob - #3092: Basic UDF support for Node API - #3109: Storage dictionary compression - #3111: Simple filtered aggregates - #3165: Add support for a `DESCRIBE` statement that gives a summary of all tables - #3178: 1-based indexing for lists and strings - #3195: Add support for `FOREIGN KEY` - #3253: Julia Client & C API Extensions - #3292: Support NaN and Infinity in floating point columns ## Minor Changes & Bug Fixes - #2954: JDBC enable usage of LocalDateTime via get/setObject - #2985: Issue #2590: Add overwrite flag to CSV copy, overwrite only if query completes - #3006: JDBC BigDecimal support - #3007: Feature: Add support for Excel text format (Update #2996) - #3010: R: Arrow timestamps in seconds, milliseconds and nanoseconds - #3027: Allow literal option for regex - #3030: Macros for floored division and modulo - #3034: Substrait Installable Extension - #3038: Issue #3037: DATE + TIME - #3045: fix for STRING_AGG(...) failing (vector type mismatch) assertion when used with DISTINCT and ORDER BY inside STRING_AGG. - #3050: R-pkg: cpp11-ify - #3051: Enable printing of EXPLAIN query trees in the R client - #3060: Issue #3056: Null list scatter - #3065: Implementation of list_contains - #3066: Report dlopen/dlsym errors in extension load - #3067: ODBC: Many changes - #3071: c-api: support decimal and prevent invalid type throws - #3072: Add CMake setting to disable linking of extensions - #3077: Issue 2498: Consistent NULL hashing - #3084: Hmb1 select macro feature mr - #3085: First batch of aggregation functions for python rapi - #3087: Fix incorrect link for testing docs - #3088: Add LIST_EXTRACT support for several missing types (including booleans) - #3090: Fix for Arrow Timezone CI Fail - #3093: Test/add parser error on missing newline - #3097: Fix remaining winsock error - #3098: Round-trippable Expression ToString() - #3101: Issue #3100: MAKE_DATE struct variant - #3102: Add flatten function for nested list - #3107: Allow multiple statements in the R-client - #3112: Issue #1423: PiecewiseMergeJoin multiple predicates - #3115: ODBC: SQLGetDescRec and SQLSetDescRec - #3116: NodeJS Windows CI Fix Attempt - #3120: Fix #3119: correctly perform case insensitive comparisons in default function/view/schema creation - #3121: Fix #3108: support ILIKE ESCAPE - #3123: Issue #3020: Unify column names of DESCRIBE and SUMMARIZE - #3124: Add Alias to projected columns - #3125: Adds support for the REPLACE keyword in CREATE TABLE AS ... SELECT (CTAS) statements - #3126: BLOB support for aggregate state combine - #3139: More Python Relational API Functions - #3142: Fix type hints for query_df - #3147: Python: Relation dependency on Connection - #3148: Alter Type of column from varchar to enum - #3151: Support trailing commas in many lists in the parser - #3154: JDBC - Bugfix - Negative timestamp fix - #3156: JDBC - Add timestamp with timezone support - #3158: Enable DISABLE_VPTR_SANITIZER by default on M1 - #3161: Implementation of unnest(null), list_position, rewrites - #3162: Add support for list parameters in the Python API - #3163: ODBC: Diagnostic Feature - #3166: Move test_group_by_parallel out of the coverage tests - #3171: Fix #3169: verify that WAL exists in PRAGMA database_size - #3173: Adding chunk size parameter to functions that return arrow objects. - #3174: Correctly zero-initialize pg_parser allocation heap to prevent potential corruption in clean up of parser state of SQL strings - #3179: Change pipe so it doesnt print on terminal - #3180: Fix for build error of R package on Windows - #3190: Fix Python clean.sh: avoid deleting all locally installed libraries and instead only remove installed DuckDB libraries - #3191: Returning feature for INSERT - #3192: Tear down connections - #3196: linking fixes for extensions - #3197: Fix convert uuid to arrow str error - #3199: Dbplyr-backend SQL translation of is.na() must use only IS NULL - #3201: Enable universal builds for OSX - #3208: numeric md5 functions - #3209: JDBC - Fix missing metadata - #3213: Making the deliminator more flexible and Q 02/17/20 of TPC-H for Substrait - #3214: Extension linking fix - #3218: Fixed empty list aggregates - #3219: Issue #1423: IEJoin Implementation - #3220: Fix for #3200 - #3221: FIX for parquet reader on diff files - #3224: feat: expose from_substrait in python package - #3226: ODBC: Windows setup - #3230: Fix for #3215 - #3231: CodeCov apparently does not like target anymore, + validate codecov configuration in CI - #3232: Fix #3223: Prune trees with LIMIT 0 - #3233: Fix #3205: implement skip for struct and list column readers - #3234: Fix #3222: avoid int overflow in RleBpDecoder - #3235: Removing std::binary_function because its deprecated in cpp11 - #3238: Parquet globbing: Better support for schema evolution - #3239: Properly send mapped function on RAPI - #3244: Returning feature for update and delete statements - #3245: test: prevent master ci from being canceled - #3251: Improving CI performance - #3255: Adding check_same_thread option to py connector - #3256: ci: restructure to run format/tidy/codecov for python - #3263: JDBC - Enable useage of ENUM type - #3264: Allow the use of native replacement scan of parquet/csv files with the dbplyr-backend - #3266: Fix #3260: if a schema name is provided, pass along the schema name and table name to the replacement scan - #3268: Add python module constants from PEP249 - #3270: python extension loading tests - #3274: Implementation of the list aggregate function - #3276: Properly resizing DuckDB batches that reference arrow batches - #3281: ODBC: LibreOffice on Linux - #3287: Several Julia API enhancements - #3289: ODBC: windows installer has to copy and pass program parameters - #3293: Issue #3262: Nested comparison fixes - #3295: Allow strftime arguments to be specified in both orders - #3299: [Arrow] Read Record Batch Reader and Scanners - #3301: Use FieldWriter/FieldReader in Checkpoint Manager - #3303: Add benchmark_runner based regression test, and remove random engine from cycle counter - #3305: Fix #3304: correctly trigger old result-set materialization prior in duckdb_value_is_null - #3307: Fix #3271: correctly check for negative limit and offset - #3308: Cleanup some unused include - #3311: Fix #3272: avoid incorrectly moving LIMIT to before the ORDER clause in certain cases - #3312: Issue #3290: Histogram Temporal Bindings - #3313: Issue #3275: Global Operator State - #3314: Issue #3262: Dead Code Removal - #3318: R bug-fixes: Pipes in tests and silence R NOTE - #3323: Fix #3291: delete root entries after a catalog entry is deleted and no more transactions can reference it - #3328: Fix #3294: initialize validity mask to correct size in placeholder code - #3329: Fix use after free bug in local storage - #3331: Add automatic issue labeler - #3335: #3324 Throw error instead of crashing when misusing prepared statements - #3338: Issue #3298: Nested Unflat MinMax - #3339: Add a create_value for strings to the Julia API - #3342: Issue #1423: IEJoin Performance Improvements - #3343: Issue #3118: Non-string Formats - #3355: Fix #3349: correctly handle empty table case in grouping set - #3356: Fix #3350: correctly update statistics after a SINGLE join, since SINGLE joins may introduce NULL values - #3357: Fix #3351: avoid double-binding functions in subqueries after an initial binding error - #3358: Fix #3352: fix several bugs with index selection for verifying foreign key constraints - #3359: Fix #3353: check if any results are returned in sqlite api wrapper before looking at the chunk - #3360: Fix #3354: add missing recursive CTE node traversal in correlated subquery flattening - #3362: ODBC: unixodbc_setup.sh - #3363: Fix #3361: correctly handle overflows in sequences with cycles - #3369: Fix #3367: correctly detect overflow in statistics propagation for ORDER BY - #3370: Fix #3366: check for invalid double values in progress bar - #3372: Fix #3365: correctly handle overflows in left-shifts - #3376: Fix Python Windows CI - #3378: Correctly handle rowid scans in Julia DataFrame scan (for COUNT(*)) - #3380: ArgMinMax: correctly manage memory of strings in both values and arguments - #3381: Python extension loading - #3383: ODBC: unixodbc_setup.sh usage message - #3399: removed -k param for gzip - #3406: Install AWS CLI in CentOS Extension