Github user paul-rogers commented on a diff in the pull request:
https://github.com/apache/drill/pull/1060#discussion_r158196904
--- Diff: exec/vector/src/main/codegen/templates/NullableValueVectors.java
---
@@ -68,96 +85,441 @@
private final UInt1Vector bits = new UInt1Vector(bitsField, allocator);
private final ${valuesName} values = new ${minor.class}Vector(field,
allocator);
+ private final Mutator mutator = new MutatorImpl();
+ private final Accessor accessor = new AccessorImpl();
+
+ <#if type.major == "VarLen" && minor.class == "VarChar">
+ private final Mutator dupMutator = new DupValsOnlyMutator();
+ /** Accessor instance for duplicate values vector */
+ private final Accessor dupAccessor = new DupValsOnlyAccessor();
+ /** Optimization for cases where all values are identical */
+ private boolean duplicateValuesOnly;
+ /** logical number of values */
+ private int logicalNumValues;
+ /** logical value capacity */
+ private int logicalValueCapacity;
+ /** Mutator instance for duplicate values vector */
+
+ /** true if this vector holds the same value albeit repeated */
+ public boolean isDuplicateValsOnly() {
--- End diff --
I would very much recommend creating a new vector class for the repeated
value case rather than bolting it on top of the non-repeated vector. That way,
we don't have to check for every VarChar vector if it is repeated or not.
---