public void generateSerializeFields() {
        serializeFields = new PersistenceColumns();
        for (SourceColumn sourceColumn : fieldsFromSource) {
            String type = sourceColumn.getType().getSimpleName();
            switch (type) {
                case "int":
                    serializeFields.addIntField(sourceColumn.getFieldName());
                    break;
                case "double":
                    serializeFields.addDoubleField(sourceColumn.getFieldName());
                    break;
                case "String":
                    serializeFields.addStringField(sourceColumn.getFieldName());
                    break;
                case "long":
                    serializeFields.addLongField(sourceColumn.getFieldName());
                    break;
                default:
                    throw new IllegalStateException(
                        "Unexpected field type [" + type + "] of source sourceColumn [" + sourceColumn
                            .getFieldName() + "]");
            }
        }

        for (DataColumn column : persistentFields) {
            final Class<?> columnType = column.getType();

            if (columnType.equals(int.class)) {
                serializeFields.addIntField(column.getFieldName());
            } else if (columnType.equals(double.class)) {
                serializeFields.addDoubleField(column.getFieldName());
            } else if (columnType.equals(String.class)) {
                serializeFields.addStringField(column.getFieldName());
            } else if (columnType.equals(long.class)) {
                serializeFields.addLongField(column.getFieldName());
            } else if (StorageDataComplexObject.class.isAssignableFrom(columnType)) {
                serializeFields.addObjectField(column.getFieldName(), columnType.getName());
            } else {
                throw new IllegalStateException(
                    "Unexpected field type [" + columnType.getSimpleName() + "] of persistence column [" + column
                        .getFieldName() + "]");
            }
        }
    }
Fields generated by {@link #fieldsFromSource} and {@link #persistentFields}. These fields are used in final
persistence.
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/AnalysisResult.java