Skip to content

v0.47.0

Choose a tag to compare

@rustyconover rustyconover released this 23 Oct 23:09
· 40 commits to main since this release

This release adds continued table-in-out output and input_rows_per_call. It requires the vgi DuckDB extension at or after fc3e08f (Query-farm/vgi main, published to the haybarn community channel as 454fefa). The wire contract stays vgi.v2 2.2.0.

  • A table-in-out function can answer one input batch with several replies: it emits each reply but the last with EmitOptions { more: true } (vgi.status: HAVE_MORE_OUTPUT) and records where to pick up with TableInOutOutput::set_resume_state; the client's zero-row CONTINUE tick is answered by the function's resume(). The position and pending flag live in the exchange blob, so over HTTP they ride the sealed state token.
  • FunctionMetadata::input_rows_per_call (blended functions, positive) is advertised as the new nullable FunctionInfo.input_rows_per_call; the generated schema and contract hash are regenerated.
  • vgi-client's Exchange follows continued output with has_more_output() / continue_output(); send() is refused while output is pending, and end-of-stream in answer to a tick is a protocol error instead of silently truncating the output.
  • New framework refusals: a resume() that emits nothing on a tick now fails instead of ending the continuation with an empty reply; a turn emitting more than one batch, a tick with nothing pending or with rows, real input while output is pending, cache control on a tick's reply, not_modified on a reply that says more, vgi.status in EmitOptions.metadata, and resume_supported() with max_workers = 1 are all refused.
  • Adds the blended_paged, blended_sliced and paged_explode fixtures.

Publishes vgi-protocol, vgi, and vgi-client 0.47.0 in dependency order. Uses published vgi-rpc / vgi-rpc-client 0.32.0; Rust 1.97 or later is required.