/** * Rename field names to be consistent with the internal column names. */ public static Schema getAvroSerdeKsqlSchema(final Schema schema) { final SchemaBuilder schemaBuilder = SchemaBuilder.struct(); for (final Field field : schema.fields()) { schemaBuilder.field(field.name().replace(".", "_"), field.schema()); } return schemaBuilder.build(); }
private Schema toKsqlArraySchema(final Schema schema) { return SchemaBuilder.array( toKsqlFieldSchema(schema.valueSchema()) ).optional().build(); }
private Object maybeConvertLogicalType(final Schema connectSchema, final Object connectValue) { if (connectSchema.name() == null) { return connectValue; } switch (connectSchema.name()) { case Date.LOGICAL_NAME: return Date.fromLogical(connectSchema, (java.util.Date) connectValue); case Time.LOGICAL_NAME: return Time.fromLogical(connectSchema, (java.util.Date) connectValue); case Timestamp.LOGICAL_NAME: return Timestamp.fromLogical(connectSchema, (java.util.Date) connectValue); default: return connectValue; } }
public static boolean areEqualSchemas(final Schema schema1, final Schema schema2) { if (schema1.fields().size() != schema2.fields().size()) { return false; } for (int i = 0; i < schema1.fields().size(); i++) { if (!schema1.fields().get(i).equals(schema2.fields().get(i))) { return false; } } return true; }
public static Schema addImplicitRowTimeRowKeyToSchema(final Schema schema) { final SchemaBuilder schemaBuilder = SchemaBuilder.struct(); schemaBuilder.field(SchemaUtil.ROWTIME_NAME, Schema.OPTIONAL_INT64_SCHEMA); schemaBuilder.field(SchemaUtil.ROWKEY_NAME, Schema.OPTIONAL_STRING_SCHEMA); for (final Field field : schema.fields()) { if (!field.name().equals(SchemaUtil.ROWKEY_NAME) && !field.name().equals(SchemaUtil.ROWTIME_NAME)) { schemaBuilder.field(field.name(), field.schema()); } } return schemaBuilder.build(); }
/** * Remove the alias when reading/writing from outside */ public static Schema getSchemaWithNoAlias(final Schema schema) { final SchemaBuilder schemaBuilder = SchemaBuilder.struct(); for (final Field field : schema.fields()) { final String name = getFieldNameWithNoAlias(field); schemaBuilder.field(name, field.schema()); } return schemaBuilder.build(); }
private void validateType(final String pathStr, final Schema schema, final Schema connectSchema, final Schema.Type[] validTypes) { // don't use stream here for (final Schema.Type type : validTypes) { if (connectSchema.type().equals(type)) { return; } } throwTypeMismatchException(pathStr, schema, connectSchema); }
public static Schema removeImplicitRowTimeRowKeyFromSchema(final Schema schema) { final SchemaBuilder schemaBuilder = SchemaBuilder.struct(); for (final Field field : schema.fields()) { String fieldName = field.name(); fieldName = fieldName.substring(fieldName.indexOf('.') + 1); if (!fieldName.equalsIgnoreCase(SchemaUtil.ROWTIME_NAME) && !fieldName.equalsIgnoreCase(SchemaUtil.ROWKEY_NAME)) { schemaBuilder.field(fieldName, field.schema()); } } return schemaBuilder.build(); }