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;
}