public static String convertFromAvroType(final Schema schema) { // If schema is a UNION type we need to take the non-nullable schema for schema backwards compatibility final Schema nonNullSchema = GenericRecordUtil.isOptional(schema) ? GenericRecordUtil.getNonNull(schema) : schema; final Schema.Type type = nonNullSchema.getType(); switch (type) { case STRING: return STRING_TYPE; case INT: return INT_TYPE; case LONG: return LONG_TYPE; case FLOAT: return FLOAT_TYPE; case BOOLEAN: return BOOLEAN_TYPE; case DOUBLE: return DOUBLE_TYPE; default: // todo T935985: Support more complex types from Schema.Type throw new JobRuntimeException("Type " + type + " is not supported for conversion. Field(s): " + joiner.join(schema.getFields())); } } }
private static boolean compareFields(final Object field1, final Object field2, @NonNull final Schema schema) { final Schema nonNullSchema; if (isOptional(schema)) { nonNullSchema = getNonNull(schema); } else {
private static Object getDefaultValue(@NonNull final Schema.Field field) { if (GenericRecordUtil.isOptional(field.schema())) { final Iterator<Schema> iter = field.schema().getTypes().iterator(); while (iter.hasNext()) { final Schema next = iter.next(); if (next.getType() != Schema.Type.NULL) { return getDefaultValue(next.getType()); } } // no non-null schema type found, just return null return null; } else { return getDefaultValue(field.schema().getType()); } }
final Schema nonNullSchema = GenericRecordUtil.isOptional(field.schema()) ? GenericRecordUtil.getNonNull(field.schema()) : field.schema();
log.debug("name:{}:value:{}:schema:{}", name, value, schema); final Schema nonOptionalSchema; if (isOptional(schema)) { if (value == null) { return null;
final Schema nonNullSchema = GenericRecordUtil.isOptional(field.schema()) ? GenericRecordUtil.getNonNull(field.schema()) : field.schema();