Skip to content

EPIC: complete GroupValuesColumn type coverage (nested types + remaining primitives) #22715

Closed

Description

@zhuqi-lucas

Background

GroupValuesColumn (the column-wise multi-column GROUP BY storage) provides type-specific specializations under multi_group_by/ so a wide GROUP BY can use the column-native + short-circuit fast path instead of falling back to the byte-encoded GroupValuesRows path. Today the type allow-list is partial: any column outside the supported set drags the entire grouping onto the slow path, even when every other column would have qualified for the fast one.

This EPIC tracks completing the GroupValuesColumn type coverage so that the row-encoded fallback is needed only as an explicit opt-in, not as a forced fallback for missing specializations.

Already supported (today on main)

Int8..Int64, UInt8..UInt64, Float32, Float64, Decimal128, Utf8, LargeUtf8, Utf8View, Binary, LargeBinary, BinaryView, Boolean, Date32, Date64, Time32(Second/Millisecond), Time64(Microsecond/Nanosecond)†, Timestamp(*).

† Time64 alignment between supported_type and the dispatcher is being fixed as part of PR #22706.

Tracking

Nested types

Remaining primitives

Each item below blocks on the make_group_column factory and recursive supported_type landing in PR 1 of the #22706 sequence. After that, each is an independently mergeable PR.

Related strategic direction (not blocked by this EPIC)

#22701 proposes a generic FallbackGroupColumn so any Arrow type can go through GroupValuesColumn with a type-erased Arrow comparator. If that lands, the items in this EPIC become opt-in fast-path specializations on top of the generic fallback rather than prerequisites for the column-wise path. The two directions are complementary.

Cross-cutting requirements

Every new builder added under this EPIC should follow the testing structure established by PR #22706:

Activity

  1. changed the title [-]EPIC: fill out remaining primitive GroupColumn implementations (FixedSizeBinary / Float16 / Duration / Interval / Decimal256 / Dictionary)[/-] [+]EPIC: complete GroupValuesColumn type coverage (nested types + remaining primitives)[/+] on Jun 2, 2026
  2. alamb commented on Jun 22, 2026

    @alamb
    Contributor

    BTW once you have implemented all f these, it would be great to change the code from "fallback if not implemented" to "don't compile if not implemented"

  3. self-assigned this
    on Jun 24, 2026
  4. 11 remaining items

  5. alamb commented on Aug 8, 2026

    @alamb
    Contributor

    Now that we merged the support for Decimal

    Shall we claim this issue is complete?

  6. zhuqi-lucas commented on Aug 8, 2026

    @zhuqi-lucas
    ContributorAuthor

    Now that we merged the support for Decimal

    Shall we claim this issue is complete?

    The List/Struct/ etc (nested type) support for GroupValuesColumn still not merged, but we can track as follow-up, for example :
    #23648

  7. alamb commented on Aug 10, 2026

    @alamb
    Contributor

    The List/Struct/ etc (nested type) support for GroupValuesColumn still not merged, but we can track as follow-up, for example : #23648

    I updated the list "Remaining primitives" in the description with the various PRs we have up to fix it.

    The last remaining primitive is fixedsizebinary from @maxburke : #23646
    I am trying to review that one now

    So what do you think about creating a follow on epic just for the nested types, and closing this one down with the primitive types being complete?

    I think a nice "definition of done" for the new epic would be "remove GroupValuesRows" (as that would ensure we never fall

  8. zhuqi-lucas commented on Aug 11, 2026

    @zhuqi-lucas
    ContributorAuthor

    Thanks @alamb sounds good — let's close this one once #23646 (FixedSizeBinary) lands, and we can open a follow-up EPIC for the nested types with "remove GroupValuesRows" as the definition of done.

  9. alamb commented on Aug 11, 2026

    @alamb
    Contributor

    I filed this as the new epic to track and have put #23646 in the merge queue

    Thanks @zhuqi-lucas

  10. zhuqi-lucas commented on Aug 11, 2026

    @zhuqi-lucas
    ContributorAuthor

    Thanks @alamb , close this epic now.

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions