Announcing DuckDB 1.5.6

The DuckDB team
2026-09-28 | 2 min

TL;DR: Today we are releasing DuckDB 1.5.6 with bugfixes and performance improvements.

In this blog post, we highlight a few important fixes in DuckDB v1.5.6, the seventh patch release in DuckDB's 1.5 (Variegata) line. The release ships bugfixes, performance improvements and security patches. You can find the full release notes on GitHub.

To install the new version, please visit the installation page.

Here are the most important fixes from the DuckDB v1.5.6 release, organized by category:

Correctness

  • #24240 – Fix LIMIT pushdown through a volatile projection with an OFFSET
  • #24239 – Don't push filters on volatile groups through aggregates
  • #24119 – Fix UNNEST pushdown
  • #24399 – Preserve NULLs in Top-N window elimination when the ORDER BY expression has no column references
  • #24551 – Fix Top-N window elimination for nullable ordering expressions
  • #25831 – Fix wrong results from common subplan elimination with UNION ALL arms sharing a join subtree
  • #25714 – Fix silent truncation of very long integer literals into HUGEINT
  • #25766 – Fix max on Hive partition column after file pruning
  • #24438 – Fix ICU strptime leaking time zone state between rows
  • #24845 – Fix GEOMETRY row group pruning with NULLs and empty geometries
  • #25728 – Fix reading and writing TIME_NS values in Parquet
  • #26027 – Fix Parquet v2 value count mismatch for NULLs in a list that fills a page
  • #26162 – Fix Parquet VARIANT shredding for REQUIRED fields and element groups

Crashes and Internal Errors

  • #25103 – Fix crash in Top-N with LIMIT 0
  • #24427 – Fix segfault in url_decode with TRY() on dictionary-encoded columns
  • #24447 – Fix failed checkpoint marker recovery
  • #25490 – Close the main WAL handle before renaming over it during WAL recovery

Generic Bugfixes

  • #24065 – Automatically roll back failed implicitly-wrapped multi-statements on all paths
  • #25693 – Fix dead node counting in ART indexes
  • #25573 – Report the real storage version when opening a DuckDB v2.0+ database file
  • #25808 – Reject invalid UTF-8 produced by printf's %c conversion

Miscellaneous

  • #26102 – Add enable_optimistic_write setting
  • #25283 – Harden temporary file reads
  • #24362 – Unify C API symbol versioning for clients and extensions, stabilize all v1 APIs
  • #25214 – Always quote identifiers in error messages
  • #24127 – Remove the Julia client from the main repository in favor of duckdb/DuckDB.jl

Conclusion

This post was a short summary of the changes in v1.5.6. As usual, you can find the full release notes on GitHub. We would like to thank our contributors for providing detailed issue reports and patches. Stay tuned for future DuckDB releases, including v2.0.0 in October!