private byte parseTypeTag()

in asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBRowStore.java [1146:1176]


    private byte parseTypeTag(char[] textChars, int textOffset, int textLength) throws SQLException {
        if (textLength == 0) {
            // empty string
            parsedLength = 0;
            return ADBDatatype.STRING.getTypeTag();
        }
        if (textChars[textOffset] == TEXT_DELIMITER) {
            // any string
            parsedLength = 1;
            return ADBDatatype.STRING.getTypeTag();
        }
        // any type
        int typeTagLength = 2;
        if (textLength < typeTagLength) {
            throw getErrorReporter().errorInProtocol();
        }
        byte parsedTypeTag = getByteFromValidHexChars(textChars[textOffset], textChars[textOffset + 1]);
        if (parsedTypeTag == ADBDatatype.MISSING.getTypeTag() || parsedTypeTag == ADBDatatype.NULL.getTypeTag()) {
            parsedLength = typeTagLength;
            return parsedTypeTag;
        }
        int delimiterLength = 1;
        if (textLength < typeTagLength + delimiterLength) {
            throw getErrorReporter().errorInProtocol();
        }
        if (textChars[textOffset + typeTagLength] != TEXT_DELIMITER) {
            throw getErrorReporter().errorInProtocol();
        }
        parsedLength = typeTagLength + delimiterLength;
        return parsedTypeTag;
    }