in contrib/storage-kudu/src/main/java/org/apache/drill/exec/store/kudu/KuduRecordReader.java [222:330]
private void addRowResult(RowResult result, int rowIndex) throws SchemaChangeException {
if (projectedCols == null) {
initCols(result.getColumnProjection());
}
for (ProjectedColumnInfo pci : projectedCols) {
if (result.isNull(pci.index)) {
continue;
}
switch (pci.kuduColumn.getType()) {
case BINARY: {
ByteBuffer value = result.getBinary(pci.index);
if (pci.kuduColumn.isNullable()) {
((NullableVarBinaryVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, value, 0, value.remaining());
} else {
((VarBinaryVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, value, 0, value.remaining());
}
break;
}
case STRING: {
ByteBuffer value = ByteBuffer.wrap(result.getString(pci.index).getBytes(StandardCharsets.UTF_8));
if (pci.kuduColumn.isNullable()) {
((NullableVarCharVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, value, 0, value.remaining());
} else {
((VarCharVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, value, 0, value.remaining());
}
break;
}
case BOOL:
if (pci.kuduColumn.isNullable()) {
((NullableBitVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getBoolean(pci.index) ? 1 : 0);
} else {
((BitVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getBoolean(pci.index) ? 1 : 0);
}
break;
case DOUBLE:
if (pci.kuduColumn.isNullable()) {
((NullableFloat8Vector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getDouble(pci.index));
} else {
((Float8Vector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getDouble(pci.index));
}
break;
case FLOAT:
if (pci.kuduColumn.isNullable()) {
((NullableFloat4Vector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getFloat(pci.index));
} else {
((Float4Vector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getFloat(pci.index));
}
break;
case INT16:
if (pci.kuduColumn.isNullable()) {
((NullableIntVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getShort(pci.index));
} else {
((IntVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getShort(pci.index));
}
break;
case INT32:
if (pci.kuduColumn.isNullable()) {
((NullableIntVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getInt(pci.index));
} else {
((IntVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getInt(pci.index));
}
break;
case INT8:
if (pci.kuduColumn.isNullable()) {
((NullableIntVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getByte(pci.index));
} else {
((IntVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getByte(pci.index));
}
break;
case INT64:
if (pci.kuduColumn.isNullable()) {
((NullableBigIntVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getLong(pci.index));
} else {
((BigIntVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getLong(pci.index));
}
break;
case UNIXTIME_MICROS:
if (pci.kuduColumn.isNullable()) {
((NullableTimeStampVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getLong(pci.index) / 1000);
} else {
((TimeStampVector.Mutator) pci.vv.getMutator())
.setSafe(rowIndex, result.getLong(pci.index) / 1000);
}
break;
default:
throw new SchemaChangeException("unknown type"); // TODO make better
}
}
}