diff --git a/.travis.yml b/.travis.yml index fce509b1866ef126f7089c997f643c761d278e94..d3adb24d2e7c176b835c9299eda50d48eab09842 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,3 +7,4 @@ before_script: - echo "MAVEN_OPTS='-Xmx1024m -XX:MaxPermSize=256m'" > ~/.mavenrc after_success: - mvn clean cobertura:cobertura coveralls:report +dist: precise diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/statement/update/AbstractUpdateParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/statement/update/AbstractUpdateParser.java index efe23a7683960968c3551379b02241d57dfacd3f..5a56d962a9a1a1d33040aabf093e7e5971a2bd0d 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/statement/update/AbstractUpdateParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/statement/update/AbstractUpdateParser.java @@ -68,20 +68,28 @@ public abstract class AbstractUpdateParser implements SQLStatementParser { } private void parseSetItem() { + parseSetColumn(); + sqlParser.skipIfEqual(Symbol.EQ, Symbol.COLON_EQ); + parseSetValue(); + } + + private void parseSetColumn() { if (sqlParser.equalAny(Symbol.LEFT_PAREN)) { sqlParser.skipParentheses(); - } else { - int beginPosition = sqlParser.getLexer().getCurrentToken().getEndPosition(); - String literals = sqlParser.getLexer().getCurrentToken().getLiterals(); - sqlParser.getLexer().nextToken(); - if (sqlParser.skipIfEqual(Symbol.DOT)) { - if (updateStatement.getTables().getSingleTableName().equalsIgnoreCase(SQLUtil.getExactlyValue(literals))) { - updateStatement.getSqlTokens().add(new TableToken(beginPosition - literals.length(), literals)); - } - sqlParser.getLexer().nextToken(); + return; + } + int beginPosition = sqlParser.getLexer().getCurrentToken().getEndPosition(); + String literals = sqlParser.getLexer().getCurrentToken().getLiterals(); + sqlParser.getLexer().nextToken(); + if (sqlParser.skipIfEqual(Symbol.DOT)) { + if (updateStatement.getTables().getSingleTableName().equalsIgnoreCase(SQLUtil.getExactlyValue(literals))) { + updateStatement.getSqlTokens().add(new TableToken(beginPosition - literals.length(), literals)); } + sqlParser.getLexer().nextToken(); } - sqlParser.skipIfEqual(Symbol.EQ, Symbol.COLON_EQ); + } + + private void parseSetValue() { sqlParser.parseExpression(updateStatement); parametersIndex = sqlParser.getParametersIndex(); }