private static Schema fillUpReadSchema(
      Schema tableSchema, Schema projectedSchema, PrimaryKeySpec primaryKeySpec) {
    Preconditions.checkNotNull(tableSchema, "Table schema can't be null");
    return projectedSchema == null
        ? tableSchema
        : fillUpIdentifierFields(tableSchema, projectedSchema, primaryKeySpec);
  }
If the projected schema is not null, this method will check and fill up the identifierFields of
the tableSchema and the projected schema.

<p>projectedSchema may not include the primary keys, but the {@link NodeFilter} must filter the
record with the value of the primary keys. So the mixed-format reader function schema must
include the primary keys.

@param tableSchema table schema
@param projectedSchema projected schema
@return a new Schema on which includes the identifier fields.
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/read/hybrid/reader/RowDataReaderFunction.java