[ https://issues.apache.org/jira/browse/ARROW-1463?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16154471#comment-16154471 ]
Bryan Cutler commented on ARROW-1463: ------------------------------------- +1 on fixing this up also, however there are already quite a lot of base classes and interfaces. [~jnadeau], following our other discussion from ARROW-1361, would it be possible to make {{FixedVector}} and {{VariableVector}} generic classes that take a ArrowType as type parameter and then specialize for types as needed? {{NullableValueVectors}} could remain a template, possibly simplified, or use a base class as mentioned above. I'm not entirely sure how feasible this is though.. > [JAVA] Restructure ValueVector hierarchy to minimize compile-time generated > code > -------------------------------------------------------------------------------- > > Key: ARROW-1463 > URL: https://issues.apache.org/jira/browse/ARROW-1463 > Project: Apache Arrow > Issue Type: Improvement > Reporter: Jacques Nadeau > Assignee: SIDDHARTH TEOTIA > > 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: > https://github.com/apache/arrow/pull/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. -- This message was sent by Atlassian JIRA (v6.4.14#64029)