private boolean isToken(String token) { boolean result = equalsToken(token, currentToken) && !currentTokenQuoted; if (result) { return true; } addExpected(token); return false; }
private boolean readIf(String token) { if (!currentTokenQuoted && equalsToken(token, currentToken)) { read(); return true; } addExpected(token); return false; }
private Set parseSetBinaryCollation() { Set command = new Set(session, SetTypes.BINARY_COLLATION); String name = readAliasIdentifier(); command.setString(name); if (equalsToken(name, CompareMode.UNSIGNED) || equalsToken(name, CompareMode.SIGNED)) { return command; } throw DbException.getInvalidValueException("BINARY_COLLATION", name); }
private boolean readIfAll(String... tokens) { // save parse location in case we have to fail this test int start = lastParseIndex; for (String token: tokens) { if (!currentTokenQuoted && equalsToken(token, currentToken)) { read(); } else { // read failed - revert parse location to before when called parseIndex = start; read(); return false; } } return true; }
private void read(String expected) { if (currentTokenQuoted || !equalsToken(expected, currentToken)) { addExpected(expected); throw getSyntaxError(); } read(); }
private Schema findSchema(String schemaName) { if (schemaName == null) { return null; } Schema schema = database.findSchema(schemaName); if (schema == null) { if (equalsToken("SESSION", schemaName)) { // for local temporary tables schema = database.getSchema(session.getCurrentSchemaName()); } else if (database.getMode().sysDummy1 && "SYSIBM".equals(schemaName)) { // IBM DB2 and Apache Derby compatibility: SYSIBM.SYSDUMMY1 schema = database.getSchema(session.getCurrentSchemaName()); } } return schema; }
read(); if (equalsToken(".", currentToken)) { if (equalsToken(schemaName, database.getShortName())) { read("."); schemaName = s;
tableAlias = columnName; columnName = readColumnIdentifier(); if (!equalsToken(catalogName, database.getShortName())) { throw DbException.get(ErrorCode.DATABASE_NOT_FOUND_1, catalogName); if (!equalsToken(schema, filter.getTable().getSchema() .getName())) { throw DbException.get(ErrorCode.SCHEMA_NOT_FOUND_1, schema); if (!equalsToken(tableAlias, filter.getTableAlias())) { throw DbException.get(ErrorCode.TABLE_OR_VIEW_NOT_FOUND_1, tableAlias);
schemaName = session.getCurrentSchemaName(); if (list.size() == 4) { if (!equalsToken(database.getShortName(), list.remove(0))) { throw DbException.getSyntaxError(sqlCommand, parseIndex, "database name");
if (readIf("(")) { String databaseName = schema; if (!equalsToken(database.getShortName(), databaseName)) { throw DbException.get(ErrorCode.DATABASE_NOT_FOUND_1, databaseName); } else if (readIf(".")) { String databaseName = schema; if (!equalsToken(database.getShortName(), databaseName)) { throw DbException.get(ErrorCode.DATABASE_NOT_FOUND_1, databaseName);
if (readIf(".")) { r = readTermObjectDot(name); } else if (equalsToken("CASE", name)) { } else if (readIf("(")) { r = readFunction(null, name); } else if (equalsToken("CURRENT_USER", name)) { r = readFunctionWithoutParameters("USER"); } else if (equalsToken("CURRENT_TIMESTAMP", name)) { r = readFunctionWithoutParameters("CURRENT_TIMESTAMP"); } else if (equalsToken("SYSDATE", name)) { r = readFunctionWithoutParameters("CURRENT_TIMESTAMP"); } else if (equalsToken("SYSTIMESTAMP", name)) { r = readFunctionWithoutParameters("CURRENT_TIMESTAMP"); } else if (equalsToken("CURRENT_DATE", name)) { r = readFunctionWithoutParameters("CURRENT_DATE"); } else if (equalsToken("TODAY", name)) { r = readFunctionWithoutParameters("CURRENT_DATE"); } else if (equalsToken("CURRENT_TIME", name)) { r = readFunctionWithoutParameters("CURRENT_TIME"); } else if (equalsToken("SYSTIME", name)) { r = readFunctionWithoutParameters("CURRENT_TIME"); } else if (equalsToken("CURRENT", name)) { if (readIf("TIMESTAMP")) { r = readFunctionWithoutParameters("CURRENT_TIMESTAMP"); } else if (equalsToken("NEXT", name) && readIf("VALUE")) { read("FOR"); Sequence sequence = readSequence();
private Set parseSetCollation() { Set command = new Set(session, SetTypes.COLLATION); String name = readAliasIdentifier(); command.setString(name); if (equalsToken(name, CompareMode.OFF)) { return command; } Collator coll = CompareMode.getCollator(name); if (coll == null) { throw DbException.getInvalidValueException("collation", name); } if (readIf("STRENGTH")) { if (readIf("PRIMARY")) { command.setInt(Collator.PRIMARY); } else if (readIf("SECONDARY")) { command.setInt(Collator.SECONDARY); } else if (readIf("TERTIARY")) { command.setInt(Collator.TERTIARY); } else if (readIf("IDENTICAL")) { command.setInt(Collator.IDENTICAL); } } else { command.setInt(coll.getStrength()); } return command; }
if (equalsToken(tableName, RangeTable.NAME) || equalsToken(tableName, RangeTable.ALIAS)) { Expression min = readExpression(); read(","); } else if (equalsToken("DUAL", tableName)) { table = getDualTable(false); } else if (database.getMode().sysDummy1 && equalsToken("SYSDUMMY1", tableName)) { table = getDualTable(false); } else {
!equalsToken("VARCHAR_CASESENSITIVE", original)) { original = "VARCHAR_IGNORECASE"; dataType = DataType.getTypeByName(original, database.getMode());
boolean distinct = readIf("DISTINCT"); if (equalsToken("GROUP_CONCAT", aggregateName)) { r = new Aggregate(AggregateType.GROUP_CONCAT, readExpression(), currentSelect, distinct); r.setGroupConcatSeparator(readExpression()); } else if (equalsToken("STRING_AGG", aggregateName)) {
boolean ifNotExists = readIfNotExists(); String tableName = readIdentifierWithSchema(); if (temp && globalTemp && equalsToken("SESSION", schemaName)) {
for (Column c : joinCols) { String joinColumnName = c.getName(); if (equalsToken(tableColumnName, joinColumnName)) { join.addNaturalJoinColumn(c); Expression tableExpr = new ExpressionColumn(
if (!readIf("ISO")) { String s = readString(); if (!equalsToken(s, "ISO")) { throw getSyntaxError();
private boolean readIf(String token) { if (!currentTokenQuoted && equalsToken(token, currentToken)) { read(); return true; } addExpected(token); return false; }
private void read(String expected) { if (currentTokenQuoted || !equalsToken(expected, currentToken)) { addExpected(expected); throw getSyntaxError(); } read(); }