Repository navigation
v0.47.0
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 withTableInOutOutput::set_resume_state; the client's zero-rowCONTINUEtick is answered by the function'sresume(). 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 nullableFunctionInfo.input_rows_per_call; the generated schema and contract hash are regenerated.vgi-client'sExchangefollows continued output withhas_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_modifiedon a reply that says more,vgi.statusinEmitOptions.metadata, andresume_supported()withmax_workers = 1are all refused. - Adds the
blended_paged,blended_slicedandpaged_explodefixtures.
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.