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
{{ message }}
Repository navigation
ExtensionStoragePushdown returns storage values instead of extension values #11243
ExtensionStoragePushdown<A, E> returns the results and partials of A over the storage unchanged, so input values lose their extension type. For example, vortex.min_max[vortex.timestamp] returns raw i64 values without the time unit or time zone, while plain vortex.min_maxwraps its extrema and returns timestamps (X12). vortex.is_sorted[...] returns a correct Bool, but the first_value and last_value fields of its partial hold storage values.
Note that nothing in the repository reaches these aggregates on its own, since neither is a zone statistic default. Only an explicit binding or a serialized expression or statistic that names the composite ID does.
Steps to reproduce
pushes_down_into_storage asserts that vortex.min_max[vortex.timestamp] over a timestamp column equals plain min_max over its i64 storage.
Environment
develop at 068d8194c8. #10566 added the adapter, and #10616 registers it for Date, Time, Timestamp, and Uuid.
Plan
#11188 patched the adapter with a StorageResultMapping trait that names the fields holding input values by index ([0, 1] for min_max, [2, 3] for is_sorted). That's a half-measure, since the indices can drift from the real fields, the trait adds a contract on finalize, and #11115 removes the adapter anyway. So #11188 is closed, and the claims work fixes this instead:
SP1 adds ExtensionUse::Storage and result mappings (X19).
SP4 makes aggregate binding take a default storage path under the plain aggregate ID, so partials get their logical form when they leave the accumulator and the composite IDs go away (X21).
Open question for SP1: ResultMapping::Fields is still a positional list next to the dtype. Since each aggregate builds its dtypes from an element dtype (e.g., make_minmax_dtype), can building them over the extension dtype replace the mapping?
Until then, use plain min_max for the extrema of an extension column.
Activity
Record that U9 is dropped in favor of SP4
connortsui20 commentedon Nov 4, 2026
cc @joseph-isaacs