Repository navigation
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 callsresume()for each continuation tick the client sends (a zero-row batch of the input schema carryingvgi.status: CONTINUE). The resume position lives in the function's serializableTState, so over HTTP it rides the stream's state token: no sticky session and no vgi-rpc change. Meta.input_rows_per_call(RowTransformFunctiononly) caps the input rows one worker call receives and is advertised as the new nullableFunctionInfo.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'sOutputCollector.validate(), "No data batch was emitted"), so no turn can leave the client waiting. At registration, a function that overridesresume()must declare a serializableTStateand may not setmax_workers = 1. _FilteringOutputCollectorfiltersparent_rowswith the same mask as the batch, keeping provenance aligned when auto-applied filters drop rows.- Standard fixtures every SDK implements:
blended_paged,blended_slicedandpaged_explode(withfail_on_page,revalidate,not_modified_moreandcache_ttl);examples/paged_api_worker.pypages 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_generatedgains--onlyand--rootto 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.