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.
---