Skip to content

Releases: Query-farm/vgi-java

v0.18.0

Choose a tag to compare

@rustyconover rustyconover released this 12 Jul 18:25

Breaking wire change: TableInfo.required_filters (CNF)

Ports the vgi-python 0.15.0 / vgi C++ extension change. The trailing TableInfo
field required_field_filter_paths (flat list<utf8>, AND-only) is renamed to
required_filters and retyped to list<list<utf8>> — conjunctive normal
form: an AND of OR-groups of dotted column paths. A group is satisfied when any
one member path has a WHERE filter; every group must be satisfied.
[["accession_number"], ["ticker","cik"]] means "accession_number AND one of
(ticker, cik)". Empty = no enforcement. No backward compatibility.

Worker-facing API

  • CatalogTable.builder(...).requiredFilters(List<List<String>>) and
    CatalogTable.withRequiredFilters(List<List<String>>) replace the old
    requiredFieldFilterPaths / withRequiredFieldFilterPaths (which took a flat
    List<String>).
  • Validation rejects empty OR-groups and empty path strings, mirroring the
    vgi-python descriptor.

Wire-compatible with vgi-python 0.15.0 and the published vgi DuckDB extension.

v0.17.0

Choose a tag to compare

@rustyconover rustyconover released this 10 Jul 15:25

Added

Result-cache worker support (farm.query.vgi.cache.CacheControl). The DuckDB extension caches the complete result of a cacheable table-function scan and serves identical future scans from memory or disk. A worker opts a result in by advertising vgi.cache.* metadata on the first batch it emits:

BatchUtil.emit(schema, rows, out, CacheControl.ttl(300).toMetadata(), filler);

The vocabulary mirrors HTTP caching (RFC 9111/9110): ttl / expires, a reuse scope (catalog or transaction), no_store, validators (etag / last_modified), revalidatable, stale_while_revalidate / stale_if_error, and not_modified.

Conditional revalidation flows the other way: when the client holds a stale-but-revalidatable result it sends vgi.cache.if_none_match on the producer's first tick, readable from AnnotatedBatch.customMetadata(). A worker whose data is unchanged answers with a 0-row not_modified batch instead of re-streaming.

No OutputCollector change was required — emit(root, customMetadata) already existed, so CacheControl is purely a metadata renderer.

Worker.registerUnlistedTable(fn) — register a table function that is dispatchable but not advertised in the catalog's function listing, so DuckDB never registers it as a callable table function. For the scan function behind a function-backed CatalogTable that should surface only as a table.

Changed

  • Pins farm.query:vgirpc 0.15.0 → 0.16.0, which carries a fix for the stateless HTTP producer path dropping the /init request's batch metadata (without it, conditional revalidation silently never fires over HTTP).
  • The example worker's native-branch and rff_* fixtures now resolve their scratch paths from VGI_TEST_BRANCH_DIR (default: the OS temp dir) instead of hardcoding /tmp.

Verified

Full upstream integration suite green on all three transports (launch, shm, http): 10872 assertions across 231 test cases on the http lane, 0 failures.

v0.16.0

Choose a tag to compare

@rustyconover rustyconover released this 08 Jul 18:50

Per-schema doc in describe.json; depend on vgirpc 0.15.0 (landing.html v3).

v0.15.0

Choose a tag to compare

@rustyconover rustyconover released this 08 Jul 15:36

Surface catalog macros (scalar + table) in describe.json; depend on vgirpc 0.14.0 (refreshed landing.html).

v0.14.0

Choose a tag to compare

@rustyconover rustyconover released this 07 Jul 22:44

Standardized VGI worker HTTP landing page: content-negotiated GET / serving the shared landing.html, GET /describe.json (one entry per advertised catalog with per-catalog scoping) + lazy column endpoint, and the VGI logo header. Requires vgirpc 0.13.0.

v0.13.0

Choose a tag to compare

@rustyconover rustyconover released this 05 Jul 21:40

Const-argument constraints (choices/ge/le/gt/lt/pattern) are now enforced at bind for every function kind, not just scalar. Enforcement was extracted into a shared ConstraintEnforcer and wired into the table, table-in-out, table-buffering, and aggregate bind paths.

v0.12.0

Choose a tag to compare

@rustyconover rustyconover released this 05 Jul 18:52

Bind-time enforcement of const-argument constraints: a const value violating a declared choices/ge/le/gt/lt/pattern constraint now fails the bind (IllegalArgumentException), complementing the per-argument discovery metadata shipped in v0.11.0.

v0.11.0

Choose a tag to compare

@rustyconover rustyconover released this 05 Jul 17:28

Per-argument constraint metadata for agent discovery; multi_branch_iceberg example fixture. Backward-compatible feature additions.

v0.10.0

Choose a tag to compare

@rustyconover rustyconover released this 30 Jun 15:08

COPY ... TO / FROM secret-bind hook: a worker can now forward the caller's CREATE SECRET credentials for secret-backed cloud writes/reads via the two-phase secret bind (CopyToFunction/CopyFromFunction secretLookups). Adds SecretLines COPY fixtures.

v0.9.0

Choose a tag to compare

@rustyconover rustyconover released this 29 Jun 14:02

Worker-side COPY ... FROM / TO custom format support, scope- and type-aware Secrets (name-keyed resolved secrets), the multi_secret_demo table function, union-typed table varargs decoding, and table-buffering functions that can request DuckDB secrets via two-phase bind.