[
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)