public List parseResults()

in tools/query_verification/src/main/java/com/google/bigquery/BigQueryManager.java [282:338]


    public List<Object> parseResults(FieldValueList values, FieldList fields) {
        List<Object> results = new ArrayList<Object>();
        for (int i = 0; i < values.size(); i++) {
            FieldValue value = values.get(i);

            // Identify type of the value
            StandardSQLTypeName type = fields.get(i).getType().getStandardType();

            Object result;
            try {
                switch (type) {
                    case BOOL:
                        result = value.getBooleanValue();
                        break;
                    case FLOAT64:
                        result = BigDecimal.valueOf(value.getDoubleValue()).setScale(QueryVerifier.DECIMAL_PRECISION, RoundingMode.FLOOR);
                        break;
                    case INT64:
                        result = value.getLongValue();
                        break;
                    case NUMERIC:
                        result = value.getNumericValue().setScale(QueryVerifier.DECIMAL_PRECISION, RoundingMode.FLOOR);
                        break;
                    case STRUCT:
                        FieldList subFields = fields.get(i).getSubFields();
                        FieldValueList subValues = value.getRecordValue();
                        result = parseResults(subValues, subFields);
                        break;
                    case DATE:
                        result = new SimpleDateFormat("yyyy-MM-dd").parse(value.getStringValue());
                        break;
                    case DATETIME:
                        result = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSSSS").parse(value.getStringValue());
                        break;
                    case TIME:
                        result = new SimpleDateFormat("hh:mm:ss.SSSSSS").parse(value.getStringValue());
                        break;
                    case TIMESTAMP:
                        result = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSSSSS zzz").parse(value.getStringValue());
                        break;
                    case STRING:
                        result = value.getStringValue();
                        break;
                    default:
                        // Handle unknown/unsupported types as String
                        System.err.println("Warning: Unsupported type: " + type.name());
                        result = value.getStringValue();
                }
            } catch (ParseException e) {
                result = Optional.empty();
            }

            results.add(result);
        }

        return results;
    }