Hanifi Gunes created DRILL-2147:
-----------------------------------

             Summary: Refactor ValueVector design
                 Key: DRILL-2147
                 URL: https://issues.apache.org/jira/browse/DRILL-2147
             Project: Apache Drill
          Issue Type: Bug
            Reporter: Hanifi Gunes
            Assignee: Hanifi Gunes


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)

Reply via email to