You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.