Author: shawkins
Date: 2009-07-22 18:30:58 -0400 (Wed, 22 Jul 2009)
New Revision: 1173
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/MMJDBCSQLTypeInfo.java
trunk/common-core/src/test/java/com/metamatrix/common/types/TestDataTypeManager.java
trunk/test-integration/src/test/java/com/metamatrix/server/integration/TestVDBLessExecution.java
Log:
TEIID-736 fixing type mappings
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/MMJDBCSQLTypeInfo.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/MMJDBCSQLTypeInfo.java 2009-07-22
17:08:37 UTC (rev 1172)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/MMJDBCSQLTypeInfo.java 2009-07-22
22:30:58 UTC (rev 1173)
@@ -99,30 +99,25 @@
private static Map<String, String> CLASSNAME_TO_NAME = new HashMap<String,
String>();
static {
- addTypeMapping(STRING, STRING_CLASS, Types.VARCHAR);
- TYPE_TO_NAME_MAP.put(Types.LONGVARCHAR, STRING);
+ addTypeMapping(STRING, STRING_CLASS, Types.VARCHAR, Types.LONGVARCHAR,
Types.CHAR);
+ addTypeMapping(CHAR, CHAR_CLASS, Types.CHAR, false);
addTypeMapping(BOOLEAN, BOOLEAN_CLASS, Types.BIT);
addTypeMapping(TIME, TIME_CLASS, Types.TIME);
addTypeMapping(DATE, DATE_CLASS, Types.DATE);
addTypeMapping(TIMESTAMP, TIMESTAMP_CLASS, Types.TIMESTAMP);
addTypeMapping(INTEGER, INTEGER_CLASS, Types.INTEGER);
addTypeMapping(FLOAT, FLOAT_CLASS, Types.REAL);
- addTypeMapping(DOUBLE, DOUBLE_CLASS, Types.DOUBLE);
- TYPE_TO_NAME_MAP.put(Types.FLOAT, DOUBLE);
- addTypeMapping(BIGDECIMAL, BIGDECIMAL_CLASS, Types.NUMERIC);
- TYPE_TO_NAME_MAP.put(Types.DECIMAL, BIGDECIMAL);
- NAME_TO_CLASSNAME.put(BIGINTEGER, BIGINTEGER_CLASS);
- CLASSNAME_TO_NAME.put(BIGINTEGER_CLASS, BIGINTEGER);
- NAME_TO_TYPE_MAP.put(BIGINTEGER, Types.NUMERIC);
+ addTypeMapping(DOUBLE, DOUBLE_CLASS, Types.DOUBLE, Types.FLOAT);
+ addTypeMapping(BIGDECIMAL, BIGDECIMAL_CLASS, Types.NUMERIC, Types.DECIMAL);
+ addTypeMapping(BIGINTEGER, BIGINTEGER_CLASS, Types.NUMERIC, false);
addTypeMapping(BYTE, BYTE_CLASS, Types.TINYINT);
addTypeMapping(SHORT, SHORT_CLASS, Types.SMALLINT);
addTypeMapping(LONG, LONG_CLASS, Types.BIGINT);
- addTypeMapping(CHAR, CHAR_CLASS, Types.CHAR);
addTypeMapping(OBJECT, OBJECT_CLASS, Types.JAVA_OBJECT);
addTypeMapping(CLOB, CLOB_CLASS, Types.CLOB);
- addTypeMapping(BLOB, BLOB_CLASS, Types.BLOB);
+ addTypeMapping(BLOB, BLOB_CLASS, Types.BLOB, Types.BINARY, Types.VARBINARY,
Types.LONGVARBINARY);
- addTypeMapping(NULL, null, Types.NUMERIC);
+ addTypeMapping(NULL, null, Types.NULL);
//## JDBC4.0-begin ##
addTypeMapping(XML, XML_CLASS, Types.SQLXML);
@@ -137,9 +132,18 @@
## JDBC3.0-JDK1.5-end ##*/
}
- private static void addTypeMapping(String typeName, String javaClass, int sqlType) {
+ private static void addTypeMapping(String typeName, String javaClass, int sqlType, int
... secondaryTypes) {
+ addTypeMapping(typeName, javaClass, sqlType, true);
+ for (int type : secondaryTypes) {
+ TYPE_TO_NAME_MAP.put(type, typeName);
+ }
+ }
+
+ private static void addTypeMapping(String typeName, String javaClass, int sqlType,
boolean preferedType) {
NAME_TO_TYPE_MAP.put(typeName, sqlType);
- TYPE_TO_NAME_MAP.put(sqlType, typeName);
+ if (preferedType) {
+ TYPE_TO_NAME_MAP.put(sqlType, typeName);
+ }
if (javaClass != null) {
NAME_TO_CLASSNAME.put(typeName, javaClass);
CLASSNAME_TO_NAME.put(javaClass, typeName);
Modified:
trunk/common-core/src/test/java/com/metamatrix/common/types/TestDataTypeManager.java
===================================================================
---
trunk/common-core/src/test/java/com/metamatrix/common/types/TestDataTypeManager.java 2009-07-22
17:08:37 UTC (rev 1172)
+++
trunk/common-core/src/test/java/com/metamatrix/common/types/TestDataTypeManager.java 2009-07-22
22:30:58 UTC (rev 1173)
@@ -185,8 +185,12 @@
}
}
-
assertEquals(MMJDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.DefaultDataClasses.TIMESTAMP),
Types.TIMESTAMP);
-
assertEquals(MMJDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.DefaultDataClasses.XML),
Types.SQLXML);
+ assertEquals(Types.TIMESTAMP,
MMJDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.DefaultDataClasses.TIMESTAMP));
+ //## JDBC4.0-begin ##
+ assertEquals(Types.SQLXML,
MMJDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.DefaultDataClasses.XML));
+ //## JDBC4.0-end ##
+ assertEquals(DataTypeManager.DefaultDataTypes.STRING,
MMJDBCSQLTypeInfo.getTypeName(Types.CHAR));
+ assertEquals(Types.CHAR,
MMJDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.DefaultDataClasses.CHAR));
}
public void testRuntimeTypeConversion() throws Exception {
Modified:
trunk/test-integration/src/test/java/com/metamatrix/server/integration/TestVDBLessExecution.java
===================================================================
---
trunk/test-integration/src/test/java/com/metamatrix/server/integration/TestVDBLessExecution.java 2009-07-22
17:08:37 UTC (rev 1172)
+++
trunk/test-integration/src/test/java/com/metamatrix/server/integration/TestVDBLessExecution.java 2009-07-22
22:30:58 UTC (rev 1173)
@@ -52,7 +52,7 @@
@Test public void testIntegrationExecution() {
getConnection(VDB, DQP_PROP_FILE);
executeAndAssertResults("select * from Example, Smalla where notional =
intkey", new String[] { //$NON-NLS-1$
- "TRADEID[string] NOTIONAL[integer] INTKEY[integer] STRINGKEY[string]
INTNUM[integer] STRINGNUM[string] FLOATNUM[float] LONGNUM[long]
DOUBLENUM[double] BYTENUM[short] DATEVALUE[date] TIMEVALUE[time]
TIMESTAMPVALUE[timestamp] BOOLEANVALUE[short] CHARVALUE[char] SHORTVALUE[short]
BIGINTEGERVALUE[long] BIGDECIMALVALUE[bigdecimal] OBJECTVALUE[string]",
//$NON-NLS-1$
+ "TRADEID[string] NOTIONAL[integer] INTKEY[integer] STRINGKEY[string]
INTNUM[integer] STRINGNUM[string] FLOATNUM[float] LONGNUM[long]
DOUBLENUM[double] BYTENUM[short] DATEVALUE[date] TIMEVALUE[time]
TIMESTAMPVALUE[timestamp] BOOLEANVALUE[short] CHARVALUE[string] SHORTVALUE[short]
BIGINTEGERVALUE[long] BIGDECIMALVALUE[bigdecimal] OBJECTVALUE[string]",
//$NON-NLS-1$
"x 1 1 1 -23 null -23.0 -23 -23.0 -127
2000-01-02 01:00:00 2000-01-01 00:00:01.0 1 0 -32767 -23 -23
-23", //$NON-NLS-1$
"y 2 2 2 -22 -22 null -22 -22.0 -126
2000-01-03 02:00:00 2000-01-01 00:00:02.0 0 1 -32766 -22 -22
-22", //$NON-NLS-1$
});
@@ -125,7 +125,7 @@
"null VDBLess Derby.SMALLA TIMEVALUE 92 time 8 null 0
10 1 null null null null 0 10 NO null null null
null NO", //$NON-NLS-1$
"null VDBLess Derby.SMALLA TIMESTAMPVALUE 93 timestamp 29
null 0 10 1 null null null null 0 11 NO null null
null null NO", //$NON-NLS-1$
"null VDBLess Derby.SMALLA BOOLEANVALUE 5 short 5 null
0 10 1 null null null null 0 12 NO null null null
null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA CHARVALUE 1 char 1 null 0
0 1 null null null null 2 13 NO null null null null
NO", //$NON-NLS-1$
+ "null VDBLess Derby.SMALLA CHARVALUE 12 string 4000 null
0 0 1 null null null null 2 13 NO null null null
null NO", //$NON-NLS-1$
"null VDBLess Derby.SMALLA SHORTVALUE 5 short 5 null
0 10 1 null null null null 0 14 NO null null null
null NO", //$NON-NLS-1$
"null VDBLess Derby.SMALLA BIGINTEGERVALUE -5 long 19
null 0 10 1 null null null null 0 15 NO null null
null null NO", //$NON-NLS-1$
"null VDBLess Derby.SMALLA BIGDECIMALVALUE 2 bigdecimal 20
null 0 10 1 null null null null 0 16 NO null null
null null NO", //$NON-NLS-1$