Repository navigation
v0.9.0 — nested & JSON columns, 1,000-column tables
Highlights
- Nested & JSON columns. Lists, arrays, structs, maps, unions and VARIANT load as
type: 'nested': readable cells, a type outline and summary chart in the header, a value inspector (F2), "Extract field → column", exact reads (getCellValue,getColumnValues) and JSON-correct exports. - 1,000-column tables. Only the columns near the view are rendered, fetched and charted, and Parquet is read from disk with a memory pre-check, so a 200K × 1,000 file loads in the browser.
Breaking changes
Most integrations upgrade with a version bump. These five changes can break one; the 0.8 → 0.9 migration guide walks through each, and lists the other behaviour changes upgraders may notice.
- A custom visualization or stats panel registered for
'string'no longer receives nested columns, norTIME_NScolumns, which are now'time'. getColumnValuesreturns MAP, UNION,TIME WITH TIME ZONEandTIME_NSvalues in new forms.- A self-hosted copy of the worker script must be replaced, and an offline deployment with nested data must serve DuckDB's
jsonextension. The CSP and offline guide now gives a working recipe: the files to copy, the extensions to mirror and the policy to send. - CSV, JSON and clipboard exports write dates and times as ISO 8601 text, not epoch numbers.
VisualizationFactory, deprecated since 0.3.1, is removed from/advanced.
The @duckdb/duckdb-wasm peer range is now ^1.33.1-dev57.0.
Known issues
- With
extensions.duckdb.orgout of reach (offline, blocked, or missing fromconnect-src), every load fails, a CSV's too, withLOAD_PARSE_FAILED: a load sets DuckDB's time zone, which needs theicuextension. Mirror the extensions as the CSP and offline guide describes. - CSV and JSON sources lose a seventh fractional-second digit: DuckDB's readers type ISO timestamps before the library's lossless check sees them. Text columns in Parquet keep every digit.
- After a Parquet load fails with
LOAD_MEMORY_EXCEEDED, the grid stays empty until the next load succeeds. - A range filter whose ends fall inside a histogram's bins is drawn as the whole bins it touches. The filter and its row count are exact.
- A
TIMEorTIME WITH TIME ZONEbrush is redrawn one bar wider than brushed. The filter, its chip and the row count are right. - With another column's filter on, a histogram's stats line shows the whole table's
minandmaxbeside the filtered rows' median. - On a chart that draws a single bar, a brush can go undrawn after the chart refetches. Its filter, chip and counts stay.
- An
INTERVALcolumn mixing months with days or times can put a value near a brush's bound on the other side of it from its bar: DuckDB counts a month as 30 days. - DuckDB 1.5.4 limits: Parquet drops
TIME WITH TIME ZONEoffsets; UNION and unnamed-STRUCT Parquet exports don't load again; a VARIANT inside a list or struct doesn't export to Parquet;HUGEINTexports to Parquet asDOUBLE.
Full list of changes: CHANGELOG.md.