Skip to content

v0.18.49

Choose a tag to compare

@derekmwright derekmwright released this 05 Sep 21:56

v0.18.49

  • A value kept by a sorting, joining or collecting operator downstream of a
    column prune is no longer overwritten when the batch pool recycles the
    storage behind it. The pool now refuses to recycle any batch whose storage a
    consumer still holds, including storage reached through a nested field or a
    view. (#897)
  • FromRowsChecked refuses an unrepresentable DECIMAL value inside a ROW,
    ARRAY or MAP, the same way it already refused one at the top level. Text
    that names no number, an integer supplied as a raw unscaled carrier, and a
    value too wide for the column's scale are errors carrying PostgreSQL's
    SQLSTATE and naming the field or element that failed, instead of being
    stored as 0.00, as the value divided by 10^scale, or as a saturated
    maximum. (#898)
  • ARRAY<VECTOR(N)>, ROW{VECTOR(N)} and MAP<..., VECTOR(N)> values round
    trip, and a NULL vector followed by a present one reads back correctly. Both
    used to fail with an out-of-range panic. (#899)
  • A VECTOR(N) write must supply exactly N components. A shorter or longer
    value is refused with SQLSTATE 22000 and expected N dimensions, not M
    what PostgreSQL's vector extension answers — instead of being silently
    padded with whatever the storage last held. (#900)
  • The VECTOR width check above costs nothing outside VECTOR writes: it runs
    only at the row-to-batch write boundary (SetValue's VECTOR arm and the
    embedding provider's output), not on any scalar kernel or on any TPC-H or
    ClickBench query.
  • A VECTOR literal of the declared width now round-trips through INSERT, UPDATE, MERGE and COPY (previously every VECTOR literal reached the writer as text and corrupted the page); a literal of the wrong width is refused with SQLSTATE 22000 on every door.