private static Schema buildStructSchema(final Struct struct) { final SchemaBuilder structSchemaBuilder = SchemaBuilder.struct(); for (final Pair<String, Type> field: struct.getItems()) { structSchemaBuilder.field(field.getLeft(), getTypeSchema(field.getRight())); } return structSchemaBuilder.optional().build(); } }
/** * Returns a {@link SchemaBuilder} for a VariableScaleDecimal. You can use the resulting SchemaBuilder * to set additional schema settings such as required/optional, default value, and documentation. * * @return the schema builder */ public static SchemaBuilder builder() { return SchemaBuilder.struct() .name(LOGICAL_NAME) .version(1) .doc("Variable scaled decimal") .field(SCALE_FIELD, Schema.INT32_SCHEMA) .field(VALUE_FIELD, Schema.BYTES_SCHEMA); }
/** * Returns a {@link SchemaBuilder} for a {@link ZonedTime}. You can use the resulting SchemaBuilder * to set additional schema settings such as required/optional, default value, and documentation. * * @return the schema builder */ public static SchemaBuilder builder() { return SchemaBuilder.string() .name(SCHEMA_NAME) .version(1); }
/** * Returns a {@link SchemaBuilder} for an enumeration. You can use the resulting SchemaBuilder * to set additional schema settings such as required/optional, default value, and documentation. * * @param allowedValues the comma separated list of allowed values; may not be null * @return the schema builder */ public static SchemaBuilder builder(String allowedValues) { return SchemaBuilder.string() .name(LOGICAL_NAME) .parameter(VALUES_FIELD, allowedValues) .version(1); }
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(); }
@Test public void shouldDeserializeConnectMapWithBooleanKey() { shouldDeserializeConnectTypeCorrectly( SchemaBuilder.map(Schema.BOOLEAN_SCHEMA, Schema.INT32_SCHEMA).optional().build(), ImmutableMap.of( true, 10, false, 20), SchemaBuilder.map( Schema.OPTIONAL_STRING_SCHEMA, Schema.OPTIONAL_INT32_SCHEMA ).optional().build(), ImmutableMap.of("true", 10, "false", 20) ); }
@Test(expected = KsqlException.class) public void shouldFailIfStringTimestampTypeAndFormatNotSupplied() { final String field = "my_string_field"; final Schema schema = schemaBuilder .field(field.toUpperCase(), Schema.OPTIONAL_STRING_SCHEMA) .build(); TimestampExtractionPolicyFactory.create(schema, field, null); }
case PgOid.BIT_ARRAY: case PgOid.VARBIT: return column.length() > 1 ? Bits.builder(column.length()) : SchemaBuilder.bool(); case PgOid.INTERVAL: return MicroDuration.builder(); return SchemaBuilder.int64(); case PgOid.JSONB_OID: case PgOid.JSON: return Json.builder(); case PgOid.TSTZRANGE_OID: return SchemaBuilder.string(); case PgOid.UUID: return Uuid.builder(); return numericSchema(column); case PgOid.BYTEA: return SchemaBuilder.bytes(); case PgOid.INT2_ARRAY: return SchemaBuilder.array(SchemaBuilder.OPTIONAL_INT16_SCHEMA); case PgOid.INT4_ARRAY: return SchemaBuilder.array(SchemaBuilder.OPTIONAL_INT32_SCHEMA); case PgOid.INT8_ARRAY: return SchemaBuilder.array(SchemaBuilder.OPTIONAL_INT64_SCHEMA); case PgOid.CHAR_ARRAY: case PgOid.VARCHAR_ARRAY: case PgOid.TEXT_ARRAY: case PgOid.BPCHAR_ARRAY: return SchemaBuilder.array(SchemaBuilder.OPTIONAL_STRING_SCHEMA);
/** * Returns a {@link SchemaBuilder} for a {@link MicroTimestamp}. The resulting schema will describe a field * with the {@value #SCHEMA_NAME} as the {@link Schema#name() name} and {@link SchemaBuilder#int64() INT64} for the literal * type storing the number of <em>microseconds</em> past midnight. * <p> * You can use the resulting SchemaBuilder to set or override additional schema settings such as required/optional, default * value, and documentation. * * @return the schema builder */ public static SchemaBuilder builder() { return SchemaBuilder.int64() .name(SCHEMA_NAME) .version(1); }
@Test public void shouldGetCorrectSqlType() { final String sqlType1 = SchemaUtil.getSqlTypeName(Schema.OPTIONAL_BOOLEAN_SCHEMA); final String sqlType2 = SchemaUtil.getSqlTypeName(Schema.OPTIONAL_INT32_SCHEMA); final String sqlType3 = SchemaUtil.getSqlTypeName(Schema.OPTIONAL_INT64_SCHEMA); final String sqlType4 = SchemaUtil.getSqlTypeName(Schema.OPTIONAL_FLOAT64_SCHEMA); final String sqlType5 = SchemaUtil.getSqlTypeName(Schema.OPTIONAL_STRING_SCHEMA); final String sqlType6 = SchemaUtil.getSqlTypeName(SchemaBuilder.array(Schema.OPTIONAL_FLOAT64_SCHEMA).optional().build()); final String sqlType7 = SchemaUtil.getSqlTypeName(SchemaBuilder.map(Schema.OPTIONAL_STRING_SCHEMA, Schema.OPTIONAL_FLOAT64_SCHEMA).optional().build()); assertThat("Invalid SQL type.", sqlType1, equalTo("BOOLEAN")); assertThat("Invalid SQL type.", sqlType2, equalTo("INT")); assertThat("Invalid SQL type.", sqlType3, equalTo("BIGINT")); assertThat("Invalid SQL type.", sqlType4, equalTo("DOUBLE")); assertThat("Invalid SQL type.", sqlType5, equalTo("VARCHAR")); assertThat("Invalid SQL type.", sqlType6, equalTo("ARRAY<DOUBLE>")); assertThat("Invalid SQL type.", sqlType7, equalTo("MAP<VARCHAR,DOUBLE>")); }
protected List<SchemaAndValueField> schemasAndValuesForArrayTypesWithNullValues() { return Arrays.asList( new SchemaAndValueField("int_array", SchemaBuilder.array(Schema.OPTIONAL_INT32_SCHEMA).optional().build(), null), new SchemaAndValueField("bigint_array", SchemaBuilder.array(Schema.OPTIONAL_INT64_SCHEMA).optional().build(), null), new SchemaAndValueField("text_array", SchemaBuilder.array(Schema.OPTIONAL_STRING_SCHEMA).optional().build(), null), new SchemaAndValueField("char_array", SchemaBuilder.array(Schema.OPTIONAL_STRING_SCHEMA).optional().build(), null), new SchemaAndValueField("varchar_array", SchemaBuilder.array(Schema.OPTIONAL_STRING_SCHEMA).optional().build(), null), new SchemaAndValueField("date_array", SchemaBuilder.array(Date.builder().optional().schema()).optional().build(), null), new SchemaAndValueField("numeric_array", SchemaBuilder.array(Decimal.builder(2).parameter(TestHelper.PRECISION_PARAMETER_KEY, "10").optional().build()).optional().build(), null), new SchemaAndValueField("citext_array", SchemaBuilder.array(Schema.OPTIONAL_STRING_SCHEMA).optional().build(), null) ); }
return SchemaBuilder.bool(); return SchemaBuilder.bytes(); return SchemaBuilder.bytes(); return SchemaBuilder.int8(); case Types.SMALLINT: return SchemaBuilder.int16(); case Types.INTEGER: return SchemaBuilder.int32(); case Types.BIGINT: return SchemaBuilder.int64(); return SchemaBuilder.float32(); case Types.FLOAT: case Types.DOUBLE: return SchemaBuilder.float64(); case Types.NUMERIC: case Types.DECIMAL: case Types.LONGNVARCHAR: case Types.NCLOB: return SchemaBuilder.string();
private void addTestTopicAndSources() { final Schema schema1 = SchemaBuilder.struct().field("S1_F1", Schema.OPTIONAL_BOOLEAN_SCHEMA); ensureSource( DataSource.DataSourceType.KTABLE, "TEST_TABLE", "KAFKA_TOPIC_1", "KSQL_TOPIC_1", schema1); final Schema schema2 = SchemaBuilder.struct().field("S2_F1", Schema.OPTIONAL_STRING_SCHEMA); ensureSource( DataSource.DataSourceType.KSTREAM, "TEST_STREAM", "KAFKA_TOPIC_2", "KSQL_TOPIC_2", schema2); givenTopicExists("orders-topic"); }
/** * Returns a {@link SchemaBuilder} for a Bits. You can use the resulting SchemaBuilder * to set additional schema settings such as required/optional, default value, and documentation. * * @param length maximum the number of bits in the set * @return the schema builder */ public static SchemaBuilder builder(int length) { return SchemaBuilder.bytes() .name(LOGICAL_NAME) .parameter(LENGTH_FIELD, Integer.toString(length)) .version(1); }
/** * Returns a {@link SchemaBuilder} for a {@link Date}. The builder will create a schema that describes a field * with the {@value #SCHEMA_NAME} as the {@link Schema#name() name} and {@link SchemaBuilder#int32() INT32} for the literal * type storing the number of <em>days</em> since January 1, 1970, at 00:00:00Z. * <p> * You can use the resulting SchemaBuilder to set or override additional schema settings such as required/optional, default * value, and documentation. * * @return the schema builder */ public static SchemaBuilder builder() { return SchemaBuilder.int32() .name(SCHEMA_NAME) .version(1); }