public static TypeInformation<RowData> decorateRowTypeWithNeededHeadFieldsAndMetadata(
            @Nullable String timeFieldName,
            @Nullable String attributesFieldName,
            RowFormatInfo dataRowFormatInfo,
            List<String> metadataKeys) {
        RowType rowType = (RowType) TableFormatUtils.deriveLogicalType(dataRowFormatInfo);
        return InLongMsgUtils.decorateRowTypeWithNeededHeadFieldsAndMetadata(
                timeFieldName,
                attributesFieldName,
                rowType,
                metadataKeys);
    }
Creates the type information with given field names and data schema.

@param timeFieldName       The name of the time field. Null if the time field is not required.
@param attributesFieldName The name of the attributes field. Null if the attributes field is
                           not required.
@param dataRowFormatInfo   The schema of the data fields.
@param metadataKeys        The metadata keys.
@return The type information
inlong-sort/sort-formats/format-rowdata/format-inlongmsg-rowdata-base/src/main/java/org/apache/inlong/sort/formats/inlongmsg/InLongMsgUtils.java