Skip to content

v0.3.0

Choose a tag to compare

@dannote dannote released this 26 May 20:32
· 125 commits to master since this release

Added

Local DuckDB and transport

  • Replaced Req-based HTTP calls with a stateful Mint transport owned by each DBConnection process, with explicit connect/receive/shutdown timeouts, closed-connection reopening, and safer timeout cleanup.
  • Added process-local Quack client query IDs for query, append, and telemetry correlation.
  • Added local server performance defaults and QuackDB.Server :settings / :global_settings boot options.
  • Added explicit DuckDB binary management through QuackDB.Binary, mix quackdb.install, and QuackDB.Server duckdb: :managed, with built-in checksums for the pinned DuckDB CLI downloads.
  • Added managed DuckDB binary guide and install-task target prefetching.
  • Documented managed DuckDB Windows limitations and linked the managed binary guide from getting started docs.

Native writes, Explorer, and columnar results

  • Added QuackDB.insert_columns/4 / insert_columns!/4 for column-oriented native append batches.
  • Added QuackDB.Explorer.insert_dataframe/4 / insert_dataframe!/4 for appending Explorer dataframes through native column append.
  • Added optional Table.Reader implementations for QuackDB.Result and QuackDB.Columns.

DuckDB helpers, sources, and setup SQL

  • Added schema-driven QuackDB.DDL.create_table/2, CREATE TABLE AS query support with explicit parameterized-query rejection, and QuackDB.DML.insert_into/2 setup helpers.
  • Added QuackDB.Extension helpers for DuckDB INSTALL and LOAD statements.
  • Added QuackDB.Secret helpers for DuckDB HTTP, object-storage, Azure, and Hugging Face secrets.
  • Added a focused sources guide for DuckDB file/object-store/lakehouse sources, extensions, and secrets.
  • Clarified that QuackDB does not automatically upload local source files.

Expanded Ecto adapter

  • Added use QuackDB.Ecto to import Ecto query, analytical, spatial, and FTS helpers together.
  • Added Ecto combinations, lock SQL, schema full selects, Repo.get!/2, Repo.explain/3, and additional analytical query expressions including selected_as, map, type, and identifier fragments.
  • Added Ecto upsert SQL generation, schema update/delete callbacks, update_all / delete_all, joined mutations, and rowid-filtered ordered/limited mutations where DuckDB SQL allows it.
  • Added basic migration DDL generation with real-server coverage for create/drop/alter tables, table/column renames, references, indexes, primary keys, composite primary keys, check constraints, and Ecto.Migrator execution.
  • Expanded Ecto parameter and schema coverage for :binary_id, :binary, UUID/blob raw params, intervals, temporal values, decimals, arrays, and Geo spatial params.

Protocol and DuckDB type fidelity

  • Added conversion helpers and compact inspect output for DuckDB-specific scalar structs.
  • Added decode-side checks for quack-ts protocol conformance fixtures.
  • Added quack-ts decode fixtures for nanosecond temporal, interval, spatial geometry, null-heavy nested chunks, and BIGNUM values.
  • Added malformed protocol coverage for truncated BIGNUM values and mismatched data chunk type/vector counts.
  • Added an optional internal :fsst bridge for future Quack FSST payload decoding once DuckDB exposes compressed FSST vectors over Quack.

Spatial, FTS, and observability

  • Added QuackDB.SQL.install/1, QuackDB.Spatial, and QuackDB.Ecto.Spatial helpers for DuckDB spatial extension statements and ST_* expressions.
  • Added optional QuackDB.Geometry WKB conversion helpers and %Geo.*{} SQL/Ecto parameter support when the :geo package is available.
  • Added QuackDB.FTS and QuackDB.Ecto.FTS helpers for DuckDB FTS indexes, BM25 search ranking, stemming, and Ecto search expressions.
  • Added :telemetry events for query, append, and fetch operations, including custom prefixes, metadata options, optional params, and append batch counts.

Docs and examples

  • Added examples for telemetry observation, Explorer dataframe roundtrips, append benchmarks, full-text search, Livebook analytics, and a WMS-like spatial GeoJSON app.
  • Added contributor documentation for CI, docs, integration, examples, optional dependency smoke checks, and Hex package-content audits.
  • Added Arrow/columnar handoff research notes and protocol fixture docs for tricky scalar/spatial types.

Fixed

  • Expanded real Ecto insert coverage for on_conflict: :nothing, single-row insert upserts, insert-from-query SQL paths, renamed :binary_id sources, and binary payloads containing NUL bytes.
  • Fixed Mint transport call timeout handling for timeout: :infinity, which Ecto migrator uses for migration DDL.
  • Closed Mint transport connections after receive timeouts to avoid reusing sockets with abandoned in-flight responses.
  • Updated user docs to reflect current Ecto migration, write, schema-read, package, and protocol coverage.