-
Notifications
You must be signed in to change notification settings - Fork 4k
Description
The templates used in the java package are very high mainteance and the if conditions are hard to track. As started in the discussion here: #1012, I'd like to propose that we modify the structure of the internal value vectors and code generation dynamics.
Create new abstract base vectors:
BaseFixedVector
BaseVariableVector
BaseNullableVector
For each of these, implement all the basic functionality of a vector without using templating.
Evaluate whether to use code generation to generate specific specializations of this functionality for each type where needed for performance purposes (probably constrained to mutator and accessor set/get methods). Giant and complex if conditions in the templates are actually worse from my perspective than a small amount of hand written duplicated code since templates are much harder to work with.
Reporter: Jacques Nadeau / @jacques-n
Assignee: Siddharth Teotia / @siddharthteotia
Subtasks:
- [JAVA] Document requirements and non/requirements for ValueVector updates
- [JAVA] Design updated ValueVector Object Hierarchy
- [JAVA] Create Prototype Code Hierarchy (Implementation Phase 1)
- [JAVA] ValueVector hierarchy (Implementation Phase 2)
- [JAVA] Create Benchmarking Suite for prototypes
- [JAVA] Implement final ValueVector updates
- [JAVA] Create Benchmarking Suite for final ValueVector updates
- [Java] Remove non-nullable vectors in new vector class hierarchy
- [Java] Remove public static helper method in vector classes for JSONReader/Writer
- [Java] Remove accessor/mutator
- [Java] Integration test breaks without zeroing out validity vectors
- [Java] Rename MapVector to StructVector
- [Java] Resolve new vector classes structure for timestamp, date and maybe interval
- [Java] Remove legacy vector classes
- [Java] Combine MapVector and NonNullableMapVector Classes
- [Java] Add BitVector APIs from old vector class
- [Java] Change vector getMinorType to use MinorType instead of Types.MinorType
- [Java] Restore previous MapVector class names
Related issues:
- [Integration] Add integration tests for Union types (is related to)
- [Java] Add support for FixedSizeBinary type (is related to)
PRs and other links:
Note: This issue was originally created as ARROW-1463. Please see the migration documentation for further details.