private DeserializationRuntimeConverter createRowConverter(
            RowType rowType,
            ZoneId serverTimeZone,
            DeserializationRuntimeConverterFactory userDefinedConverterFactory) {
        final DeserializationRuntimeConverter[] fieldConverters =
                rowType.getFields().stream()
                        .map(RowType.RowField::getType)
                        .map(
                                logicType -> createConverter(
                                        logicType,
                                        serverTimeZone,
                                        userDefinedConverterFactory))
                        .toArray(DeserializationRuntimeConverter[]::new);
        final String[] fieldNames = rowType.getFieldNames().toArray(new String[0]);

        if (!migrateAll) {
            return new DeserializationRuntimeConverter() {

                private static final long serialVersionUID = 1L;

                @Override
                public Object convert(Object dbzObj, Schema schema) throws Exception {
                    Struct struct = (Struct) dbzObj;
                    int arity = fieldNames.length;
                    GenericRowData row = new GenericRowData(arity);
                    for (int i = 0; i < arity; i++) {
                        String fieldName = fieldNames[i];
                        Field field = schema.field(fieldName);
                        if (field == null) {
                            row.setField(i, null);
                        } else {
                            Object fieldValue = struct.getWithoutDefault(fieldName);
                            Schema fieldSchema = schema.field(fieldName).schema();
                            Object convertedField =
                                    convertField(fieldConverters[i], fieldValue, fieldSchema);
                            row.setField(i, convertedField);
                        }
                    }
                    return row;
                }
            };
        } else {
            return getAllMigrationConverter();
        }
    }
Creates a runtime converter which assuming input object is not null.
inlong-sort/sort-flink/cdc-base/src/main/java/org/apache/inlong/sort/cdc/base/debezium/table/RowDataDebeziumDeserializeSchema.java