Class SchemaUtils
- java.lang.Object
-
- org.apache.flink.cdc.common.utils.SchemaUtils
-
@PublicEvolving public class SchemaUtils extends Object
Utils forSchemato perform the ability of evolution.
-
-
Constructor Summary
Constructors Constructor Description SchemaUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static SchemaapplySchemaChangeEvent(Schema schema, SchemaChangeEvent event)apply SchemaChangeEvent to the old schema and return the schema after changing.static List<RecordData.FieldGetter>createFieldGetters(List<Column> columns)create a list ofRecordData.FieldGetterfrom givenColumnto get Object from RecordData.static List<RecordData.FieldGetter>createFieldGetters(Schema schema)create a list ofRecordData.FieldGetterfrom givenSchemato get Object from RecordData.static List<RecordData.FieldGetter>createFieldGetters(DataType[] dataTypes)create a list ofRecordData.FieldGetterfrom givenColumnto get Object from RecordData.static SchemaensurePkNonNull(Schema schema)static intgetNumericPrecision(DataType dataType)Deprecated.static ColumninferWiderColumn(Column lColumn, Column rColumn)Deprecated.UsegetLeastCommonTypeinSchemaMergingUtilsinstead.static SchemainferWiderSchema(List<Schema> schemas)Deprecated.UsegetCommonSchemainSchemaMergingUtilsinstead.static SchemainferWiderSchema(Schema lSchema, Schema rSchema)Deprecated.UsegetLeastCommonSchemainSchemaMergingUtilsinstead.static DataTypeinferWiderType(DataType lType, DataType rType)Deprecated.UsegetLeastCommonTypeinSchemaMergingUtilsinstead.static booleanisSchemaChangeEventRedundant(Schema currentSchema, SchemaChangeEvent event)This function checks if the given schema change event has been applied already.static List<Object>restoreOriginalData(RecordData recordData, List<RecordData.FieldGetter> fieldGetters)Restore original data fields from RecordData structure.static Optional<SchemaChangeEvent>transformSchemaChangeEvent(boolean hasAsterisk, List<String> referencedColumns, SchemaChangeEvent event)This function determines if the given schema change eventeventshould be sent to downstream based on if the given transform rule has asterisk, and what columns are referenced.
-
-
-
Method Detail
-
createFieldGetters
@CheckReturnValue public static List<RecordData.FieldGetter> createFieldGetters(Schema schema)
create a list ofRecordData.FieldGetterfrom givenSchemato get Object from RecordData.
-
createFieldGetters
@CheckReturnValue public static List<RecordData.FieldGetter> createFieldGetters(List<Column> columns)
create a list ofRecordData.FieldGetterfrom givenColumnto get Object from RecordData.
-
createFieldGetters
@CheckReturnValue public static List<RecordData.FieldGetter> createFieldGetters(DataType[] dataTypes)
create a list ofRecordData.FieldGetterfrom givenColumnto get Object from RecordData.
-
restoreOriginalData
@CheckReturnValue public static List<Object> restoreOriginalData(@Nullable RecordData recordData, List<RecordData.FieldGetter> fieldGetters)
Restore original data fields from RecordData structure.
-
applySchemaChangeEvent
@CheckReturnValue public static Schema applySchemaChangeEvent(Schema schema, SchemaChangeEvent event)
apply SchemaChangeEvent to the old schema and return the schema after changing.
-
transformSchemaChangeEvent
@CheckReturnValue public static Optional<SchemaChangeEvent> transformSchemaChangeEvent(boolean hasAsterisk, List<String> referencedColumns, SchemaChangeEvent event)
This function determines if the given schema change eventeventshould be sent to downstream based on if the given transform rule has asterisk, and what columns are referenced.For example, if
hasAsteriskis false, then allAddColumnEventandDropColumnEventshould be ignored since asterisk-less transform should not emit schema change events that change number of downstream columns.Also,
referencedColumnswill be used to determine if the schema change event affects any referenced columns, since if a column has been projected out of downstream, its corresponding schema change events should not be emitted, either.For the case when
hasAsteriskis true, things will be cleaner since we don't have to filter out any schema change events. All we need to do is to changeAddColumnEvent's inserting position, and replacing `FIRST` / `LAST` with column-relative position indicators. This is necessary since extra calculated columns might be added, and `FIRST` / `LAST` position might differ.
-
isSchemaChangeEventRedundant
public static boolean isSchemaChangeEventRedundant(@Nullable Schema currentSchema, SchemaChangeEvent event)
This function checks if the given schema change event has been applied already. If so, it will be ignored to avoid sending duplicate evolved schema change events to sink metadata applier.
-
ensurePkNonNull
@CheckReturnValue public static Schema ensurePkNonNull(Schema schema)
-
inferWiderSchema
@Deprecated public static Schema inferWiderSchema(List<Schema> schemas)
Deprecated.UsegetCommonSchemainSchemaMergingUtilsinstead.Merge compatible schemas.
-
inferWiderSchema
@Deprecated @VisibleForTesting public static Schema inferWiderSchema(@Nullable Schema lSchema, Schema rSchema)
Deprecated.UsegetLeastCommonSchemainSchemaMergingUtilsinstead.Try to combine two schemas with potential incompatible type.
-
inferWiderColumn
@Deprecated @VisibleForTesting public static Column inferWiderColumn(Column lColumn, Column rColumn)
Deprecated.UsegetLeastCommonTypeinSchemaMergingUtilsinstead.Try to combine two columns with potential incompatible type.
-
inferWiderType
@Deprecated @VisibleForTesting public static DataType inferWiderType(DataType lType, DataType rType)
Deprecated.UsegetLeastCommonTypeinSchemaMergingUtilsinstead.Try to combine given data types to a compatible wider data type.
-
getNumericPrecision
@Deprecated @VisibleForTesting public static int getNumericPrecision(DataType dataType)
Deprecated.
-
-