in athena-federation-sdk/src/main/java/com/amazonaws/athena/connector/lambda/data/BlockUtils.java [377:435]
public static String fieldToString(FieldReader reader)
{
switch (reader.getMinorType()) {
case DATEDAY:
return String.valueOf(reader.readInteger());
case DATEMILLI:
return String.valueOf(reader.readLocalDateTime());
case FLOAT8:
case FLOAT4:
case UINT4:
case UINT8:
case INT:
case BIGINT:
case VARCHAR:
case BIT:
return String.valueOf(reader.readObject());
case DECIMAL:
return String.valueOf(reader.readBigDecimal());
case SMALLINT:
return String.valueOf(reader.readShort());
case TINYINT:
case UINT1:
return Integer.valueOf(reader.readByte()).toString();
case UINT2:
return Integer.valueOf(reader.readCharacter()).toString();
case VARBINARY:
return bytesToHex(reader.readByteArray());
case STRUCT:
StringBuilder sb = new StringBuilder();
sb.append("{");
for (Field child : reader.getField().getChildren()) {
if (sb.length() > 3) {
sb.append(",");
}
sb.append("[");
sb.append(child.getName());
sb.append(" : ");
sb.append(fieldToString(reader.reader(child.getName())));
sb.append("]");
}
sb.append("}");
return sb.toString();
case LIST:
StringBuilder sbList = new StringBuilder();
sbList.append("{");
while (reader.next()) {
if (sbList.length() > 1) {
sbList.append(",");
}
sbList.append(fieldToString(reader.reader()));
}
sbList.append("}");
return sbList.toString();
default:
Object obj = reader.readObject();
return reader.getMinorType() + " - " + ((obj != null) ? obj.getClass().toString() : "null") +
"[ " + String.valueOf(obj) + " ]";
}
}