Merge pull request #2224 from blueswhisper/master

fix #2222
This commit is contained in:
温绍
2018-02-11 16:18:52 +08:00
committed by GitHub
2 changed files with 35 additions and 2 deletions
@@ -1327,9 +1327,9 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Paramet
}
protected void printInteger(SQLIntegerExpr x, boolean parameterized) {
long val = x.getNumber().longValue();
String val = x.getNumber().toString();
if (val == 1) {
if ("1".equals(val)) {
if (JdbcConstants.ORACLE.equals(dbType)) {
SQLObject parent = x.getParent();
if (parent instanceof SQLBinaryOpExpr) {
@@ -0,0 +1,33 @@
package com.alibaba.druid.bvt.sql;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlOutputVisitor;
import com.alibaba.druid.sql.dialect.postgresql.parser.PGSQLStatementParser;
import com.alibaba.druid.sql.dialect.postgresql.visitor.PGOutputVisitor;
import junit.framework.TestCase;
public class UnsignedBigIntTest extends TestCase {
public void test_mysqlUnsignedBitInt() throws Exception {
String sql = "SELECT a from b where c <> 1 LIMIT 18446744073709551615 OFFSET 0";
MySqlStatementParser parser = new MySqlStatementParser(sql);
SQLStatement sqlStatement = parser.parseStatement();
StringBuilder sb = new StringBuilder();
MySqlOutputVisitor visitor = new MySqlOutputVisitor(sb);
visitor.setPrettyFormat(false);
sqlStatement.accept(visitor);
assertEquals("SELECT a FROM b WHERE c <> 1 LIMIT 0, 18446744073709551615", sb.toString());
}
public void test_postgresqlUnsignedBitInt() {
String sql = "SELECT a from b where c <> 1 LIMIT 18446744073709551615 OFFSET 1";
PGSQLStatementParser parser = new PGSQLStatementParser(sql);
SQLStatement sqlStatement = parser.parseStatement();
StringBuilder sb = new StringBuilder();
PGOutputVisitor visitor = new PGOutputVisitor(sb);
visitor.setPrettyFormat(false);
sqlStatement.accept(visitor);
assertEquals("SELECT a FROM b WHERE c <> 1 LIMIT 18446744073709551615 OFFSET 1", sb.toString());
}
}