public static Schema addFieldsNotInMixedFormat(Schema schema, RowType rowType) {
    Types.NestedField[] nestedFields = new Types.NestedField[rowType.getFieldCount()];

    for (int i = 0; i < nestedFields.length; i++) {
      RowType.RowField field = rowType.getFields().get(i);
      Types.NestedField nestedField;
      if ((nestedField = schema.findField(field.getName())) != null) {
        nestedFields[i] = nestedField;
      } else {
        // for now, there is only one case that virtual watermark exist in RowData, but not in
        // mixed-format table schema.
        nestedFields[i] =
            Types.NestedField.optional(-1, field.getName(), Types.TimestampType.withoutZone());
      }
    }
    return new Schema(nestedFields);
  }
If using mixed-format table as build table, there will be an additional implicit field, valuing
process time.

@param schema The physical schema in mixed-format table.
@param rowType Flink RowData type.
@return the mixed-format Schema with additional implicit field.
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/shuffle/ShuffleHelper.java