Skip to content

[C++] AppendScalar implementation uses polymorphism #50596

Open

Description

@pitrou

Describe the enhancement requested

The ArrayBuilder::AppendScalar implementation is currently very odd:

  • the ArrayBuilder hierarchy uses polymorphism (i.e. virtual methods) to handle type-specific operations
  • but ArrayBuilder::AppendScalar is implemented entirely in the base class using a visitor, putting type-specific knowledge in the base class definition
  • but ArrayBuilder::AppendScalar is also a virtual method overriden in dictionary and run-end-encoded builders
  • furthermore, the visitor in the base class definition of ArrayBuilder::AppendScalar dispatched on the scalar's data type, instead of the builder's data type

We should refactor the AppendScalar implementation to be entirely polymorphic and remove any trace of type-specific implementations in the base class (ArrayBuilder::AppendScalar would probably become a pure virtual method).

This would also help in cases like #50584

Component(s)

C++

Activity

  1. SHAURYASAXENA2024 commented on Jul 22, 2026

    @SHAURYASAXENA2024

    Hi! I'd like to work on this issue if it's still available. Please let me know if someone is already working on it.

  2. pitrou commented on Jul 22, 2026

    @pitrou
    MemberAuthor

    @SHAURYASAXENA2024 I think you haven't contributed before? This issue is probably too complex, please look for issues with the "good first issue" label.

  3. SHAURYASAXENA2024 commented on Jul 22, 2026

    @SHAURYASAXENA2024

    Thank you very much for your advice! Yes, you are correct, this is my first time contributing to Apache Arrow. First, I will become acquainted with the code base and the contribution process.

  4. added a commit that references this issue on Aug 3, 2026
  5. VedantRalekar commented on Aug 14, 2026

    @VedantRalekar

    Hi, anyone working on this issue ?

  6. added 2 commits that reference this issue on Aug 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions