use of com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUpdateStatement in project druid by alibaba.
the class MySqlSelectParser method parseUpdateStatment.
protected MySqlUpdateStatement parseUpdateStatment() {
MySqlUpdateStatement update = new MySqlUpdateStatement();
lexer.nextToken();
if (identifierEquals("LOW_PRIORITY")) {
lexer.nextToken();
update.setLowPriority(true);
}
if (identifierEquals("IGNORE")) {
lexer.nextToken();
update.setIgnore(true);
}
if (identifierEquals("COMMIT_ON_SUCCESS")) {
lexer.nextToken();
update.setCommitOnSuccess(true);
}
if (identifierEquals("ROLLBACK_ON_FAIL")) {
lexer.nextToken();
update.setRollBackOnFail(true);
}
if (identifierEquals("QUEUE_ON_PK")) {
lexer.nextToken();
update.setQueryOnPk(true);
}
if (identifierEquals("TARGET_AFFECT_ROW")) {
lexer.nextToken();
SQLExpr targetAffectRow = this.exprParser.expr();
update.setTargetAffectRow(targetAffectRow);
}
SQLTableSource updateTableSource = this.exprParser.createSelectParser().parseTableSource();
update.setTableSource(updateTableSource);
accept(Token.SET);
for (; ; ) {
SQLUpdateSetItem item = this.exprParser.parseUpdateSetItem();
update.addItem(item);
if (lexer.token() != Token.COMMA) {
break;
}
lexer.nextToken();
}
if (lexer.token() == (Token.WHERE)) {
lexer.nextToken();
update.setWhere(this.exprParser.expr());
}
update.setOrderBy(this.exprParser.parseOrderBy());
update.setLimit(this.exprParser.parseLimit());
return update;
}
Aggregations