Skip to content
Query.Farm
Talk with Us

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.

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.

On 0.29.0 you still need the pin

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.

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.