Github user paul-rogers commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1060#discussion_r158198205
  
    --- Diff: exec/vector/src/main/codegen/templates/NullableValueVectors.java 
---
    @@ -456,55 +818,191 @@ public void get(int index, 
Nullable${minor.class}Holder holder){
           </#if>
         }
     
    +    /** {@inheritDoc} */
         @Override
         public ${friendlyType} getObject(int index) {
           if (isNull(index)) {
    -        return null;
    -      } else {
    +          return null;
    +      }else{
             return vAccessor.getObject(index);
           }
         }
    -
         <#if minor.class == "Interval" || minor.class == "IntervalDay" || 
minor.class == "IntervalYear">
    +    /** {@inheritDoc} */
         public StringBuilder getAsStringBuilder(int index) {
           if (isNull(index)) {
    -        return null;
    -      } else {
    +          return null;
    +      }else{
             return vAccessor.getAsStringBuilder(index);
           }
         }
    -
         </#if>
    +    /** {@inheritDoc} */
         @Override
         public int getValueCount() {
           return bits.getAccessor().getValueCount();
         }
    +  }
     
    -    public void reset() {}
    +  <#if type.major == "VarLen" && minor.class == "VarChar">
    +  /** Accessor Implementation for vector with only duplicate values */
    +  public final class DupValsOnlyAccessor extends Accessor {
    +    /** {@inheritDoc} */
    +    public byte[] get(int index) {
    +      chkIndex(index);
    +
    +      if (isNull(0)) {
    +          throw new IllegalStateException("Can't get a null value");
    +      }
    +      return vAccessor.get(0);
       }
     
    -  public final class Mutator extends BaseDataValueVector.BaseMutator 
implements NullableVectorDefinitionSetter<#if type.major = "VarLen">, 
VariableWidthVector.VariableWidthMutator</#if> {
    -    private int setCount;
    -    <#if type.major = "VarLen">private int lastSet = -1;</#if>
    +    /** {@inheritDoc} */
    +    @Override
    +    public boolean isNull(int index) {
    +      chkIndex(index);
    +      return bAccessor.get(0) == 0;
    +    }
     
    -    private Mutator() { }
    +    /** {@inheritDoc} */
    +    public int isSet(int index) {
    +      chkIndex(index);
    +      return bAccessor.get(0);
    +    }
     
    -    public ${valuesName} getVectorWithValues(){
    -      return values;
    +    /** {@inheritDoc} */
    +    public long getStartEnd(int index){
    +      chkIndex(index);
    +      return vAccessor.getStartEnd(0);
         }
     
    +    /** {@inheritDoc} */
         @Override
    -    public void setIndexDefined(int index){
    -      bits.getMutator().set(index, 1);
    +    public int getValueLength(int index) {
    +      chkIndex(index);
    +      return values.getAccessor().getValueLength(0);
    +    }
    +
    +    /** {@inheritDoc} */
    +    public void get(int index, Nullable${minor.class}Holder holder) {
    +      chkIndex(index);
    +      vAccessor.get(0, holder);
    +      holder.isSet = bAccessor.get(0);
    +    }
    +
    +    /** {@inheritDoc} */
    +    @Override
    +    public ${friendlyType} getObject(int index) {
    +      if (isNull(index)) {
    +          return null;
    +      }else{
    +        return vAccessor.getObject(0);
    +      }
    +    }
    +
    +    /** {@inheritDoc} */
    +    @Override
    +    public int getValueCount() {
    +      return logicalNumValues;
         }
     
    +    private void chkIndex(int index) {
    +      if (index >= logicalNumValues) {
    +        throw new IndexOutOfBoundsException(String.format("Index [%d], 
number of values [%d]", index, logicalNumValues));
    +      }
    +    }
    +  }
    +  </#if>
    +
    
+//-----------------------------------------------------------------------------
    +// Mutator inner classes
    
+//-----------------------------------------------------------------------------
    +
    +  /** Abstract mutator class */
    +  public abstract class Mutator extends BaseDataValueVector.BaseMutator 
implements NullableVectorDefinitionSetter<#if type.major = "VarLen">, 
VariableWidthVector.VariableWidthMutator</#if> {
    --- End diff --
    
    We should discuss in person. We have two conflicting threads. My PR will 
render mutators obsolete. Yours will double-down on the mutators. I suspect the 
result will be confusion for the other developers.


---

Reply via email to