improved sql parser.

This commit is contained in:
wenshao
2017-09-14 10:25:29 +08:00
parent 170d5fdf10
commit 77da0001fe
9 changed files with 23 additions and 19 deletions
@@ -428,14 +428,14 @@ public class SQLTransformUtils {
dataType = new SQLDataTypeImpl(SQLDataType.Constants.DECIMAL, 38);
} else if (nameHash == FnvHash.Constants.BINARY_FLOAT) {
dataType = new SQLDataTypeImpl("real");
dataType = new SQLDataTypeImpl(SQLDataType.Constants.REAL);
} else if (nameHash == FnvHash.Constants.BINARY_DOUBLE
|| nameHash == FnvHash.Constants.FLOAT
|| nameHash == FnvHash.Constants.DOUBLE
|| nameHash == FnvHash.Constants.REAL
|| nameHash == FnvHash.Constants.DOUBLE_PRECISION) {
dataType = new SQLDataTypeImpl("double precision");
dataType = new SQLDataTypeImpl(SQLDataType.Constants.DOUBLE_PRECISION);
} else if (nameHash == FnvHash.Constants.NUMBER) {
if (argumentns.size() == 0) {
@@ -579,9 +579,9 @@ public class SQLTransformUtils {
} else if (nameHash == FnvHash.Constants.BFILE) {
dataType = new SQLCharacterDataType(SQLDataType.Constants.VARCHAR, 255);
} else if (nameHash == FnvHash.Constants.DATE
|| nameHash == FnvHash.Constants.DATETIME
} else if (nameHash == FnvHash.Constants.DATE) {
dataType = new SQLDataTypeImpl(SQLDataType.Constants.TIMESTAMP, 0);
} else if (nameHash == FnvHash.Constants.DATETIME
|| nameHash == FnvHash.Constants.TIMESTAMP) {
int len = -1;
if (argumentns.size() > 0) {
@@ -46,6 +46,9 @@ public interface SQLDataType extends SQLObject {
String DECIMAL = "DECIMAL";
String NUMBER = "NUMBER";
String REAL = "REAL";
String DOUBLE_PRECISION = "DOUBLE PRECISION";
String TINYINT = "TINYINT";
String SMALLINT = "SMALLINT";
String INT = "INT";
@@ -1,4 +1,4 @@
package com.alibaba.druid.bvt.sql.transform;
package com.alibaba.druid.bvt.sql.transform.datatype;
import com.alibaba.druid.sql.SQLTransformUtils;
import com.alibaba.druid.sql.ast.SQLDataType;
@@ -1,4 +1,4 @@
package com.alibaba.druid.bvt.sql.transform;
package com.alibaba.druid.bvt.sql.transform.datatype.oracle2pg;
import com.alibaba.druid.sql.SQLTransformUtils;
import com.alibaba.druid.sql.ast.SQLDataType;
@@ -1,4 +1,4 @@
package com.alibaba.druid.bvt.sql.transform;
package com.alibaba.druid.bvt.sql.transform.datatype.oracle2pg;
import com.alibaba.druid.sql.SQLTransformUtils;
import com.alibaba.druid.sql.ast.SQLDataType;
@@ -25,7 +25,7 @@ public class Oracle2PG_DataTypeTest_datetime extends TestCase {
String sql = "date";
SQLDataType dataType = SQLParserUtils.createExprParser(sql, JdbcConstants.ORACLE).parseDataType();
SQLDataType pgDataType = SQLTransformUtils.transformOracleToPostgresql(dataType);
assertEquals("TIMESTAMP", pgDataType.toString());
assertEquals("TIMESTAMP(0)", pgDataType.toString());
}
public void test_oracle2pg_datetime() throws Exception {
@@ -1,4 +1,4 @@
package com.alibaba.druid.bvt.sql.transform;
package com.alibaba.druid.bvt.sql.transform.datatype.oracle2pg;
import com.alibaba.druid.sql.SQLTransformUtils;
import com.alibaba.druid.sql.ast.SQLDataType;
@@ -11,42 +11,42 @@ public class Oracle2PG_DataTypeTest_double extends TestCase {
String sql = "float";
SQLDataType dataType = SQLParserUtils.createExprParser(sql, JdbcConstants.ORACLE).parseDataType();
SQLDataType pgDataType = SQLTransformUtils.transformOracleToPostgresql(dataType);
assertEquals("double precision", pgDataType.toString());
assertEquals("DOUBLE PRECISION", pgDataType.toString());
}
public void test_oracle2pg_double() throws Exception {
String sql = "double";
SQLDataType dataType = SQLParserUtils.createExprParser(sql, JdbcConstants.ORACLE).parseDataType();
SQLDataType pgDataType = SQLTransformUtils.transformOracleToPostgresql(dataType);
assertEquals("double precision", pgDataType.toString());
assertEquals("DOUBLE PRECISION", pgDataType.toString());
}
public void test_oracle2pg_real() throws Exception {
String sql = "real";
SQLDataType dataType = SQLParserUtils.createExprParser(sql, JdbcConstants.ORACLE).parseDataType();
SQLDataType pgDataType = SQLTransformUtils.transformOracleToPostgresql(dataType);
assertEquals("double precision", pgDataType.toString());
assertEquals("DOUBLE PRECISION", pgDataType.toString());
}
public void test_oracle2pg_binary_float() throws Exception {
String sql = "BINARY_FLOAT";
SQLDataType dataType = SQLParserUtils.createExprParser(sql, JdbcConstants.ORACLE).parseDataType();
SQLDataType pgDataType = SQLTransformUtils.transformOracleToPostgresql(dataType);
assertEquals("real", pgDataType.toString());
assertEquals("REAL", pgDataType.toString());
}
public void test_oracle2pg_binary_double() throws Exception {
String sql = "BINARY_DOUBLE";
SQLDataType dataType = SQLParserUtils.createExprParser(sql, JdbcConstants.ORACLE).parseDataType();
SQLDataType pgDataType = SQLTransformUtils.transformOracleToPostgresql(dataType);
assertEquals("double precision", pgDataType.toString());
assertEquals("DOUBLE PRECISION", pgDataType.toString());
}
public void test_oracle2pg_binary_double_precision() throws Exception {
String sql = "double precision";
SQLDataType dataType = SQLParserUtils.createExprParser(sql, JdbcConstants.ORACLE).parseDataType();
SQLDataType pgDataType = SQLTransformUtils.transformOracleToPostgresql(dataType);
assertEquals("double precision", pgDataType.toString());
assertEquals("DOUBLE PRECISION", pgDataType.toString());
}
}
@@ -1,4 +1,4 @@
package com.alibaba.druid.bvt.sql.transform;
package com.alibaba.druid.bvt.sql.transform.datatype.oracle2pg;
import com.alibaba.druid.sql.SQLTransformUtils;
import com.alibaba.druid.sql.ast.SQLDataType;
@@ -27,5 +27,6 @@ public class Oracle2PG_DataTypeTest_int extends TestCase {
SQLDataType pgDataType = SQLTransformUtils.transformOracleToPostgresql(dataType);
assertEquals("SMALLINT", pgDataType.toString());
}
}
@@ -1,4 +1,4 @@
package com.alibaba.druid.bvt.sql.transform;
package com.alibaba.druid.bvt.sql.transform.datatype.oracle2pg;
import com.alibaba.druid.sql.SQLTransformUtils;
import com.alibaba.druid.sql.ast.SQLDataType;
@@ -1,4 +1,4 @@
package com.alibaba.druid.bvt.sql.transform;
package com.alibaba.druid.bvt.sql.transform.datatype.oracle2pg;
import com.alibaba.druid.sql.SQLTransformUtils;
import com.alibaba.druid.sql.ast.SQLDataType;