in HSQL/src/org/hsqldb1/Parser.java [2380:2484]
private void read() throws HsqlException {
sToken = tokenizer.getString();
wasQuoted = tokenizer.wasQuotedIdentifier();
if (tokenizer.wasValue()) {
iToken = Expression.VALUE;
oData = tokenizer.getAsValue();
iType = tokenizer.getType();
} else if (tokenizer.wasSimpleName()) {
iToken = Expression.COLUMN;
sTable = null;
} else if (tokenizer.wasLongName()) {
sSchema = tokenizer.getLongNamePre();
sTable = tokenizer.getLongNameFirst();
if (sToken.equals(Token.T_MULTIPLY)) {
iToken = Expression.MULTIPLY;
} else {
iToken = Expression.COLUMN;
}
} else if (tokenizer.wasParameter()) {
iToken = Expression.PARAM;
} else if (sToken.length() == 0) {
iToken = Expression.END;
} else {
iToken = tokenSet.get(sToken, -1);
if (iToken == -1) {
iToken = Expression.END;
}
switch (iToken) {
case Expression.COMMA :
case Expression.EQUAL :
case Expression.NOT_EQUAL :
case Expression.SMALLER :
case Expression.BIGGER :
case Expression.SMALLER_EQUAL :
case Expression.BIGGER_EQUAL :
case Expression.AND :
case Expression.OR :
case Expression.NOT :
case Expression.ALL :
case Expression.ANY :
case Expression.IN :
case Expression.EXISTS :
case Expression.BETWEEN :
case Expression.PLUS :
case Expression.NEGATE :
case Expression.DIVIDE :
case Expression.CONCAT :
case Expression.OPEN :
case Expression.CLOSE :
case Expression.SELECT :
case Expression.LIKE :
case Expression.COUNT :
case Expression.SUM :
case Expression.MIN :
case Expression.MAX :
case Expression.AVG :
case Expression.EVERY :
case Expression.SOME :
case Expression.STDDEV_POP :
case Expression.STDDEV_SAMP :
case Expression.VAR_POP :
case Expression.VAR_SAMP :
case Expression.CONVERT :
case Expression.CAST :
case Expression.SEQUENCE :
case Expression.IFNULL :
case Expression.COALESCE :
case Expression.NULLIF :
case Expression.CASE :
case Expression.WHEN :
case Expression.THEN :
case Expression.ELSE :
case Expression.ENDWHEN :
case Expression.CASEWHEN :
case Expression.EXTRACT :
case Expression.POSITION :
case Expression.SUBSTRING :
case Expression.FROM :
case Expression.FOR :
case Expression.END :
case Expression.PARAM :
case Expression.TRIM :
case Expression.LEADING :
case Expression.TRAILING :
case Expression.BOTH :
case Expression.AS :
case Expression.IS :
case Expression.DISTINCT :
break; // nothing else required, iToken initialized properly
case Expression.MULTIPLY :
sTable = null; // in case of ASTERIX
break;
default :
iToken = Expression.END;
}
}
}