You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by pa...@apache.org on 2015/04/01 02:12:19 UTC
drill git commit: DRILL-2280: Refactor ValueVector interface & add an
abstract ValueVector implementation
Repository: drill
Updated Branches:
refs/heads/master 064fc0265 -> 1b0c52f91
DRILL-2280: Refactor ValueVector interface & add an abstract ValueVector implementation
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/1b0c52f9
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/1b0c52f9
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/1b0c52f9
Branch: refs/heads/master
Commit: 1b0c52f91dbe2284438e2ef7aa839cb9c6717f65
Parents: 064fc02
Author: Hanifi Gunes <hg...@maprtech.com>
Authored: Mon Feb 23 11:17:51 2015 -0800
Committer: Parth Chandra <pc...@maprtech.com>
Committed: Tue Mar 31 17:11:39 2015 -0700
----------------------------------------------------------------------
.../templates/EventBasedRecordWriter.java | 2 +-
.../codegen/templates/FixedValueVectors.java | 27 ++--
.../codegen/templates/NullableValueVectors.java | 40 ++---
.../codegen/templates/RecordValueAccessor.java | 2 +-
.../codegen/templates/RepeatedValueVectors.java | 21 +--
.../templates/VariableLengthVectors.java | 15 +-
.../drill/exec/expr/EvaluationVisitor.java | 2 +-
.../parquet/columnreaders/ColumnReader.java | 3 +-
.../columnreaders/NullableColumnReader.java | 7 +-
.../exec/store/parquet2/DrillParquetReader.java | 2 +-
.../drill/exec/vector/BaseDataValueVector.java | 3 -
.../drill/exec/vector/BaseValueVector.java | 38 ++---
.../org/apache/drill/exec/vector/BitVector.java | 12 +-
.../apache/drill/exec/vector/ObjectVector.java | 29 +---
.../apache/drill/exec/vector/ValueVector.java | 148 +++++++++++--------
.../vector/complex/AbstractContainerVector.java | 5 +-
.../drill/exec/vector/complex/MapVector.java | 31 ++--
.../exec/vector/complex/RepeatedListVector.java | 19 +--
.../exec/vector/complex/RepeatedMapVector.java | 19 +--
.../complex/impl/RepeatedListReaderImpl.java | 2 +-
.../complex/impl/RepeatedMapReaderImpl.java | 2 +-
.../complex/impl/SingleListReaderImpl.java | 2 +-
.../complex/impl/SingleMapReaderImpl.java | 2 +-
.../apache/drill/exec/expr/ExpressionTest.java | 4 +-
.../vector/complex/writer/TestRepeated.java | 2 +-
25 files changed, 222 insertions(+), 217 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/codegen/templates/EventBasedRecordWriter.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/templates/EventBasedRecordWriter.java b/exec/java-exec/src/main/codegen/templates/EventBasedRecordWriter.java
index e76178a..797f3cb 100644
--- a/exec/java-exec/src/main/codegen/templates/EventBasedRecordWriter.java
+++ b/exec/java-exec/src/main/codegen/templates/EventBasedRecordWriter.java
@@ -73,7 +73,7 @@ public class EventBasedRecordWriter {
try {
int fieldId = 0;
for (VectorWrapper w : batch) {
- FieldReader reader = w.getValueVector().getAccessor().getReader();
+ FieldReader reader = w.getValueVector().getReader();
FieldConverter converter = getConverter(recordWriter, fieldId++, w.getField().getLastName(), reader);
fieldConverters.add(converter);
}
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/codegen/templates/FixedValueVectors.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/templates/FixedValueVectors.java b/exec/java-exec/src/main/codegen/templates/FixedValueVectors.java
index b922767..f7260e7 100644
--- a/exec/java-exec/src/main/codegen/templates/FixedValueVectors.java
+++ b/exec/java-exec/src/main/codegen/templates/FixedValueVectors.java
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+import java.lang.Override;
+
<@pp.dropOutputFile />
<#list vv.types as type>
<#list type.minor as minor>
@@ -40,7 +42,9 @@ package org.apache.drill.exec.vector;
*/
@SuppressWarnings("unused")
public final class ${minor.class}Vector extends BaseDataValueVector implements FixedWidthVector{
+ private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(${minor.class}Vector.class);
+ private final FieldReader reader = new ${minor.class}ReaderImpl(${minor.class}Vector.this);
private final Accessor accessor = new Accessor();
private final Mutator mutator = new Mutator();
@@ -51,6 +55,11 @@ public final class ${minor.class}Vector extends BaseDataValueVector implements F
super(field, allocator);
}
+ @Override
+ public FieldReader getReader(){
+ return reader;
+ }
+
public int getValueCapacity(){
return (int) (data.capacity() *1.0 / ${type.width});
}
@@ -238,14 +247,8 @@ public final class ${minor.class}Vector extends BaseDataValueVector implements F
++allocationMonitor;
}
- public final class Accessor extends BaseValueVector.BaseAccessor{
+ public final class Accessor extends BaseDataValueVector.BaseAccessor {
- final FieldReader reader = new ${minor.class}ReaderImpl(${minor.class}Vector.this);
-
- public FieldReader getReader(){
- return reader;
- }
-
public int getValueCount() {
return valueCount;
}
@@ -525,7 +528,7 @@ public final class ${minor.class}Vector extends BaseDataValueVector implements F
*
* NB: this class is automatically generated from ValueVectorTypes.tdd using FreeMarker.
*/
- public final class Mutator extends BaseValueVector.BaseMutator{
+ public final class Mutator extends BaseDataValueVector.BaseMutator {
private Mutator(){};
/**
@@ -679,8 +682,8 @@ public final class ${minor.class}Vector extends BaseDataValueVector implements F
}
}
}
-
-
+
+
<#else> <#-- type.width <= 8 -->
@@ -729,8 +732,8 @@ public final class ${minor.class}Vector extends BaseDataValueVector implements F
}
}
}
-
-
+
+
public void generateTestDataAlt(int size) {
setValueCount(size);
boolean even = true;
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/codegen/templates/NullableValueVectors.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/templates/NullableValueVectors.java b/exec/java-exec/src/main/codegen/templates/NullableValueVectors.java
index 2ec7492..075316e 100644
--- a/exec/java-exec/src/main/codegen/templates/NullableValueVectors.java
+++ b/exec/java-exec/src/main/codegen/templates/NullableValueVectors.java
@@ -15,6 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+import org.apache.drill.exec.vector.BaseDataValueVector;
import org.apache.drill.exec.vector.NullableVectorDefinitionSetter;
import java.lang.Override;
@@ -44,22 +45,26 @@ package org.apache.drill.exec.vector;
* NB: this class is automatically generated from ValueVectorTypes.tdd using FreeMarker.
*/
@SuppressWarnings("unused")
-public final class ${className} extends BaseValueVector implements <#if type.major == "VarLen">VariableWidth<#else>FixedWidth</#if>Vector, NullableVector{
+public final class ${className} extends BaseDataValueVector implements <#if type.major == "VarLen">VariableWidth<#else>FixedWidth</#if>Vector, NullableVector{
+ private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(${className}.class);
+
+ private final FieldReader reader = new Nullable${minor.class}ReaderImpl(Nullable${minor.class}Vector.this);
private int valueCount;
- final UInt1Vector bits;
- final ${valuesName} values;
- private final Accessor accessor;
- private final Mutator mutator;
+ private final UInt1Vector bits = new UInt1Vector(MaterializedField.create(field + "_bits", Types.required(MinorType.UINT1)), allocator);
+ private final ${valuesName} values = new ${minor.class}Vector(field, allocator);
+ private final Mutator mutator = new Mutator();
+ private final Accessor accessor = new Accessor();
public ${className}(MaterializedField field, BufferAllocator allocator) {
super(field, allocator);
- this.bits = new UInt1Vector(MaterializedField.create(field + "_bits", Types.required(MinorType.UINT1)), allocator);
- this.values = new ${minor.class}Vector(field, allocator);
- this.accessor = new Accessor();
- this.mutator = new Mutator();
}
-
+
+ @Override
+ public FieldReader getReader(){
+ return reader;
+ }
+
public int getValueCapacity(){
return Math.min(bits.getValueCapacity(), values.getValueCapacity());
}
@@ -354,16 +359,11 @@ public final class ${className} extends BaseValueVector implements <#if type.maj
}
</#if>
- public final class Accessor implements ValueVector.Accessor<#if type.major = "VarLen">, VariableWidthVector.VariableWidthAccessor</#if>{
+ public final class Accessor extends BaseDataValueVector.BaseAccessor <#if type.major = "VarLen">implements VariableWidthVector.VariableWidthAccessor</#if> {
- final FieldReader reader = new Nullable${minor.class}ReaderImpl(Nullable${minor.class}Vector.this);
final UInt1Vector.Accessor bAccessor = bits.getAccessor();
final ${valuesName}.Accessor vAccessor = values.getAccessor();
-
- public FieldReader getReader(){
- return reader;
- }
-
+
/**
* Get the element at the specified position.
*
@@ -440,7 +440,7 @@ public final class ${className} extends BaseValueVector implements <#if type.maj
public void reset(){}
}
- public final class Mutator implements ValueVector.Mutator, NullableVectorDefinitionSetter<#if type.major = "VarLen">, VariableWidthVector.VariableWidthMutator</#if> {
+ 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>
@@ -613,14 +613,14 @@ public final class ${className} extends BaseValueVector implements <#if type.maj
public boolean noNulls(){
return valueCount == setCount;
}
-
+
public void generateTestData(int valueCount){
bits.getMutator().generateTestDataAlt(valueCount);
values.getMutator().generateTestData(valueCount);
<#if type.major = "VarLen">lastSet = valueCount;</#if>
setValueCount(valueCount);
}
-
+
public void reset(){
setCount = 0;
<#if type.major = "VarLen">lastSet = -1;</#if>
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/codegen/templates/RecordValueAccessor.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/templates/RecordValueAccessor.java b/exec/java-exec/src/main/codegen/templates/RecordValueAccessor.java
index 4719731..b91d383 100644
--- a/exec/java-exec/src/main/codegen/templates/RecordValueAccessor.java
+++ b/exec/java-exec/src/main/codegen/templates/RecordValueAccessor.java
@@ -64,7 +64,7 @@ public class RecordValueAccessor {
public void getFieldById(int fieldId, ComplexHolder holder) {
holder.isSet = vectors[fieldId].getAccessor().isNull(currentIndex) ? 1 : 0;
- holder.reader = (vectors[fieldId]).getAccessor().getReader();
+ holder.reader = (vectors[fieldId]).getReader();
holder.reader.setPosition(currentIndex);
}
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/codegen/templates/RepeatedValueVectors.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/templates/RepeatedValueVectors.java b/exec/java-exec/src/main/codegen/templates/RepeatedValueVectors.java
index ee40cc2..c7cf8e6 100644
--- a/exec/java-exec/src/main/codegen/templates/RepeatedValueVectors.java
+++ b/exec/java-exec/src/main/codegen/templates/RepeatedValueVectors.java
@@ -48,12 +48,14 @@ package org.apache.drill.exec.vector;
*/
public final class Repeated${minor.class}Vector extends BaseValueVector implements Repeated<#if type.major == "VarLen">VariableWidth<#else>FixedWidth</#if>Vector {
+ private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(Repeated${minor.class}Vector.class);
private int parentValueCount;
private int childValueCount;
private final UInt4Vector offsets; // offsets to start of each record
private final ${minor.class}Vector values;
+ private final FieldReader reader = new Repeated${minor.class}ReaderImpl(Repeated${minor.class}Vector.this);
private final Mutator mutator = new Mutator();
private final Accessor accessor = new Accessor();
@@ -65,6 +67,11 @@ public final class Repeated${minor.class}Vector extends BaseValueVector implemen
this.values = new ${minor.class}Vector(mf, allocator);
}
+ @Override
+ public FieldReader getReader(){
+ return reader;
+ }
+
public int getValueCapacity(){
return Math.min(values.getValueCapacity(), offsets.getValueCapacity() - 1);
}
@@ -305,13 +312,7 @@ public final class Repeated${minor.class}Vector extends BaseValueVector implemen
// in the future, the interface shold be declared in the respective value vector superclasses for fixed and variable
// and we should refer to each in the generation template
public final class Accessor implements RepeatedFixedWidthVector.RepeatedAccessor{
-
- final FieldReader reader = new Repeated${minor.class}ReaderImpl(Repeated${minor.class}Vector.this);
-
- public FieldReader getReader(){
- return reader;
- }
-
+
/**
* Get the elements at the given index.
*/
@@ -517,19 +518,19 @@ public final class Repeated${minor.class}Vector extends BaseValueVector implemen
offsets.getMutator().setValueCount(groupCount == 0 ? 0 : groupCount+1);
values.getMutator().setValueCount(childValueCount);
}
-
+
public void generateTestData(final int valCount){
int[] sizes = {1,2,0,6};
int size = 0;
int runningOffset = 0;
for(int i =1; i < valCount+1; i++, size++){
runningOffset += sizes[size % sizes.length];
- offsets.getMutator().set(i, runningOffset);
+ offsets.getMutator().set(i, runningOffset);
}
values.getMutator().generateTestData(valCount*9);
setValueCount(size);
}
-
+
public void reset(){
}
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/codegen/templates/VariableLengthVectors.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/templates/VariableLengthVectors.java b/exec/java-exec/src/main/codegen/templates/VariableLengthVectors.java
index 93557e2..61a2481 100644
--- a/exec/java-exec/src/main/codegen/templates/VariableLengthVectors.java
+++ b/exec/java-exec/src/main/codegen/templates/VariableLengthVectors.java
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+import java.lang.Override;
+
import org.apache.drill.exec.vector.BaseDataValueVector;
import org.apache.drill.exec.vector.BaseValueVector;
import org.apache.drill.exec.vector.VariableWidthVector;
@@ -55,6 +57,8 @@ public final class ${minor.class}Vector extends BaseDataValueVector implements V
private static final int MIN_BYTE_COUNT = 4096;
private final UInt${type.width}Vector offsetVector;
+ private final FieldReader reader = new ${minor.class}ReaderImpl(${minor.class}Vector.this);
+
private final Accessor accessor;
private final Mutator mutator;
@@ -72,6 +76,11 @@ public final class ${minor.class}Vector extends BaseDataValueVector implements V
this.mutator = new Mutator();
}
+ @Override
+ public FieldReader getReader(){
+ return reader;
+ }
+
public int getBufferSize(){
if(valueCount == 0) return 0;
return offsetVector.getBufferSize() + data.writerIndex();
@@ -316,12 +325,8 @@ public final class ${minor.class}Vector extends BaseDataValueVector implements V
}
public final class Accessor extends BaseValueVector.BaseAccessor implements VariableWidthAccessor {
- final FieldReader reader = new ${minor.class}ReaderImpl(${minor.class}Vector.this);
final UInt${type.width}Vector.Accessor oAccessor = offsetVector.getAccessor();
- public FieldReader getReader(){
- return reader;
- }
-
+
public long getStartEnd(int index){
return oAccessor.getTwoAsLong(index);
}
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java
index c20ff14..386ab79 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java
@@ -360,7 +360,7 @@ public class EvaluationVisitor {
} else {
JExpression vector = e.isSuperReader() ? vv1.component(componentVariable) : vv1;
- JExpression expr = vector.invoke("getAccessor").invoke("getReader");
+ JExpression expr = vector.invoke("getReader");
PathSegment seg = e.getReadPath();
JVar isNull = null;
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/ColumnReader.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/ColumnReader.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/ColumnReader.java
index 2424fac..759327a 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/ColumnReader.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/ColumnReader.java
@@ -22,6 +22,7 @@ import io.netty.buffer.ByteBuf;
import java.io.IOException;
import org.apache.drill.common.exceptions.ExecutionSetupException;
+import org.apache.drill.exec.vector.BaseDataValueVector;
import org.apache.drill.exec.vector.BaseValueVector;
import org.apache.drill.exec.vector.ValueVector;
@@ -180,7 +181,7 @@ public abstract class ColumnReader<V extends ValueVector> {
readLengthInBits = 0;
recordsReadInThisIteration = 0;
bytesReadInCurrentPass = 0;
- vectorData = ((BaseValueVector) valueVec).getData();
+ vectorData = ((BaseDataValueVector) valueVec).getData();
}
public int capacity() {
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableColumnReader.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableColumnReader.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableColumnReader.java
index c7ada6b..16519a8 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableColumnReader.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableColumnReader.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.store.parquet.columnreaders;
import java.io.IOException;
import org.apache.drill.common.exceptions.ExecutionSetupException;
+import org.apache.drill.exec.vector.BaseDataValueVector;
import org.apache.drill.exec.vector.BaseValueVector;
import org.apache.drill.exec.vector.NullableVectorDefinitionSetter;
import org.apache.drill.exec.vector.ValueVector;
@@ -35,7 +36,7 @@ abstract class NullableColumnReader<V extends ValueVector> extends ColumnReader<
int rightBitShift;
// used when copying less than a byte worth of data at a time, to indicate the number of used bits in the current byte
int bitsUsed;
- BaseValueVector castedBaseVector;
+ BaseDataValueVector castedBaseVector;
NullableVectorDefinitionSetter castedVectorMutator;
long definitionLevelsRead;
long totalDefinitionLevelsRead;
@@ -43,7 +44,7 @@ abstract class NullableColumnReader<V extends ValueVector> extends ColumnReader<
NullableColumnReader(ParquetRecordReader parentReader, int allocateSize, ColumnDescriptor descriptor, ColumnChunkMetaData columnChunkMetaData,
boolean fixedLength, V v, SchemaElement schemaElement) throws ExecutionSetupException {
super(parentReader, allocateSize, descriptor, columnChunkMetaData, fixedLength, v, schemaElement);
- castedBaseVector = (BaseValueVector) v;
+ castedBaseVector = (BaseDataValueVector) v;
castedVectorMutator = (NullableVectorDefinitionSetter) v.getMutator();
totalDefinitionLevelsRead = 0;
}
@@ -114,7 +115,7 @@ abstract class NullableColumnReader<V extends ValueVector> extends ColumnReader<
}
valuesReadInCurrentPass += nullsFound;
- int writerIndex = ((BaseValueVector) valueVec).getData().writerIndex();
+ int writerIndex = ((BaseDataValueVector) valueVec).getData().writerIndex();
if ( dataTypeLengthInBits > 8 || (dataTypeLengthInBits < 8 && totalValuesRead + runLength % 8 == 0)){
castedBaseVector.getData().setIndex(0, writerIndex + (int) Math.ceil( nullsFound * dataTypeLengthInBits / 8.0));
}
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet2/DrillParquetReader.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet2/DrillParquetReader.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet2/DrillParquetReader.java
index 9d85b67..fa78213 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet2/DrillParquetReader.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet2/DrillParquetReader.java
@@ -340,7 +340,7 @@ public class DrillParquetReader extends AbstractRecordReader {
private int getPercentFilled() {
int filled = 0;
for (ValueVector v : primitiveVectors) {
- filled = Math.max(filled, ((BaseValueVector) v).getCurrentValueCount() * 100 / v.getValueCapacity());
+ filled = Math.max(filled, v.getAccessor().getValueCount() * 100 / v.getValueCapacity());
if (v instanceof VariableWidthVector) {
filled = Math.max(filled, ((VariableWidthVector) v).getCurrentSizeInBytes() * 100 / ((VariableWidthVector) v).getByteCapacity());
}
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BaseDataValueVector.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BaseDataValueVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BaseDataValueVector.java
index bc3edaa..d48ea99 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BaseDataValueVector.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BaseDataValueVector.java
@@ -54,12 +54,10 @@ public abstract class BaseDataValueVector extends BaseValueVector{
}
}
- @Override
public void setCurrentValueCount(int count) {
currentValueCount = count;
}
- @Override
public int getCurrentValueCount() {
return currentValueCount;
}
@@ -93,7 +91,6 @@ public abstract class BaseDataValueVector extends BaseValueVector{
@Override
public abstract SerializedField getMetadata();
- @Override
public DrillBuf getData() {
return data;
}
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BaseValueVector.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BaseValueVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BaseValueVector.java
index 18da67d..81d3a86 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BaseValueVector.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BaseValueVector.java
@@ -17,27 +17,26 @@
*/
package org.apache.drill.exec.vector;
-import io.netty.buffer.DrillBuf;
-
import java.util.Iterator;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Iterators;
import org.apache.drill.common.expression.FieldReference;
import org.apache.drill.exec.memory.BufferAllocator;
import org.apache.drill.exec.proto.UserBitShared.SerializedField;
import org.apache.drill.exec.record.MaterializedField;
-import com.google.common.collect.Iterators;
-
-public abstract class BaseValueVector implements ValueVector{
- static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(BaseValueVector.class);
+public abstract class BaseValueVector<V extends BaseValueVector<V, A, M>, A extends BaseValueVector.BaseAccessor,
+ M extends BaseValueVector.BaseMutator> implements ValueVector<V, A, M> {
+ private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(BaseValueVector.class);
protected final BufferAllocator allocator;
protected final MaterializedField field;
public static final int INITIAL_VALUE_ALLOCATION = 4096;
- BaseValueVector(MaterializedField field, BufferAllocator allocator) {
- this.allocator = allocator;
+ protected BaseValueVector(MaterializedField field, BufferAllocator allocator) {
this.field = field;
+ this.allocator = Preconditions.checkNotNull(allocator, "allocator cannot be null");
}
@Override
@@ -54,26 +53,27 @@ public abstract class BaseValueVector implements ValueVector{
return getField().clone(ref);
}
- protected SerializedField.Builder getMetadataBuilder(){
+ protected SerializedField.Builder getMetadataBuilder() {
return getField().getAsBuilder();
}
- public abstract int getCurrentValueCount();
- public abstract void setCurrentValueCount(int count);
-
- abstract public DrillBuf getData();
+ public abstract static class BaseAccessor implements ValueVector.Accessor {
+ protected BaseAccessor() { }
- abstract static class BaseAccessor implements ValueVector.Accessor{
- public abstract int getValueCount();
- public void reset(){}
+ @Override
+ public boolean isNull(int index) {
+ return false;
+ }
}
- abstract class BaseMutator implements Mutator{
- public void reset(){}
+ public abstract static class BaseMutator implements ValueVector.Mutator {
+ protected BaseMutator() { }
+
+ public void reset() { }
}
@Override
- public Iterator<ValueVector> iterator() {
+ public Iterator<ValueVector<V,A,M>> iterator() {
return Iterators.emptyIterator();
}
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BitVector.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BitVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BitVector.java
index a152a0e..1558e19 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BitVector.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/BitVector.java
@@ -38,6 +38,7 @@ import org.apache.drill.exec.vector.complex.reader.FieldReader;
public final class BitVector extends BaseDataValueVector implements FixedWidthVector {
static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(BitVector.class);
+ private final FieldReader reader = new BitReaderImpl(BitVector.this);
private final Accessor accessor = new Accessor();
private final Mutator mutator = new Mutator();
@@ -49,6 +50,11 @@ public final class BitVector extends BaseDataValueVector implements FixedWidthVe
}
@Override
+ public FieldReader getReader() {
+ return reader;
+ }
+
+ @Override
public SerializedField getMetadata() {
return field.getAsBuilder() //
.setValueCount(valueCount) //
@@ -278,6 +284,7 @@ public final class BitVector extends BaseDataValueVector implements FixedWidthVe
return Long.bitCount(b & (1L << bitIndex));
}
+ @Override
public boolean isNull(int index) {
return false;
}
@@ -300,11 +307,6 @@ public final class BitVector extends BaseDataValueVector implements FixedWidthVe
holder.isSet = 1;
holder.value = get(index);
}
-
- @Override
- public FieldReader getReader() {
- return new BitReaderImpl(BitVector.this);
- }
}
/**
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/ObjectVector.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/ObjectVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/ObjectVector.java
index ac050e1..967f051 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/ObjectVector.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/ObjectVector.java
@@ -51,6 +51,11 @@ public class ObjectVector extends BaseValueVector{
maxCount += allocationSize;
}
+ @Override
+ public FieldReader getReader() {
+ throw new UnsupportedOperationException("ObjectVector does not support this");
+ }
+
public final class Mutator implements ValueVector.Mutator {
public void set(int index, Object obj) {
@@ -138,20 +143,6 @@ public class ObjectVector extends BaseValueVector{
}
@Override
- public int getCurrentValueCount() {
- return 0;
- }
-
- @Override
- public void setCurrentValueCount(int count) {
- }
-
- @Override
- public DrillBuf getData() {
- throw new UnsupportedOperationException("ObjectVector does not support this");
- }
-
- @Override
public TransferPair getTransferPair() {
throw new UnsupportedOperationException("ObjectVector does not support this");
}
@@ -217,16 +208,6 @@ public class ObjectVector extends BaseValueVector{
return count;
}
- @Override
- public boolean isNull(int index) {
- return false;
- }
-
- @Override
- public FieldReader getReader() {
- throw new UnsupportedOperationException("ObjectVector does not support this");
- }
-
public Object get(int index) {
return getObject(index);
}
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/ValueVector.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/ValueVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/ValueVector.java
index 42e25e7..e4a0997 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/ValueVector.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/ValueVector.java
@@ -29,24 +29,32 @@ import org.apache.drill.exec.record.TransferPair;
import org.apache.drill.exec.vector.complex.reader.FieldReader;
/**
- * ValueVectorTypes defines a set of template-generated classes which implement type-specific value vectors. The
- * template approach was chosen due to the lack of multiple inheritence. It is also important that all related logic be
- * as efficient as possible.
+ * An abstraction that is used to store a sequence of values in an individual column.
+ *
+ * A {@link ValueVector value vector} stores underlying data in-memory in a columnar fashion that is compact and
+ * efficient. The column whose data is stored, is referred by {@link #getField()}.
+ *
+ * A vector when instantiated, relies on a {@link org.apache.drill.exec.record.DeadBuf dead buffer}. It is important
+ * that vector is allocated before attempting to read or write.
+ *
+ * @param <V> actual value vector type
+ * @param <A> accessor type that supports reading from this vector
+ * @param <M> mutator type that supports writing to this vector
*/
-public interface ValueVector extends Closeable, Iterable<ValueVector> {
-
+public interface ValueVector<V extends ValueVector, A extends ValueVector.Accessor, M extends ValueVector.Mutator>
+ extends Closeable, Iterable<ValueVector<V, A, M>> {
/**
* Allocate new buffers. ValueVector implements logic to determine how much to allocate.
* @throws OutOfMemoryRuntimeException Thrown if no memory can be allocated.
*/
- public void allocateNew() throws OutOfMemoryRuntimeException;
+ void allocateNew() throws OutOfMemoryRuntimeException;
/**
* Allocates new buffers. ValueVector implements logic to determine how much to allocate.
* @return Returns true if allocation was succesful.
*/
- public boolean allocateNewSafe();
+ boolean allocateNewSafe();
/**
* Set the initial record capacity
@@ -54,51 +62,69 @@ public interface ValueVector extends Closeable, Iterable<ValueVector> {
*/
public void setInitialCapacity(int numRecords);
- public int getBufferSize();
+ /**
+ * Returns the maximum number of values that can be stored in this vector instance.
+ */
+ int getValueCapacity();
/**
* Alternative to clear(). Allows use as closeable in try-with-resources.
*/
- public void close();
+ void close();
/**
* Release the underlying DrillBuf and reset the ValueVector to empty.
*/
- public void clear();
+ void clear();
/**
* Get information about how this field is materialized.
- *
- * @return
*/
- public MaterializedField getField();
+ MaterializedField getField();
/**
- * Get a transfer pair to allow transferring this vectors data between this vector and a destination vector of the
- * same type. Will also generate a second instance of this vector class that is connected through the TransferPair.
- *
- * @return
+ * Returns a {@link org.apache.drill.exec.record.TransferPair transfer pair}, creating a new target vector of
+ * the same type.
*/
- public TransferPair getTransferPair();
+ TransferPair getTransferPair();
- public TransferPair makeTransferPair(ValueVector to);
+ TransferPair getTransferPair(FieldReference ref);
- public TransferPair getTransferPair(FieldReference ref);
+ /**
+ * Returns a new {@link org.apache.drill.exec.record.TransferPair transfer pair} that is used to transfer underlying
+ * buffers into the target vector.
+ */
+ TransferPair makeTransferPair(V target);
/**
- * Given the current buffer allocation, return the maximum number of values that this buffer can contain.
- *
- * @return Maximum values buffer can contain. In the case of a Repeated field, this is the number of atoms, not
- * repeated groups.
+ * Returns an {@link org.apache.drill.exec.vector.ValueVector.Accessor accessor} that is used to read from this vector
+ * instance.
*/
- public int getValueCapacity();
+ A getAccessor();
/**
- * Get Accessor to read value vector data.
+ * Returns an {@link org.apache.drill.exec.vector.ValueVector.Mutator mutator} that is used to write to this vector
+ * instance.
+ */
+ M getMutator();
+
+ /**
+ * Returns a {@link org.apache.drill.exec.vector.complex.reader.FieldReader field reader} that supports reading values
+ * from this vector.
+ */
+ FieldReader getReader();
+
+ /**
+ * Get the metadata for this field. Used in serialization
*
- * @return
+ * @return FieldMetadata for this field.
+ */
+ SerializedField getMetadata();
+
+ /**
+ * Returns the number of bytes that is used by this vector instance.
*/
- public abstract Accessor getAccessor();
+ int getBufferSize();
/**
* Return the underlying buffers associated with this vector. Note that this doesn't impact the reference counts for
@@ -108,9 +134,9 @@ public interface ValueVector extends Closeable, Iterable<ValueVector> {
* @param clear
* Whether to clear vector
*
- * @return The underlying ByteBuf.
+ * @return The underlying {@link io.netty.buffer.DrillBuf buffers} that is used by this vector instance.
*/
- public abstract DrillBuf[] getBuffers(boolean clear);
+ DrillBuf[] getBuffers(boolean clear);
/**
* Load the data provided in the buffer. Typically used when deserializing from the wire.
@@ -120,58 +146,54 @@ public interface ValueVector extends Closeable, Iterable<ValueVector> {
* @param buffer
* The buffer that contains the ValueVector.
*/
- public void load(SerializedField metadata, DrillBuf buffer);
+ void load(SerializedField metadata, DrillBuf buffer);
/**
- * Get the metadata for this field. Used in serialization
- *
- * @return FieldMetadata for this field.
- */
- public SerializedField getMetadata();
-
- /**
- * Get a Mutator to update this vectors data.
+ * An abstraction that is used to read from this vector instance.
*
- * @return
+ * @param <BT> boxed value type that is stored in this vector.
*/
- public abstract Mutator getMutator();
-
- public interface Accessor {
-
- // /**
- // * Get the number of records allocated for this value vector.
- // * @return number of allocated records
- // */
- // public int getRecordCount();
-
+ interface Accessor<BT> {
/**
* Get the Java Object representation of the element at the specified position. Useful for testing.
*
* @param index
* Index of the value to get
*/
- public abstract Object getObject(int index);
-
- public int getValueCount();
-
- public boolean isNull(int index);
+ BT getObject(int index);
- public void reset();
+ /**
+ * Returns the number of values that is stored in this vector.
+ */
+ int getValueCount();
- public FieldReader getReader();
+ /**
+ * Returns true if the value at the given index is null, false otherwise.
+ */
+ boolean isNull(int index);
}
- public interface Mutator {
+ /**
+ * An abstractiong that is used to write into this vector instance.
+ */
+ interface Mutator {
/**
- * Set the top number values (optional/required) or number of value groupings (repeated) in this vector.
+ * Sets the number of values that is stored in this vector to the given value count.
*
- * @param valueCount
+ * @param valueCount value count to set.
*/
- public void setValueCount(int valueCount);
+ void setValueCount(int valueCount);
- public void reset();
+ /**
+ * Resets the mutator to pristine state.
+ */
+ void reset();
- public void generateTestData(int values);
+ /**
+ * @deprecated this has nothing to do with value vector abstraction and should be removed.
+ */
+ @Deprecated
+ void generateTestData(int values);
}
}
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/AbstractContainerVector.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/AbstractContainerVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/AbstractContainerVector.java
index acf9ec7..d14dca6 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/AbstractContainerVector.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/AbstractContainerVector.java
@@ -17,13 +17,16 @@
*/
package org.apache.drill.exec.vector.complex;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import javax.annotation.Nullable;
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.drill.common.expression.PathSegment;
import org.apache.drill.common.types.TypeProtos.DataMode;
@@ -94,7 +97,7 @@ public abstract class AbstractContainerVector implements ValueVector {
*/
@Override
public void close() {
- for (ValueVector vector:this) {
+ for (ValueVector vector:(Iterable<ValueVector>)this) {
vector.close();
}
}
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapVector.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapVector.java
index 54ffeb2..4138839 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapVector.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapVector.java
@@ -41,6 +41,7 @@ import org.apache.drill.exec.record.MaterializedField;
import org.apache.drill.exec.record.TransferPair;
import org.apache.drill.exec.util.CallBack;
import org.apache.drill.exec.util.JsonStringHashMap;
+import org.apache.drill.exec.vector.BaseValueVector;
import org.apache.drill.exec.vector.ValueVector;
import org.apache.drill.exec.vector.complex.RepeatedMapVector.MapSingleCopier;
import org.apache.drill.exec.vector.complex.impl.SingleMapReaderImpl;
@@ -66,6 +67,12 @@ public class MapVector extends AbstractMapVector {
super(field, allocator, callBack);
}
+ @Override
+ public FieldReader getReader() {
+ //return new SingleMapReaderImpl(MapVector.this);
+ return reader;
+ }
+
transient private MapTransferPair ephPair;
transient private MapSingleCopier ephPair2;
@@ -94,7 +101,7 @@ public class MapVector extends AbstractMapVector {
@Override
public void setInitialCapacity(int numRecords) {
- for (ValueVector v : this) {
+ for (ValueVector v : (ValueVector<?,?,?>)this) {
v.setInitialCapacity(numRecords);
}
}
@@ -105,7 +112,7 @@ public class MapVector extends AbstractMapVector {
return 0;
}
long buffer = 0;
- for (ValueVector v : this) {
+ for (ValueVector v : (Iterable<ValueVector>)this) {
buffer += v.getBufferSize();
}
@@ -280,7 +287,7 @@ public class MapVector extends AbstractMapVector {
return mutator;
}
- public class Accessor implements ValueVector.Accessor{
+ public class Accessor extends BaseValueVector.BaseAccessor {
@Override
public Object getObject(int index) {
@@ -304,23 +311,13 @@ public class MapVector extends AbstractMapVector {
return valueCount;
}
- @Override
- public boolean isNull(int index) {
- return false;
- }
-
- @Override
- public void reset() {
- }
+ }
- @Override
- public FieldReader getReader() {
- //return new SingleMapReaderImpl(MapVector.this);
- return reader;
- }
+ public ValueVector getVectorById(int id) {
+ return getChildByOrdinal(id);
}
- public class Mutator implements ValueVector.Mutator{
+ public class Mutator extends BaseValueVector.BaseMutator {
@Override
public void setValueCount(int valueCount) {
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java
index cc68181..c0f5299 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java
@@ -82,6 +82,11 @@ public class RepeatedListVector extends AbstractContainerVector implements Repea
}
@Override
+ public RepeatedListReaderImpl getReader() {
+ return reader;
+ }
+
+ @Override
public int size() {
return vector != null ? 1 : 0;
}
@@ -217,7 +222,7 @@ public class RepeatedListVector extends AbstractContainerVector implements Repea
if (offset >= h.end) {
holder.reader = NullReader.INSTANCE;
} else {
- FieldReader r = vector.getAccessor().getReader();
+ FieldReader r = vector.getReader();
r.setPosition(offset);
holder.reader = r;
}
@@ -229,15 +234,6 @@ public class RepeatedListVector extends AbstractContainerVector implements Repea
}
@Override
- public void reset() {
- }
-
- @Override
- public FieldReader getReader() {
- return reader;
- }
-
- @Override
public int getGroupCount() {
final int valueCount = offsets.getAccessor().getValueCount();
return valueCount == 0 ? 0 : valueCount - 1;
@@ -416,9 +412,8 @@ public class RepeatedListVector extends AbstractContainerVector implements Repea
@Override
public void allocateNew(int parentValueCount, int childValueCount) {
clear();
- offsets.allocateNew(parentValueCount+1);
+ offsets.allocateNew(parentValueCount + 1);
mutator.reset();
- accessor.reset();
}
@Override
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java
index 5afc889..e5d48dd 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java
@@ -73,12 +73,17 @@ public class RepeatedMapVector extends AbstractMapVector implements RepeatedFixe
public void setInitialCapacity(int numRecords) {
offsets.setInitialCapacity(numRecords + 1);
- for(ValueVector v : this) {
+ for(ValueVector v : (ValueVector<?,?,?>)this) {
v.setInitialCapacity(numRecords * DEFAULT_REPEAT_PER_RECORD);
}
}
@Override
+ public RepeatedMapReaderImpl getReader() {
+ return reader;
+ }
+
+ @Override
public void allocateNew(int groupCount, int valueCount) {
clear();
offsets.allocateNew(groupCount+1);
@@ -87,7 +92,6 @@ public class RepeatedMapVector extends AbstractMapVector implements RepeatedFixe
AllocationHelper.allocatePrecomputedChildCount(v, groupCount, 50, valueCount);
}
mutator.reset();
- accessor.reset();
}
public void reAlloc() {
@@ -111,7 +115,7 @@ public class RepeatedMapVector extends AbstractMapVector implements RepeatedFixe
return 0;
}
long buffer = offsets.getBufferSize();
- for (ValueVector v : this) {
+ for (ValueVector v : (Iterable<ValueVector>)this) {
buffer += v.getBufferSize();
}
return (int) buffer;
@@ -506,15 +510,6 @@ public class RepeatedMapVector extends AbstractMapVector implements RepeatedFixe
}
@Override
- public void reset() {
- }
-
- @Override
- public FieldReader getReader() {
- return reader;
- }
-
- @Override
public int getGroupCount() {
final int valueCount = offsets.getAccessor().getValueCount();
return valueCount == 0 ? 0 : valueCount - 1;
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/RepeatedListReaderImpl.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/RepeatedListReaderImpl.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/RepeatedListReaderImpl.java
index 805ba89..3d0a861 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/RepeatedListReaderImpl.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/RepeatedListReaderImpl.java
@@ -121,7 +121,7 @@ public class RepeatedListReaderImpl extends AbstractFieldReader{
@Override
public FieldReader reader() {
if (reader == null) {
- reader = container.getChild(name).getAccessor().getReader();
+ reader = container.getChild(name).getReader();
if (currentOffset == NO_VALUES) {
reader = NullReader.INSTANCE;
} else {
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/RepeatedMapReaderImpl.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/RepeatedMapReaderImpl.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/RepeatedMapReaderImpl.java
index 1cee547..aa98818 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/RepeatedMapReaderImpl.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/RepeatedMapReaderImpl.java
@@ -54,7 +54,7 @@ public class RepeatedMapReaderImpl extends AbstractFieldReader{
if (child == null) {
reader = NullReader.INSTANCE;
} else {
- reader = child.getAccessor().getReader();
+ reader = child.getReader();
}
fields.put(name, reader);
reader.setPosition(currentOffset);
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/SingleListReaderImpl.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/SingleListReaderImpl.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/SingleListReaderImpl.java
index 40fa6d4..60d8c4e 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/SingleListReaderImpl.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/SingleListReaderImpl.java
@@ -64,7 +64,7 @@ public class SingleListReaderImpl extends AbstractFieldReader{
@Override
public FieldReader reader() {
if (reader == null) {
- reader = container.getChild(name).getAccessor().getReader();
+ reader = container.getChild(name).getReader();
setPosition(idx());
}
return reader;
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/SingleMapReaderImpl.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/SingleMapReaderImpl.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/SingleMapReaderImpl.java
index 5c8f688..ec6009e 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/SingleMapReaderImpl.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/SingleMapReaderImpl.java
@@ -55,7 +55,7 @@ public class SingleMapReaderImpl extends AbstractFieldReader{
if(child == null){
reader = NullReader.INSTANCE;
}else{
- reader = child.getAccessor().getReader();
+ reader = child.getReader();
}
fields.put(name, reader);
reader.setPosition(idx());
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/test/java/org/apache/drill/exec/expr/ExpressionTest.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/expr/ExpressionTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/expr/ExpressionTest.java
index 2311cfd..dd14106 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/expr/ExpressionTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/expr/ExpressionTest.java
@@ -40,6 +40,8 @@ import org.apache.drill.common.types.TypeProtos.MinorType;
import org.apache.drill.common.types.Types;
import org.apache.drill.exec.ExecTest;
import org.apache.drill.exec.expr.fn.FunctionImplementationRegistry;
+import org.apache.drill.exec.memory.BufferAllocator;
+import org.apache.drill.exec.memory.TopLevelAllocator;
import org.apache.drill.exec.physical.impl.project.Projector;
import org.apache.drill.exec.record.RecordBatch;
import org.apache.drill.exec.record.TypedFieldId;
@@ -71,7 +73,7 @@ public class ExpressionTest extends ExecTest {
batch.getValueAccessorById(IntVector.class, tfid.getFieldIds());
result = wrapper;
wrapper.getValueVector();
- result = new IntVector(null, null);
+ result = new IntVector(null, new TopLevelAllocator(0));
}
};
http://git-wip-us.apache.org/repos/asf/drill/blob/1b0c52f9/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestRepeated.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestRepeated.java b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestRepeated.java
index feaef4d..098c7de 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestRepeated.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestRepeated.java
@@ -248,7 +248,7 @@ public class TestRepeated {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
JsonWriter jsonWriter = new JsonWriter(stream, true);
- FieldReader reader = v.getChild("col", MapVector.class).getAccessor().getReader();
+ FieldReader reader = v.getChild("col", MapVector.class).getReader();
reader.setPosition(0);
jsonWriter.write(reader);
reader.setPosition(1);