Skip to content

Latest commit

 

History

History
62 lines (37 loc) · 4.5 KB

CHANGELOG.md

File metadata and controls

62 lines (37 loc) · 4.5 KB

Changelog

UNRELEASED

Added

  • Enabled the crate's spatial feature, so DRAW spatial map layers now render through the Vega-Lite writer instead of raising "Spatial visualization requires the 'spatial' feature to be enabled". Spatial layers require DuckDB's spatial extension at runtime: ggsql issues LOAD spatial automatically but never INSTALL it, so run INSTALL spatial once per machine (e.g. via DuckDBReader.execute_sql(); the download is cached under ~/.duckdb/extensions). Works with WKB geometry columns and the built-in ggsql:world dataset, including named map projections such as PROJECT TO equal_earth.
  • New CachingReader.execute_sql_cached() method that runs SQL on the reader's private in-memory cache connection — the compute surface where all ggsql-generated derived SQL executes — instead of the primary data source. This is the surface for per-connection setup that derived SQL depends on: e.g. INSTALL/LOAD of DuckDB extensions such as spatial, which would fail on a locked-down primary and take no effect on the cache even where it succeeds.

Removed

  • Removed Spec.layer_sql() and Spec.stat_sql(). These mirrored a vestigial Rust API that returned None in every released crate since v0.1.6 (the backing fields were never populated after the scale-syntax rewrite) and was removed upstream in ggsql PR #569. No functionality is lost.

Changed

  • Data now crosses the Python↔Rust boundary via the zero-copy Arrow C Data Interface instead of Arrow IPC serialization, reducing memory copies and peak RSS for large results (on a 1M-row × 50-col register+read microbenchmark: ~5.7× faster, ~1 GB lower peak RSS). Set GGSQL_ARROW_IPC=1 to restore the previous IPC behavior. The minimum pyarrow version is now 15.

0.5.2

Added

  • New native writers SVGWriter, PDFWriter, and HepWriter, rendered directly by ggsql (via hephaestus) with no JavaScript round-trip. Each exposes render(spec) returning str (SVG) or bytes (PDF/HEP); render warnings are surfaced via warnings.warn().
  • New ggsql.save(spec, file, ...) helper that writes a spec to disk, picking the writer from the file extension (.svg, .pdf, .hep, or .json for Vega-Lite).
  • Enabled the crate's builtin-data feature, making builtin datasets such as ggsql:world available.
  • New ggsql.CachingReader that caches query results to avoid redundant source reads. Wraps a duckdb:// connection string or any custom Python reader; reads are memoized with a configurable TTL and size budget, and derived __ggsql_* tables run on a private in-memory DuckDB cache.

Changed

  • Upgraded to ggsql Rust crate v0.5.2 (from v0.3.3). See the crate changelog for the many language and rendering improvements in 0.4.0–0.5.2.
  • Upgraded the Arrow dependency from v56 to v58.
  • Declared Rust MSRV is now 1.88 (required by the native-writer dependency graph, e.g. parley 0.9).

0.3.3

Changed

  • Upgraded to ggsql Rust crate v0.3.3 (hotfix).
  • VegaLiteWriter.render_chart() and render_altair() now accept validate, height, and width as explicit keyword arguments. height and width default to None, which preserves whatever dimensions ggsql produces. validate defaults to False (same behavior as before, now a named parameter).
  • When Altair can't deserialize a spec into the expected chart subclass (e.g., LayerChart), the converter now falls back to altair.Chart instead of raising. The chart still displays correctly; only Altair-level round-tripping (.to_dict()) is lost.

0.3.2

Changed

  • Upgraded to ggsql Rust crate v0.3.2.
  • render_altair() and VegaLiteWriter.render_chart() now default to validate=False when creating Altair chart objects. This avoids ValidationErrors for valid specs (e.g., boxplots) that use Vega-Lite features not yet reflected in Altair's schema. Pass validate=True to re-enable.

0.3.1

Changed

  • Upgraded to ggsql Rust crate v0.3.1.
  • Replaced polars with Arrow (via pyarrow) for the Rust↔Python data bridge. DuckDBReader.execute_sql(), Spec.data(), Spec.layer_data(), and Spec.stat_data() now return pyarrow.Table instead of polars.DataFrame. DuckDBReader.register() accepts pyarrow.Table (polars DataFrames are still accepted via automatic conversion). Custom readers returning polars DataFrames from execute_sql() continue to work without changes.
  • Runtime dependency changed from polars to pyarrow.

0.2.7

Synced with ggsql Rust crate v0.2.7.

0.1.4

Initial release.