in presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java [474:505]
public long getLong(int field) {
checkFieldType(field, long.class);
Object record = getRecord(field);
Type type = getType(field);
if (type.equals(BIGINT)) {
return ((Number) record).longValue();
} else if (type.equals(DATE)) {
return ((Number) record).longValue();
} else if (type.equals(INTEGER)) {
return ((Number) record).intValue();
} else if (type.equals(REAL)) {
return Float.floatToIntBits(((Number) record).floatValue());
} else if (type.equals(SMALLINT)) {
return ((Number) record).shortValue();
} else if (type.equals(TIME)) {
return ((Number) record).longValue();
} else if (type.equals(TIMESTAMP)) {
if (record instanceof String) {
return Long.parseLong((String) record);
} else {
return ((Number) record).longValue();
}
} else if (type.equals(TIMESTAMP_WITH_TIME_ZONE)) {
return packDateTimeWithZone(((Number) record).longValue(), 0);
} else if (type.equals(TINYINT)) {
return Byte.parseByte(record.toString());
} else {
throw new PrestoException(NOT_SUPPORTED, "Unsupported type " + getType(field));
}
}