[ https://issues.apache.org/jira/browse/DRILL-2147?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jacques Nadeau updated DRILL-2147: ---------------------------------- Fix Version/s: (was: 1.0.0) 1.2.0 > ValueVector design refactoring umbrella > --------------------------------------- > > Key: DRILL-2147 > URL: https://issues.apache.org/jira/browse/DRILL-2147 > Project: Apache Drill > Issue Type: Improvement > Components: Execution - Data Types > Reporter: Hanifi Gunes > Assignee: Hanifi Gunes > Fix For: 1.2.0 > > > The overall design of value vectors has become unclear and inconsistent with > additions from multiple contributors over the time. Also we need proper > documentation for the abstractions made for consistently communicating with > developers. > There are many instances that indicate possible design issues. > For instance, ValueVector implements Iterator<ValueVector>. This seems to > assume all vectors are somewhat hierarchical. This does not truly capture > scalar vectors as they have no child. > Similarly, RepeatedVector has the following interface definition: > {code:title=RepeatedVector} > interface RepeatedVector { > RepeatedFixedWidthVector.RepeatedAccessor getAccessor() > } > {code} > Yet, RepeatedFixedWidthVector implements RepeatedVector as follows > {code:title=RepeatedFixedWidthVector} > interface RepeatedFixedWidthVector extends ValueVector, RepeatedVector { > interface RepeatedAccessor extends Accessor {...} > interface RepeatedMutator extends Mutator {...} > } > {code} > A super-type that is aware of its sub-type hints a need for re-design. > Examples could be multiplied here: some method names are not self-explaining > or wrongly named or seems to be misplaced. There are couple of more places > where design is not capturing the nature of vectors such like missing > abstractions for Repeated vs Composite vectors. We should consider a design > refactoring. > This is an umbrella issue for tracking ValueVector design refactoring. -- This message was sent by Atlassian JIRA (v6.3.4#6332)