Skip to content

ExtensionStoragePushdown returns storage values instead of extension values #11243

Open

Description

@connortsui20

What happened?

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_max wraps 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.

Additional context

Activity

  1. connortsui20 commented on Nov 4, 2026

    @connortsui20
    MemberAuthor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugA bug issue

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions