in presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/JSONSchemaHandler.java [77:107]
public Object extractField(int index, Object currentRecord) {
try {
Map jsonObject = (Map) currentRecord;
PulsarColumnHandle pulsarColumnHandle = columnHandles.get(index);
String[] fieldNames = pulsarColumnHandle.getFieldNames();
Object field = jsonObject.get(fieldNames[0]);
if (field == null) {
return null;
}
for (int i = 1; i < fieldNames.length; i++) {
field = ((Map) field).get(fieldNames[i]);
if (field == null) {
return null;
}
}
Type type = pulsarColumnHandle.getType();
Class<?> javaType = type.getJavaType();
if (javaType == double.class) {
return ((BigDecimal) field).doubleValue();
}
return field;
} catch (Exception ex) {
log.debug(ex, "%s", ex);
}
return null;
}