public static RowFormatInfo getDataFormatInfo(
            DescriptorProperties descriptorProperties) {
        if (descriptorProperties.containsKey(TableFormatConstants.FORMAT_SCHEMA)) {
            return deserializeRowFormatInfo(descriptorProperties);
        } else {
            TableSchema tableSchema =
                    deriveSchema(descriptorProperties.asMap());

            String[] fieldNames = tableSchema.getFieldNames();
            DataType[] fieldTypes = tableSchema.getFieldDataTypes();

            String[] dataFieldNames = new String[fieldNames.length - 2];
            FormatInfo[] dataFieldFormatInfos = new FormatInfo[fieldNames.length - 2];

            for (int i = 0; i < dataFieldNames.length; ++i) {
                dataFieldNames[i] = fieldNames[i + 2];
                dataFieldFormatInfos[i] =
                        TableFormatForRowUtils.deriveFormatInfo(fieldTypes[i + 2].getLogicalType());
            }

            return new RowFormatInfo(dataFieldNames, dataFieldFormatInfos);
        }
    }
A utility class for parsing InLongMsg {@link InLongMsg}.
inlong-sort/sort-formats/format-row/format-inlongmsg-base/src/main/java/org/apache/inlong/sort/formats/inlongmsg/row/InLongMsgUtils.java