Skip to content

v0.27.0

Choose a tag to compare

@rustyconover rustyconover released this 24 Jul 14:59
· 272 commits to main since this release

Preserve extra batch metadata across a re-frame

An intermediary that re-serializes a request — e.g. the Cedar proxy stripping an argument or injecting a row filter — rebuilds the request batch's custom_metadata and would drop any application keys the client set on it. Most importantly this loses the result-cache (M6) conditional-revalidation validators (vgi.cache.if_none_match / if_modified_since), which ride the request batch, not the payload — so the worker recomputes instead of answering 304 not_modified.

write_request / _write_request gain an extra_metadata parameter that merges additional custom_metadata into the request batch. Framework keys (method / version / shm / trace) always win, so a caller can never forge them.

Tolerate empty IPC buffers from lenient producers

deserialize_record_batch now decodes a schema-only / empty IPC stream to a zero-row batch instead of raising IPCError. Lenient producers (the Rust / Go / Java SDKs, tolerated by the DuckDB C++ client) omit the batch for an empty nested value, so a strict consumer must accept it rather than fail closed on a legitimate response.