use of org.apache.drill.exec.vector.NullableIntVector in project drill by apache.
the class ParquetGroupScan method populatePruningVector.
public void populatePruningVector(ValueVector v, int index, SchemaPath column, String file) {
String f = Path.getPathWithoutSchemeAndAuthority(new Path(file)).toString();
MinorType type = getTypeForColumn(column).getMinorType();
switch(type) {
case INT:
{
NullableIntVector intVector = (NullableIntVector) v;
Integer value = (Integer) partitionValueMap.get(f).get(column);
intVector.getMutator().setSafe(index, value);
return;
}
case SMALLINT:
{
NullableSmallIntVector smallIntVector = (NullableSmallIntVector) v;
Integer value = (Integer) partitionValueMap.get(f).get(column);
smallIntVector.getMutator().setSafe(index, value.shortValue());
return;
}
case TINYINT:
{
NullableTinyIntVector tinyIntVector = (NullableTinyIntVector) v;
Integer value = (Integer) partitionValueMap.get(f).get(column);
tinyIntVector.getMutator().setSafe(index, value.byteValue());
return;
}
case UINT1:
{
NullableUInt1Vector intVector = (NullableUInt1Vector) v;
Integer value = (Integer) partitionValueMap.get(f).get(column);
intVector.getMutator().setSafe(index, value.byteValue());
return;
}
case UINT2:
{
NullableUInt2Vector intVector = (NullableUInt2Vector) v;
Integer value = (Integer) partitionValueMap.get(f).get(column);
intVector.getMutator().setSafe(index, (char) value.shortValue());
return;
}
case UINT4:
{
NullableUInt4Vector intVector = (NullableUInt4Vector) v;
Integer value = (Integer) partitionValueMap.get(f).get(column);
intVector.getMutator().setSafe(index, value);
return;
}
case BIGINT:
{
NullableBigIntVector bigIntVector = (NullableBigIntVector) v;
Long value = (Long) partitionValueMap.get(f).get(column);
bigIntVector.getMutator().setSafe(index, value);
return;
}
case FLOAT4:
{
NullableFloat4Vector float4Vector = (NullableFloat4Vector) v;
Float value = (Float) partitionValueMap.get(f).get(column);
float4Vector.getMutator().setSafe(index, value);
return;
}
case FLOAT8:
{
NullableFloat8Vector float8Vector = (NullableFloat8Vector) v;
Double value = (Double) partitionValueMap.get(f).get(column);
float8Vector.getMutator().setSafe(index, value);
return;
}
case VARBINARY:
{
NullableVarBinaryVector varBinaryVector = (NullableVarBinaryVector) v;
Object s = partitionValueMap.get(f).get(column);
byte[] bytes;
if (s instanceof Binary) {
bytes = ((Binary) s).getBytes();
} else if (s instanceof String) {
bytes = ((String) s).getBytes();
} else if (s instanceof byte[]) {
bytes = (byte[]) s;
} else {
throw new UnsupportedOperationException("Unable to create column data for type: " + type);
}
varBinaryVector.getMutator().setSafe(index, bytes, 0, bytes.length);
return;
}
case DECIMAL18:
{
NullableDecimal18Vector decimalVector = (NullableDecimal18Vector) v;
Long value = (Long) partitionValueMap.get(f).get(column);
decimalVector.getMutator().setSafe(index, value);
return;
}
case DATE:
{
NullableDateVector dateVector = (NullableDateVector) v;
Integer value = (Integer) partitionValueMap.get(f).get(column);
dateVector.getMutator().setSafe(index, value * (long) DateTimeConstants.MILLIS_PER_DAY);
return;
}
case TIME:
{
NullableTimeVector timeVector = (NullableTimeVector) v;
Integer value = (Integer) partitionValueMap.get(f).get(column);
timeVector.getMutator().setSafe(index, value);
return;
}
case TIMESTAMP:
{
NullableTimeStampVector timeStampVector = (NullableTimeStampVector) v;
Long value = (Long) partitionValueMap.get(f).get(column);
timeStampVector.getMutator().setSafe(index, value);
return;
}
case VARCHAR:
{
NullableVarCharVector varCharVector = (NullableVarCharVector) v;
Object s = partitionValueMap.get(f).get(column);
byte[] bytes;
if (s instanceof String) {
// if the metadata was read from a JSON cache file it maybe a string type
bytes = ((String) s).getBytes();
} else if (s instanceof Binary) {
bytes = ((Binary) s).getBytes();
} else if (s instanceof byte[]) {
bytes = (byte[]) s;
} else {
throw new UnsupportedOperationException("Unable to create column data for type: " + type);
}
varCharVector.getMutator().setSafe(index, bytes, 0, bytes.length);
return;
}
default:
throw new UnsupportedOperationException("Unsupported type: " + type);
}
}
use of org.apache.drill.exec.vector.NullableIntVector in project drill by axbaretto.
the class TestToNullable method testFixedWidth.
@SuppressWarnings("resource")
@Test
public void testFixedWidth() {
MaterializedField intSchema = SchemaBuilder.columnSchema("a", MinorType.INT, DataMode.REQUIRED);
IntVector intVector = new IntVector(intSchema, fixture.allocator());
IntVector.Mutator intMutator = intVector.getMutator();
intVector.allocateNew(100);
for (int i = 0; i < 100; i++) {
intMutator.set(i, i * 10);
}
intMutator.setValueCount(100);
MaterializedField nullableIntSchema = SchemaBuilder.columnSchema("a", MinorType.INT, DataMode.OPTIONAL);
NullableIntVector nullableIntVector = new NullableIntVector(nullableIntSchema, fixture.allocator());
intVector.toNullable(nullableIntVector);
assertEquals(0, intVector.getAccessor().getValueCount());
NullableIntVector.Accessor niAccessor = nullableIntVector.getAccessor();
assertEquals(100, niAccessor.getValueCount());
for (int i = 0; i < 100; i++) {
assertFalse(niAccessor.isNull(i));
assertEquals(i * 10, niAccessor.get(i));
}
nullableIntVector.clear();
// Don't clear the intVector, it should be empty.
// If it is not, the test will fail with a memory leak error.
}
use of org.apache.drill.exec.vector.NullableIntVector in project drill by axbaretto.
the class TestToNullable method testNullable.
@SuppressWarnings("resource")
@Test
public void testNullable() {
MaterializedField nullableIntSchema = SchemaBuilder.columnSchema("a", MinorType.INT, DataMode.OPTIONAL);
NullableIntVector sourceVector = new NullableIntVector(nullableIntSchema, fixture.allocator());
NullableIntVector.Mutator sourceMutator = sourceVector.getMutator();
sourceVector.allocateNew(100);
for (int i = 0; i < 100; i++) {
sourceMutator.set(i, i * 10);
}
sourceMutator.setValueCount(100);
NullableIntVector destVector = new NullableIntVector(nullableIntSchema, fixture.allocator());
sourceVector.toNullable(destVector);
assertEquals(0, sourceVector.getAccessor().getValueCount());
NullableIntVector.Accessor destAccessor = destVector.getAccessor();
assertEquals(100, destAccessor.getValueCount());
for (int i = 0; i < 100; i++) {
assertFalse(destAccessor.isNull(i));
assertEquals(i * 10, destAccessor.get(i));
}
destVector.clear();
// Don't clear the intVector, it should be empty.
// If it is not, the test will fail with a memory leak error.
}
use of org.apache.drill.exec.vector.NullableIntVector in project drill by axbaretto.
the class TestVectorLimits method testNullableFixedVector.
@Test
public void testNullableFixedVector() {
@SuppressWarnings("resource") NullableIntVector vector = new NullableIntVector(makeField(MinorType.INT, DataMode.OPTIONAL), fixture.allocator());
vector.allocateNew();
NullableIntVector.Mutator mutator = vector.getMutator();
for (int i = 0; i < 2 * ValueVector.MAX_ROW_COUNT; i++) {
try {
mutator.setScalar(i, i);
} catch (VectorOverflowException e) {
assertEquals(IntVector.MAX_SCALAR_COUNT, i);
break;
}
}
vector.close();
}
use of org.apache.drill.exec.vector.NullableIntVector in project drill by apache.
the class TestToNullable method testFixedWidth.
@Test
public void testFixedWidth() {
MaterializedField intSchema = SchemaBuilder.columnSchema("a", MinorType.INT, DataMode.REQUIRED);
@SuppressWarnings("resource") IntVector intVector = new IntVector(intSchema, fixture.allocator());
IntVector.Mutator intMutator = intVector.getMutator();
intVector.allocateNew(100);
for (int i = 0; i < 100; i++) {
intMutator.set(i, i * 10);
}
intMutator.setValueCount(100);
MaterializedField nullableIntSchema = SchemaBuilder.columnSchema("a", MinorType.INT, DataMode.OPTIONAL);
NullableIntVector nullableIntVector = new NullableIntVector(nullableIntSchema, fixture.allocator());
intVector.toNullable(nullableIntVector);
assertEquals(0, intVector.getAccessor().getValueCount());
NullableIntVector.Accessor niAccessor = nullableIntVector.getAccessor();
assertEquals(100, niAccessor.getValueCount());
for (int i = 0; i < 100; i++) {
assertFalse(niAccessor.isNull(i));
assertEquals(i * 10, niAccessor.get(i));
}
nullableIntVector.clear();
// Don't clear the intVector, it should be empty.
// If it is not, the test will fail with a memory leak error.
}
Aggregations