in vector/src/main/java/org/apache/arrow/vector/ipc/JsonFileReader.java [716:848]
private List<ArrowBuf> readIntoBuffer(
BufferAllocator allocator,
BufferType bufferType,
MinorType type,
int count,
List<Integer> variadicBufferIndices)
throws IOException {
ArrowBuf buf;
BufferHelper helper = new BufferHelper();
BufferReader reader;
if (bufferType.equals(VALIDITY)) {
reader = helper.BIT;
} else if (bufferType.equals(OFFSET) || bufferType.equals(SIZE)) {
if (type == MinorType.LARGELIST
|| type == MinorType.LARGEVARCHAR
|| type == MinorType.LARGEVARBINARY
|| type == MinorType.LARGELISTVIEW) {
reader = helper.INT8;
} else {
reader = helper.INT4;
}
} else if (bufferType.equals(TYPE)) {
reader = helper.INT1;
} else if (bufferType.equals(DATA)) {
switch (type) {
case BIT:
reader = helper.BIT;
break;
case TINYINT:
reader = helper.INT1;
break;
case SMALLINT:
reader = helper.INT2;
break;
case INT:
reader = helper.INT4;
break;
case BIGINT:
reader = helper.INT8;
break;
case UINT1:
reader = helper.UINT1;
break;
case UINT2:
reader = helper.UINT2;
break;
case UINT4:
reader = helper.UINT4;
break;
case UINT8:
reader = helper.UINT8;
break;
case FLOAT4:
reader = helper.FLOAT4;
break;
case FLOAT8:
reader = helper.FLOAT8;
break;
case DECIMAL:
reader = helper.DECIMAL;
break;
case DECIMAL256:
reader = helper.DECIMAL256;
break;
case FIXEDSIZEBINARY:
reader = helper.FIXEDSIZEBINARY;
break;
case VARCHAR:
reader = helper.VARCHAR;
break;
case LARGEVARCHAR:
reader = helper.LARGEVARCHAR;
break;
case VARBINARY:
reader = helper.VARBINARY;
break;
case LARGEVARBINARY:
reader = helper.LARGEVARBINARY;
break;
case DATEDAY:
reader = helper.INT4;
break;
case DATEMILLI:
reader = helper.INT8;
break;
case TIMESEC:
case TIMEMILLI:
reader = helper.INT4;
break;
case TIMEMICRO:
case TIMENANO:
reader = helper.INT8;
break;
case TIMESTAMPNANO:
case TIMESTAMPMICRO:
case TIMESTAMPMILLI:
case TIMESTAMPSEC:
case TIMESTAMPNANOTZ:
case TIMESTAMPMICROTZ:
case TIMESTAMPMILLITZ:
case TIMESTAMPSECTZ:
reader = helper.INT8;
break;
case INTERVALYEAR:
reader = helper.INT4;
break;
case INTERVALDAY:
reader = helper.DAY_MILLIS;
break;
case INTERVALMONTHDAYNANO:
reader = helper.MONTH_DAY_NANOS;
break;
case DURATION:
reader = helper.INT8;
break;
default:
throw new UnsupportedOperationException("Cannot read array of type " + type);
}
} else if (bufferType.equals(VIEWS)) {
return Collections.singletonList(
readViewBuffers(allocator, count, variadicBufferIndices, type));
} else if (bufferType.equals(VARIADIC_DATA_BUFFERS)) {
return readVariadicBuffers(allocator, variadicBufferIndices.size());
} else {
throw new InvalidArrowFileException("Unrecognized buffer type " + bufferType);
}
buf = reader.readBuffer(allocator, count);
Preconditions.checkNotNull(buf);
return Collections.singletonList(buf);
}