Skip to content

v0.47.0

Latest

Choose a tag to compare

@rustyconover rustyconover released this 23 Oct 23:37

Continued table-in-out output and input_rows_per_call. This release requires the vgi DuckDB extension at or after fc3e08f (Query-farm/vgi main, published to the haybarn community channel as 454fefa). It retains wire contract 2.2.0 under vgi.v2; the regenerated FunctionInfo changes the catalog contract hash.

  • A table-in-out function can answer one input batch with several replies: it emits each reply but the last with more=True (vgi.status: HAVE_MORE_OUTPUT), and the framework calls resume() for each continuation tick the client sends (a zero-row batch of the input schema carrying vgi.status: CONTINUE). The resume position lives in the function's serializable TState, so over HTTP it rides the stream's state token: no sticky session and no vgi-rpc change.
  • Meta.input_rows_per_call (RowTransformFunction only) caps the input rows one worker call receives and is advertised as the new nullable FunctionInfo.input_rows_per_call; the client splits each chunk into calls of at most that many rows.
  • Framework refusals: while output is pending a tick is the only valid input, a tick is valid only then, cache control may only ride an input's first reply, and emit(more=True) is refused outside a table-in-out exchange. A table-in-out turn that emits no batch is refused (vgi-rpc's OutputCollector.validate(), "No data batch was emitted"), so no turn can leave the client waiting. At registration, a function that overrides resume() must declare a serializable TState and may not set max_workers = 1.
  • _FilteringOutputCollector filters parent_rows with the same mask as the batch, keeping provenance aligned when auto-applied filters drop rows.
  • Standard fixtures every SDK implements: blended_paged, blended_sliced and paged_explode (with fail_on_page, revalidate, not_modified_more and cache_ttl); examples/paged_api_worker.py pages a fake cursor API one page per reply.
  • Reporting protocol contracts: bounded summary discovery, streamed checks and histories, scoped enterprise ownership, portable source identities and asynchronous preview contracts, with the reporting reference generator.
  • regen_generated gains --only and --root to regenerate one SDK checkout.

Validation: CI and the integration suite passed on 8889b81; wheel/sdist metadata checks passed. Uses published vgi-rpc>=0.52.0.

The companion fixture wheel and container images are versioned 0.47.0. Standalone vgi-fixtures PyPI publication remains disabled; fixture modules continue to ship in the vgi-python wheel.