Merge remote-tracking branch 'upstream/master'

This commit is contained in:
高铁
2016-06-25 12:14:56 +08:00
3 changed files with 37 additions and 2 deletions
@@ -15,6 +15,9 @@
*/
package com.alibaba.druid.sql.parser;
import com.alibaba.druid.util.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
import static com.alibaba.druid.sql.parser.CharTypes.isFirstIdentifierChar;
import static com.alibaba.druid.sql.parser.CharTypes.isIdentifierChar;
import static com.alibaba.druid.sql.parser.CharTypes.isWhitespace;
@@ -1147,7 +1150,11 @@ public class Lexer {
}
public BigDecimal decimalValue() {
return new BigDecimal(subString(mark, bufPos).toCharArray());
String value = subString(mark, bufPos);
if (!NumberUtils.isNumber(value)){
throw new ParserException(value+" is not a number!");
}
return new BigDecimal(value.toCharArray());
}
public static interface CommentHandler {
@@ -95,7 +95,7 @@ public class StringUtils {
return a.equalsIgnoreCase(b);
}
public static boolean isEmpty(String value) {
public static boolean isEmpty(CharSequence value) {
if (value == null || value.length() == 0) {
return true;
}
@@ -0,0 +1,28 @@
package com.alibaba.druid.mysql;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.parser.SQLParserUtils;
import com.alibaba.druid.sql.parser.SQLStatementParser;
import junit.framework.TestCase;
import java.util.List;
/**
* Created by tianzhen.wtz on 2016/6/7.
* 类说明:
*/
public class MysqlLimitTest extends TestCase{
public void testLimit(){
String sql = "select * from aaa limit 20exx";
SQLStatementParser statementParser = SQLParserUtils.createSQLStatementParser(sql, "mysql");
try {
List<SQLStatement> sqlStatements = statementParser.parseStatementList();
} catch (Exception e) {
assertTrue(e.getMessage().contains("is not a number!"));
}
}
}