private static DataType deserializeFromRoot()

in fluss-common/src/main/java/com/alibaba/fluss/utils/json/DataTypeJsonSerde.java [210:258]


    private static DataType deserializeFromRoot(JsonNode dataTypeNode) {
        final DataTypeRoot typeRoot =
                DataTypeRoot.valueOf(dataTypeNode.get(FIELD_NAME_TYPE_NAME).asText());
        switch (typeRoot) {
            case BOOLEAN:
                return DataTypes.BOOLEAN();
            case TINYINT:
                return DataTypes.TINYINT();
            case SMALLINT:
                return DataTypes.SMALLINT();
            case INTEGER:
                return DataTypes.INT();
            case BIGINT:
                return DataTypes.BIGINT();
            case FLOAT:
                return DataTypes.FLOAT();
            case DOUBLE:
                return DataTypes.DOUBLE();
            case DATE:
                return DataTypes.DATE();
            case TIME_WITHOUT_TIME_ZONE:
                return DataTypes.TIME(dataTypeNode.get(FIELD_NAME_PRECISION).asInt());
            case STRING:
                return DataTypes.STRING();
            case BYTES:
                return DataTypes.BYTES();
            case BINARY:
                final int binaryLength = dataTypeNode.get(FIELD_NAME_LENGTH).asInt();
                return DataTypes.BINARY(binaryLength);
            case CHAR:
                final int charLength = dataTypeNode.get(FIELD_NAME_LENGTH).asInt();
                return DataTypes.CHAR(charLength);
            case DECIMAL:
                return DataTypes.DECIMAL(
                        dataTypeNode.get(FIELD_NAME_PRECISION).asInt(),
                        dataTypeNode.get(FILED_NAME_SCALE).asInt());
            case TIMESTAMP_WITHOUT_TIME_ZONE:
            case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
                return deserializeTimestamp(typeRoot, dataTypeNode);
            case ARRAY:
                return deserializeCollection(typeRoot, dataTypeNode);
            case MAP:
                return deserializeMap(dataTypeNode);
            case ROW:
                return deserializeRow(dataTypeNode);
            default:
                throw new UnsupportedOperationException("Unsupported type root: " + typeRoot);
        }
    }