Skip to content

v0.44.0

Choose a tag to compare

@rustyconover rustyconover released this 23 Oct 23:08

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 stays vgi.v2 2.2.0.

  • A table-in-out exchange can answer one input batch with several replies: it emits each reply but the last with TableInOutExchangeState.withMoreOutput(true, metadata) (vgi.status: HAVE_MORE_OUTPUT), and the framework answers the client's zero-row CONTINUE ticks through the exchange's resume(). The exchange object is the resume state; its pending flag rides the HTTP state token. A continuing function declares its exchange class through TableInOutFunction.continuationState().
  • RowTransformFunction.inputRowsPerCall() sets the new nullable FunctionInfo.input_rows_per_call (regenerated protocol code, new contract hash).
  • New framework refusals: a table-in-out turn (onInputBatch or resume) that emits no batch now fails instead of leaving the pipe client waiting forever; ticks with nothing pending or with rows, real input while output is pending, cache control on a tick's reply, "more" without resume() and "more" from a table producer are refused. At startup (and again on the exchange's runtime class) a continuation state without resume(), a no-arg constructor or fields of its own, a PortableStreamState, or a function with maxWorkers() of 1 is refused.
  • A turn that throws releases what it emitted before failing.
  • Adds the standard blended_paged, blended_sliced and paged_explode fixtures.

Requires farm.query:vgirpc:0.33.1 (unchanged).

Release validation: the Maven-only build (VGI_RPC_JAVA_DIR=/nonexistent ./gradlew :vgi:test :vgi:javadoc) passed with sibling RPC source disabled.