What's new
These docs describe 0.29.0, the current release. The crate is pre-1.0, so minor versions still carry breaking changes.
Unreleased
Section titled “Unreleased”vgi re-exports vgi-rpc. Every trait method returns vgi_rpc::Result, so implementing one has
always needed that crate — and naming its version yourself is a trap, because 0.x minors are
semver-incompatible and the published vgi wants a different one than a bare cargo add installs.
The failure is not a warning:
error[E0053]: method `process` has an incompatible type for trait
= note: expected ... -> Result<_, vgi_rpc::errors::RpcError>
found ... -> Result<_, RpcError>
use vgi::{Result, RpcError}; is now the right version by construction, and vgi-rpc leaves your
manifest. A direct dependency still works.
CatTable, CatView and CatMacro gained a Default, which CatalogModel and CatSchema
already had. Without it a catalog had to spell out twenty fields, nineteen of them zero.
Until this ships, add vgi-rpc = "0.21" alongside vgi = "0.29" and import Result/RpcError
from there. The examples in these docs are written for the re-export.
0.29.0 — the landing page reads the catalog over the protocol
Section titled “0.29.0 — the landing page reads the catalog over the protocol”The HTTP worker’s landing page now discovers what a worker serves by speaking VGI to it, rather than being handed a bespoke description. Nothing changes for a worker author; a worker gets a browsable page for free.
0.28.0 — streaming COPY … FROM
Section titled “0.28.0 — streaming COPY … FROM”CopyFromFunction::read_stream lets a COPY-FROM implementation emit batches as it reads instead of
materializing the file. For a large import that is the difference between flat memory and none.
0.27.0 — one handler can serve both COPY directions
Section titled “0.27.0 — one handler can serve both COPY directions”A reader and a writer registered under the same format name now pair into a single
direction="both" format rather than one silently shadowing the other. If you registered a matched
pair and only one worked, this is why.
0.26.0 — protocol 1.3.0 and global functions
Section titled “0.26.0 — protocol 1.3.0 and global functions”Upgrade if you are on anything older. The community extension serves VGI protocol 1.3.0, and a
worker emitting the older catalog_attach result fails ATTACH against what users install today —
at attach time, not build time.
0.26.0 also added global functions: a catalog can ask the client to publish named functions into DuckDB’s global namespace, under a prefix, so they are callable unqualified.
0.25.0 through 0.20.0 tracked the Python SDK’s feature set — blended table-in-out functions and row provenance, the per-partition result cache, HTTP codec negotiation, and a long dependency refresh. If you are on one of those, the protocol-1.3.0 note above is the reason to move.
Next steps
Section titled “Next steps”- Start building → 1. Your first scalar function.
- The full changelog → releases on GitHub.