Author: shawkins
Date: 2009-09-01 13:58:00 -0400 (Tue, 01 Sep 2009)
New Revision: 1301
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/DataTypeManager.java
trunk/common-core/src/main/java/com/metamatrix/common/types/Transform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/BigDecimalToBigIntegerTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/ClobToStringTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/FloatingNumberToBigIntegerTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToBooleanTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToByteTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToDoubleTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToFloatTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToIntegerTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToLongTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToShortTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/ObjectToAnyTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/SQLXMLToStringTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToBigDecimalTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToBigIntegerTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToBooleanTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToByteTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToCharacterTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToDateTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToDoubleTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToFloatTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToIntegerTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToLongTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToSQLXMLTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToShortTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToTimeTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToTimestampTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/TimestampToDateTransform.java
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/TimestampToTimeTransform.java
trunk/common-core/src/test/java/com/metamatrix/common/types/TestDataTypeManager.java
trunk/documentation/reference/src/main/docbook/en-US/content/datatypes.xml
trunk/engine/src/main/java/com/metamatrix/query/rewriter/QueryRewriter.java
trunk/engine/src/test/java/com/metamatrix/query/function/TestFunctionLibrary.java
trunk/engine/src/test/java/com/metamatrix/query/processor/TestInsertProcessing.java
Log:
TEIID-744 simplifying inNarrowing call to be isExplicit, also correcting int to float
conversion as explicit since it can loose precision
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/DataTypeManager.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/DataTypeManager.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/DataTypeManager.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -33,7 +33,7 @@
import com.metamatrix.core.jdbc.SQLXML;
## JDBC3.0-JDK1.5-end ##*/
import java.sql.Timestamp;
-import java.util.Arrays;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
@@ -162,24 +162,10 @@
/** Base data type names and classes, Type class --> Type name */
private static Map<Class, String> dataTypeClasses = new LinkedHashMap<Class,
String>();
- private static Set<String> DATA_TYPE_NAMES = Collections
- .unmodifiableSet(dataTypeNames.keySet());
+ private static Set<String> DATA_TYPE_NAMES =
Collections.unmodifiableSet(dataTypeNames.keySet());
- private static Set<Class> DATA_TYPE_CLASSES = Collections
- .unmodifiableSet(dataTypeClasses.keySet());
+ private static Set<Class> DATA_TYPE_CLASSES =
Collections.unmodifiableSet(dataTypeClasses.keySet());
- /**
- * Map of a type to the list of types that type may be converted to
- * implicitly
- */
- private static Map<String, List<String>> implicitConversions = new
HashMap<String, List<String>>();
-
- /**
- * Map of a type to the list of types that type may be converted to
- * implicitly OR explicitly
- */
- private static Map<String, List<String>> explicitConversions = new
HashMap<String, List<String>>();
-
private static Map<Class<?>, SourceTransform> sourceConverters = new
HashMap<Class<?>, SourceTransform>();
// Static initializer - loads basic transforms types
@@ -189,12 +175,6 @@
// Load default transforms
loadBasicTransforms();
-
- // Load implicit conversions
- loadImplicitConversions();
-
- // Load allowed conversions
- loadExplicitConversions();
loadSourceConversions();
}
@@ -385,34 +365,32 @@
innerMap.put(targetName, transform);
}
- static void setImplicitConversions(String type, List<String> conversions) {
- implicitConversions.put(type, conversions);
- }
-
public static List<String> getImplicitConversions(String type) {
- return implicitConversions.get(type);
+ Map<String, Transform> innerMap = transforms.get(type);
+ if (innerMap != null) {
+ List<String> result = new ArrayList<String>(innerMap.size());
+ for (Map.Entry<String, Transform> entry : innerMap.entrySet()) {
+ if (!entry.getValue().isExplicit()) {
+ result.add(entry.getKey());
+ }
+ }
+ return result;
+ }
+ return Collections.emptyList();
}
public static boolean isImplicitConversion(String srcType, String tgtType) {
- List<String> conversions = implicitConversions.get(srcType);
- if (conversions != null) {
- return conversions.contains(tgtType);
+ Transform t = getTransform(srcType, tgtType);
+ if (t != null) {
+ return !t.isExplicit();
}
return false;
}
- static void setExplicitConversions(String type, List<String> conversions) {
- explicitConversions.put(type, conversions);
- }
-
- public static List<String> getExplicitConversions(String type) {
- return explicitConversions.get(type);
- }
-
public static boolean isExplicitConversion(String srcType, String tgtType) {
- List<String> conversions = explicitConversions.get(srcType);
- if (conversions != null) {
- return conversions.contains(tgtType);
+ Transform t = getTransform(srcType, tgtType);
+ if (t != null) {
+ return t.isExplicit();
}
return false;
}
@@ -439,44 +417,25 @@
* Load default data types.
*/
static void loadDataTypes() {
- DataTypeManager.addDataType(DefaultDataTypes.BOOLEAN,
- DefaultDataClasses.BOOLEAN);
- DataTypeManager.addDataType(DefaultDataTypes.BYTE,
- DefaultDataClasses.BYTE);
- DataTypeManager.addDataType(DefaultDataTypes.SHORT,
- DefaultDataClasses.SHORT);
- DataTypeManager.addDataType(DefaultDataTypes.CHAR,
- DefaultDataClasses.CHAR);
- DataTypeManager.addDataType(DefaultDataTypes.INTEGER,
- DefaultDataClasses.INTEGER);
- DataTypeManager.addDataType(DefaultDataTypes.LONG,
- DefaultDataClasses.LONG);
- DataTypeManager.addDataType(DefaultDataTypes.BIG_INTEGER,
- DefaultDataClasses.BIG_INTEGER);
- DataTypeManager.addDataType(DefaultDataTypes.FLOAT,
- DefaultDataClasses.FLOAT);
- DataTypeManager.addDataType(DefaultDataTypes.DOUBLE,
- DefaultDataClasses.DOUBLE);
- DataTypeManager.addDataType(DefaultDataTypes.BIG_DECIMAL,
- DefaultDataClasses.BIG_DECIMAL);
- DataTypeManager.addDataType(DefaultDataTypes.DATE,
- DefaultDataClasses.DATE);
- DataTypeManager.addDataType(DefaultDataTypes.TIME,
- DefaultDataClasses.TIME);
- DataTypeManager.addDataType(DefaultDataTypes.TIMESTAMP,
- DefaultDataClasses.TIMESTAMP);
- DataTypeManager.addDataType(DefaultDataTypes.STRING,
- DefaultDataClasses.STRING);
- DataTypeManager.addDataType(DefaultDataTypes.CLOB,
- DefaultDataClasses.CLOB);
- DataTypeManager.addDataType(DefaultDataTypes.XML,
- DefaultDataClasses.XML);
- DataTypeManager.addDataType(DefaultDataTypes.OBJECT,
- DefaultDataClasses.OBJECT);
- DataTypeManager.addDataType(DefaultDataTypes.NULL,
- DefaultDataClasses.NULL);
- DataTypeManager.addDataType(DefaultDataTypes.BLOB,
- DefaultDataClasses.BLOB);
+ DataTypeManager.addDataType(DefaultDataTypes.BOOLEAN, DefaultDataClasses.BOOLEAN);
+ DataTypeManager.addDataType(DefaultDataTypes.BYTE, DefaultDataClasses.BYTE);
+ DataTypeManager.addDataType(DefaultDataTypes.SHORT, DefaultDataClasses.SHORT);
+ DataTypeManager.addDataType(DefaultDataTypes.CHAR, DefaultDataClasses.CHAR);
+ DataTypeManager.addDataType(DefaultDataTypes.INTEGER, DefaultDataClasses.INTEGER);
+ DataTypeManager.addDataType(DefaultDataTypes.LONG, DefaultDataClasses.LONG);
+ DataTypeManager.addDataType(DefaultDataTypes.BIG_INTEGER,
DefaultDataClasses.BIG_INTEGER);
+ DataTypeManager.addDataType(DefaultDataTypes.FLOAT, DefaultDataClasses.FLOAT);
+ DataTypeManager.addDataType(DefaultDataTypes.DOUBLE, DefaultDataClasses.DOUBLE);
+ DataTypeManager.addDataType(DefaultDataTypes.BIG_DECIMAL,
DefaultDataClasses.BIG_DECIMAL);
+ DataTypeManager.addDataType(DefaultDataTypes.DATE, DefaultDataClasses.DATE);
+ DataTypeManager.addDataType(DefaultDataTypes.TIME, DefaultDataClasses.TIME);
+ DataTypeManager.addDataType(DefaultDataTypes.TIMESTAMP, DefaultDataClasses.TIMESTAMP);
+ DataTypeManager.addDataType(DefaultDataTypes.STRING, DefaultDataClasses.STRING);
+ DataTypeManager.addDataType(DefaultDataTypes.CLOB, DefaultDataClasses.CLOB);
+ DataTypeManager.addDataType(DefaultDataTypes.XML, DefaultDataClasses.XML);
+ DataTypeManager.addDataType(DefaultDataTypes.OBJECT, DefaultDataClasses.OBJECT);
+ DataTypeManager.addDataType(DefaultDataTypes.NULL, DefaultDataClasses.NULL);
+ DataTypeManager.addDataType(DefaultDataTypes.BLOB, DefaultDataClasses.BLOB);
}
/**
@@ -484,199 +443,126 @@
* set is always installed but may be overridden.
*/
static void loadBasicTransforms() {
- DataTypeManager
- .addTransform(new
com.metamatrix.common.types.basic.BigDecimalToBigIntegerTransform());
DataTypeManager.addTransform(new NumberToBooleanTransform(BigDecimal.valueOf(0)));
- DataTypeManager.addTransform(new NumberToByteTransform(
- DefaultDataClasses.BIG_DECIMAL));
- DataTypeManager.addTransform(new NumberToDoubleTransform(
- DefaultDataClasses.BIG_DECIMAL, true, false));
- DataTypeManager.addTransform(new NumberToFloatTransform(
- DefaultDataClasses.BIG_DECIMAL, true, false));
- DataTypeManager.addTransform(new NumberToIntegerTransform(
- DefaultDataClasses.BIG_DECIMAL, true));
- DataTypeManager.addTransform(new NumberToLongTransform(
- DefaultDataClasses.BIG_DECIMAL, true, false));
- DataTypeManager.addTransform(new NumberToShortTransform(
- DefaultDataClasses.BIG_DECIMAL, true));
+ DataTypeManager.addTransform(new
NumberToByteTransform(DefaultDataClasses.BIG_DECIMAL));
+ DataTypeManager.addTransform(new NumberToShortTransform(DefaultDataClasses.BIG_DECIMAL,
true));
+ DataTypeManager.addTransform(new
NumberToIntegerTransform(DefaultDataClasses.BIG_DECIMAL, true));
+ DataTypeManager.addTransform(new NumberToLongTransform(DefaultDataClasses.BIG_DECIMAL,
true, false));
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.BigDecimalToBigIntegerTransform());
+ DataTypeManager.addTransform(new NumberToFloatTransform(DefaultDataClasses.BIG_DECIMAL,
true, false));
+ DataTypeManager.addTransform(new
NumberToDoubleTransform(DefaultDataClasses.BIG_DECIMAL, true, false));
DataTypeManager.addTransform(new
AnyToStringTransform(DefaultDataClasses.BIG_DECIMAL));
- DataTypeManager
- .addTransform(new
com.metamatrix.common.types.basic.BigIntegerToBigDecimalTransform());
DataTypeManager.addTransform(new NumberToBooleanTransform(BigInteger.valueOf(0)));
- DataTypeManager.addTransform(new NumberToByteTransform(
- DefaultDataClasses.BIG_INTEGER));
- DataTypeManager.addTransform(new NumberToDoubleTransform(
- DefaultDataClasses.BIG_INTEGER, true, false));
- DataTypeManager.addTransform(new NumberToFloatTransform(
- DefaultDataClasses.BIG_INTEGER, true, false));
- DataTypeManager.addTransform(new NumberToIntegerTransform(
- DefaultDataClasses.BIG_INTEGER, true));
- DataTypeManager.addTransform(new NumberToLongTransform(
- DefaultDataClasses.BIG_INTEGER, true, false));
- DataTypeManager.addTransform(new NumberToShortTransform(
- DefaultDataClasses.BIG_INTEGER, true));
+ DataTypeManager.addTransform(new
NumberToByteTransform(DefaultDataClasses.BIG_INTEGER));
+ DataTypeManager.addTransform(new NumberToShortTransform(DefaultDataClasses.BIG_INTEGER,
true));
+ DataTypeManager.addTransform(new
NumberToIntegerTransform(DefaultDataClasses.BIG_INTEGER, true));
+ DataTypeManager.addTransform(new NumberToLongTransform(DefaultDataClasses.BIG_INTEGER,
true, false));
+ DataTypeManager.addTransform(new NumberToFloatTransform(DefaultDataClasses.BIG_INTEGER,
true, false));
+ DataTypeManager.addTransform(new
NumberToDoubleTransform(DefaultDataClasses.BIG_INTEGER, true, false));
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.BigIntegerToBigDecimalTransform());
DataTypeManager.addTransform(new
AnyToStringTransform(DefaultDataClasses.BIG_INTEGER));
- DataTypeManager
- .addTransform(new BooleanToNumberTransform(BigDecimal.valueOf(1),
BigDecimal.valueOf(0)));
- DataTypeManager
- .addTransform(new BooleanToNumberTransform(BigInteger.valueOf(1),
BigInteger.valueOf(0)));
- DataTypeManager
- .addTransform(new BooleanToNumberTransform(Double.valueOf(1), Double.valueOf(0)));
- DataTypeManager
- .addTransform(new BooleanToNumberTransform(Float.valueOf(1), Float.valueOf(0)));
- DataTypeManager
- .addTransform(new BooleanToNumberTransform(Long.valueOf(1), Long.valueOf(0)));
- DataTypeManager
- .addTransform(new BooleanToNumberTransform(Integer.valueOf(1), Integer.valueOf(0)));
- DataTypeManager
- .addTransform(new BooleanToNumberTransform(Short.valueOf((short)1),
Short.valueOf((short)0)));
- DataTypeManager
- .addTransform(new BooleanToNumberTransform(Byte.valueOf((byte)1),
Byte.valueOf((byte)0)));
+ DataTypeManager.addTransform(new BooleanToNumberTransform(Byte.valueOf((byte)1),
Byte.valueOf((byte)0)));
+ DataTypeManager.addTransform(new BooleanToNumberTransform(Short.valueOf((short)1),
Short.valueOf((short)0)));
+ DataTypeManager.addTransform(new BooleanToNumberTransform(Integer.valueOf(1),
Integer.valueOf(0)));
+ DataTypeManager.addTransform(new BooleanToNumberTransform(Long.valueOf(1),
Long.valueOf(0)));
+ DataTypeManager.addTransform(new BooleanToNumberTransform(BigInteger.valueOf(1),
BigInteger.valueOf(0)));
+ DataTypeManager.addTransform(new BooleanToNumberTransform(Float.valueOf(1),
Float.valueOf(0)));
+ DataTypeManager.addTransform(new BooleanToNumberTransform(Double.valueOf(1),
Double.valueOf(0)));
+ DataTypeManager.addTransform(new BooleanToNumberTransform(BigDecimal.valueOf(1),
BigDecimal.valueOf(0)));
DataTypeManager.addTransform(new AnyToStringTransform(DefaultDataClasses.BOOLEAN));
- DataTypeManager.addTransform(new
FixedNumberToBigDecimalTransform(DefaultDataClasses.BYTE));
- DataTypeManager.addTransform(new
FixedNumberToBigIntegerTransform(DefaultDataClasses.BYTE));
DataTypeManager.addTransform(new NumberToBooleanTransform(Byte.valueOf((byte)0)));
- DataTypeManager.addTransform(new NumberToDoubleTransform(
- DefaultDataClasses.BYTE, false, false));
- DataTypeManager.addTransform(new NumberToFloatTransform(
- DefaultDataClasses.BYTE, false, false));
- DataTypeManager.addTransform(new NumberToIntegerTransform(
- DefaultDataClasses.BYTE, false));
- DataTypeManager.addTransform(new NumberToLongTransform(
- DefaultDataClasses.BYTE, false, false));
- DataTypeManager.addTransform(new NumberToShortTransform(
- DefaultDataClasses.BYTE, false));
+ DataTypeManager.addTransform(new NumberToShortTransform(DefaultDataClasses.BYTE,
false));
+ DataTypeManager.addTransform(new NumberToIntegerTransform(DefaultDataClasses.BYTE,
false));
+ DataTypeManager.addTransform(new NumberToLongTransform(DefaultDataClasses.BYTE, false,
false));
+ DataTypeManager.addTransform(new
FixedNumberToBigIntegerTransform(DefaultDataClasses.BYTE));
+ DataTypeManager.addTransform(new NumberToFloatTransform(DefaultDataClasses.BYTE, false,
false));
+ DataTypeManager.addTransform(new NumberToDoubleTransform(DefaultDataClasses.BYTE,
false, false));
+ DataTypeManager.addTransform(new
FixedNumberToBigDecimalTransform(DefaultDataClasses.BYTE));
DataTypeManager.addTransform(new AnyToStringTransform(DefaultDataClasses.BYTE));
DataTypeManager.addTransform(new AnyToStringTransform(DefaultDataClasses.CHAR));
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.ClobToStringTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.ClobToStringTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.DateToTimestampTransform());
DataTypeManager.addTransform(new AnyToStringTransform(DefaultDataClasses.DATE));
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.DateToTimestampTransform());
- DataTypeManager.addTransform(new
FloatingNumberToBigDecimalTransform(DefaultDataClasses.DOUBLE));
- DataTypeManager.addTransform(new
FloatingNumberToBigIntegerTransform(DefaultDataClasses.DOUBLE));
DataTypeManager.addTransform(new NumberToBooleanTransform(Double.valueOf(0)));
- DataTypeManager.addTransform(new NumberToByteTransform(
- DefaultDataClasses.DOUBLE));
- DataTypeManager.addTransform(new NumberToFloatTransform(
- DefaultDataClasses.DOUBLE, true, false));
- DataTypeManager.addTransform(new NumberToIntegerTransform(
- DefaultDataClasses.DOUBLE, true));
- DataTypeManager.addTransform(new NumberToLongTransform(
- DefaultDataClasses.DOUBLE, false, true)); //lossy, but not narrowing
- DataTypeManager.addTransform(new NumberToShortTransform(
- DefaultDataClasses.DOUBLE, true));
+ DataTypeManager.addTransform(new NumberToByteTransform(DefaultDataClasses.DOUBLE));
+ DataTypeManager.addTransform(new NumberToShortTransform(DefaultDataClasses.DOUBLE,
true));
+ DataTypeManager.addTransform(new NumberToIntegerTransform(DefaultDataClasses.DOUBLE,
true));
+ DataTypeManager.addTransform(new NumberToLongTransform( DefaultDataClasses.DOUBLE,
false, true)); //lossy, but not narrowing
+ DataTypeManager.addTransform(new
FloatingNumberToBigIntegerTransform(DefaultDataClasses.DOUBLE));
+ DataTypeManager.addTransform(new NumberToFloatTransform(DefaultDataClasses.DOUBLE,
true, false));
+ DataTypeManager.addTransform(new
FloatingNumberToBigDecimalTransform(DefaultDataClasses.DOUBLE));
DataTypeManager.addTransform(new AnyToStringTransform(DefaultDataClasses.DOUBLE));
- DataTypeManager.addTransform(new
FloatingNumberToBigDecimalTransform(DefaultDataClasses.FLOAT));
- DataTypeManager.addTransform(new
FloatingNumberToBigIntegerTransform(DefaultDataClasses.FLOAT));
DataTypeManager.addTransform(new NumberToBooleanTransform(Float.valueOf(0)));
- DataTypeManager.addTransform(new NumberToByteTransform(
- DefaultDataClasses.FLOAT));
- DataTypeManager.addTransform(new NumberToDoubleTransform(
- DefaultDataClasses.FLOAT, false, false));
- DataTypeManager.addTransform(new NumberToIntegerTransform(
- DefaultDataClasses.FLOAT, true));
- DataTypeManager.addTransform(new NumberToLongTransform(
- DefaultDataClasses.FLOAT, false, true)); //lossy, but not narrowing
- DataTypeManager.addTransform(new NumberToShortTransform(
- DefaultDataClasses.FLOAT, true));
+ DataTypeManager.addTransform(new NumberToByteTransform(DefaultDataClasses.FLOAT));
+ DataTypeManager.addTransform(new NumberToShortTransform(DefaultDataClasses.FLOAT,
true));
+ DataTypeManager.addTransform(new NumberToIntegerTransform(DefaultDataClasses.FLOAT,
true));
+ DataTypeManager.addTransform(new NumberToLongTransform(DefaultDataClasses.FLOAT, false,
true)); //lossy, but not narrowing
+ DataTypeManager.addTransform(new
FloatingNumberToBigIntegerTransform(DefaultDataClasses.FLOAT));
+ DataTypeManager.addTransform(new NumberToDoubleTransform(DefaultDataClasses.FLOAT,
false, false));
+ DataTypeManager.addTransform(new
FloatingNumberToBigDecimalTransform(DefaultDataClasses.FLOAT));
DataTypeManager.addTransform(new AnyToStringTransform(DefaultDataClasses.FLOAT));
- DataTypeManager.addTransform(new
FixedNumberToBigDecimalTransform(DefaultDataClasses.INTEGER));
- DataTypeManager.addTransform(new
FixedNumberToBigIntegerTransform(DefaultDataClasses.INTEGER));
DataTypeManager.addTransform(new NumberToBooleanTransform(Integer.valueOf(0)));
- DataTypeManager.addTransform(new NumberToByteTransform(
- DefaultDataClasses.INTEGER));
- DataTypeManager.addTransform(new NumberToDoubleTransform(
- DefaultDataClasses.INTEGER, false, false));
- DataTypeManager.addTransform(new NumberToFloatTransform(
- DefaultDataClasses.INTEGER, false, true)); //lossy, but not narrowing
- DataTypeManager.addTransform(new NumberToLongTransform(
- DefaultDataClasses.INTEGER, false, false));
- DataTypeManager.addTransform(new NumberToShortTransform(
- DefaultDataClasses.INTEGER, true));
+ DataTypeManager.addTransform(new NumberToByteTransform(DefaultDataClasses.INTEGER));
+ DataTypeManager.addTransform(new NumberToShortTransform(DefaultDataClasses.INTEGER,
true));
+ DataTypeManager.addTransform(new NumberToLongTransform(DefaultDataClasses.INTEGER,
false, false));
+ DataTypeManager.addTransform(new
FixedNumberToBigIntegerTransform(DefaultDataClasses.INTEGER));
+ DataTypeManager.addTransform(new NumberToFloatTransform(DefaultDataClasses.INTEGER,
false, true)); //lossy, but not narrowing
+ DataTypeManager.addTransform(new NumberToDoubleTransform(DefaultDataClasses.INTEGER,
false, false));
+ DataTypeManager.addTransform(new
FixedNumberToBigDecimalTransform(DefaultDataClasses.INTEGER));
DataTypeManager.addTransform(new AnyToStringTransform(DefaultDataClasses.INTEGER));
- DataTypeManager.addTransform(new
FixedNumberToBigDecimalTransform(DefaultDataClasses.LONG));
- DataTypeManager.addTransform(new
FixedNumberToBigIntegerTransform(DefaultDataClasses.LONG));
DataTypeManager.addTransform(new NumberToBooleanTransform(Long.valueOf(0)));
- DataTypeManager.addTransform(new NumberToByteTransform(
- DefaultDataClasses.LONG));
- DataTypeManager.addTransform(new NumberToDoubleTransform(
- DefaultDataClasses.LONG, false, true)); //lossy, but not narrowing
- DataTypeManager.addTransform(new NumberToFloatTransform(
- DefaultDataClasses.LONG, false, true)); //lossy, but not narrowing
- DataTypeManager.addTransform(new NumberToIntegerTransform(
- DefaultDataClasses.LONG, true));
- DataTypeManager.addTransform(new NumberToShortTransform(
- DefaultDataClasses.LONG, true));
+ DataTypeManager.addTransform(new NumberToByteTransform(DefaultDataClasses.LONG));
+ DataTypeManager.addTransform(new NumberToShortTransform(DefaultDataClasses.LONG,
true));
+ DataTypeManager.addTransform(new NumberToIntegerTransform(DefaultDataClasses.LONG,
true));
+ DataTypeManager.addTransform(new
FixedNumberToBigIntegerTransform(DefaultDataClasses.LONG));
+ DataTypeManager.addTransform(new NumberToFloatTransform(DefaultDataClasses.LONG, false,
true)); //lossy, but not narrowing
+ DataTypeManager.addTransform(new NumberToDoubleTransform(DefaultDataClasses.LONG,
false, true)); //lossy, but not narrowing
+ DataTypeManager.addTransform(new
FixedNumberToBigDecimalTransform(DefaultDataClasses.LONG));
DataTypeManager.addTransform(new AnyToStringTransform(DefaultDataClasses.LONG));
- DataTypeManager.addTransform(new
FixedNumberToBigDecimalTransform(DefaultDataClasses.SHORT));
- DataTypeManager.addTransform(new
FixedNumberToBigIntegerTransform(DefaultDataClasses.SHORT));
DataTypeManager.addTransform(new NumberToBooleanTransform(Short.valueOf((short)0)));
- DataTypeManager.addTransform(new NumberToByteTransform(
- DefaultDataClasses.SHORT));
- DataTypeManager.addTransform(new NumberToDoubleTransform(
- DefaultDataClasses.SHORT, false, false));
- DataTypeManager.addTransform(new NumberToFloatTransform(
- DefaultDataClasses.SHORT, false, false));
- DataTypeManager.addTransform(new NumberToIntegerTransform(
- DefaultDataClasses.SHORT, false));
- DataTypeManager.addTransform(new NumberToLongTransform(
- DefaultDataClasses.SHORT, false, false));
+ DataTypeManager.addTransform(new NumberToByteTransform(DefaultDataClasses.SHORT));
+ DataTypeManager.addTransform(new NumberToIntegerTransform(DefaultDataClasses.SHORT,
false));
+ DataTypeManager.addTransform(new NumberToLongTransform(DefaultDataClasses.SHORT, false,
false));
+ DataTypeManager.addTransform(new
FixedNumberToBigIntegerTransform(DefaultDataClasses.SHORT));
+ DataTypeManager.addTransform(new NumberToFloatTransform(DefaultDataClasses.SHORT,
false, false));
+ DataTypeManager.addTransform(new NumberToDoubleTransform(DefaultDataClasses.SHORT,
false, false));
+ DataTypeManager.addTransform(new
FixedNumberToBigDecimalTransform(DefaultDataClasses.SHORT));
DataTypeManager.addTransform(new AnyToStringTransform(DefaultDataClasses.SHORT));
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToBigDecimalTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToBigIntegerTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToBooleanTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToByteTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToCharacterTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToClobTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToDateTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToDoubleTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToFloatTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToIntegerTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToLongTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToShortTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToTimestampTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToTimeTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.StringToSQLXMLTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToBooleanTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToByteTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToShortTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToIntegerTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToLongTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToBigIntegerTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToFloatTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToDoubleTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToBigDecimalTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToTimeTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToDateTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToTimestampTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToCharacterTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToClobTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.StringToSQLXMLTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.SQLXMLToStringTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.SQLXMLToStringTransform());
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.TimestampToDateTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.TimestampToTimeTransform());
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.TimestampToDateTransform());
DataTypeManager.addTransform(new AnyToStringTransform(DefaultDataClasses.TIMESTAMP));
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.TimestampToTimeTransform());
-
- DataTypeManager
- .addTransform(new com.metamatrix.common.types.basic.TimeToTimestampTransform());
+
+ DataTypeManager.addTransform(new
com.metamatrix.common.types.basic.TimeToTimestampTransform());
DataTypeManager.addTransform(new AnyToStringTransform(DefaultDataClasses.TIME));
for (Class<?> type : getAllDataTypeClasses()) {
@@ -691,176 +577,6 @@
}
- static void loadImplicitConversions() {
- DataTypeManager.setImplicitConversions(DefaultDataTypes.STRING, Arrays
- .asList(new String[] { DefaultDataTypes.CLOB,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.CHAR, Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.BOOLEAN, Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.BYTE, DefaultDataTypes.SHORT,
- DefaultDataTypes.INTEGER, DefaultDataTypes.LONG,
- DefaultDataTypes.BIG_INTEGER, DefaultDataTypes.FLOAT,
- DefaultDataTypes.DOUBLE, DefaultDataTypes.BIG_DECIMAL,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.BYTE,
- Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.SHORT,
- DefaultDataTypes.INTEGER,
- DefaultDataTypes.LONG,
- DefaultDataTypes.BIG_INTEGER,
- DefaultDataTypes.FLOAT,
- DefaultDataTypes.DOUBLE,
- DefaultDataTypes.BIG_DECIMAL,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.SHORT, Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.INTEGER, DefaultDataTypes.LONG,
- DefaultDataTypes.BIG_INTEGER, DefaultDataTypes.FLOAT,
- DefaultDataTypes.DOUBLE, DefaultDataTypes.BIG_DECIMAL,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.INTEGER,
- Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.LONG,
- DefaultDataTypes.BIG_INTEGER,
- DefaultDataTypes.FLOAT,
- DefaultDataTypes.DOUBLE,
- DefaultDataTypes.BIG_DECIMAL,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.LONG, Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.BIG_INTEGER, DefaultDataTypes.BIG_DECIMAL,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.BIG_INTEGER,
- Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.BIG_DECIMAL,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.FLOAT, Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.DOUBLE, DefaultDataTypes.BIG_DECIMAL,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.DOUBLE,
- Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.BIG_DECIMAL,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.BIG_DECIMAL,
- Arrays.asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.DATE, Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.TIMESTAMP, DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.TIME, Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.TIMESTAMP,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.TIMESTAMP,
- Arrays.asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.OBJECT, Arrays
- .asList(new String[] {}));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.NULL, Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.CHAR, DefaultDataTypes.BOOLEAN,
- DefaultDataTypes.BYTE, DefaultDataTypes.SHORT,
- DefaultDataTypes.INTEGER, DefaultDataTypes.LONG,
- DefaultDataTypes.BIG_INTEGER, DefaultDataTypes.FLOAT,
- DefaultDataTypes.DOUBLE, DefaultDataTypes.BIG_DECIMAL,
- DefaultDataTypes.DATE, DefaultDataTypes.TIME,
- DefaultDataTypes.TIMESTAMP, DefaultDataTypes.OBJECT,
- DefaultDataTypes.BLOB, DefaultDataTypes.CLOB,
- DefaultDataTypes.XML }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.BLOB, Arrays
- .asList(new String[] { DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.CLOB, Arrays
- .asList(new String[] { DefaultDataTypes.OBJECT }));
- DataTypeManager.setImplicitConversions(DefaultDataTypes.XML, Arrays
- .asList(new String[] { DefaultDataTypes.OBJECT }));
- }
-
- static void loadExplicitConversions() {
- DataTypeManager.setExplicitConversions(DefaultDataTypes.STRING, Arrays
- .asList(new String[] { DefaultDataTypes.CHAR,
- DefaultDataTypes.BOOLEAN, DefaultDataTypes.BYTE,
- DefaultDataTypes.SHORT, DefaultDataTypes.INTEGER,
- DefaultDataTypes.LONG, DefaultDataTypes.BIG_INTEGER,
- DefaultDataTypes.FLOAT, DefaultDataTypes.DOUBLE,
- DefaultDataTypes.BIG_DECIMAL, DefaultDataTypes.DATE,
- DefaultDataTypes.TIME, DefaultDataTypes.TIMESTAMP,
- DefaultDataTypes.XML }));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.CHAR, Arrays
- .asList(new String[] {}));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.BOOLEAN, Arrays
- .asList(new String[] {}));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.BYTE, Arrays
- .asList(new String[] { DefaultDataTypes.BOOLEAN }));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.SHORT, Arrays
- .asList(new String[] { DefaultDataTypes.BOOLEAN,
- DefaultDataTypes.BYTE }));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.INTEGER, Arrays
- .asList(new String[] { DefaultDataTypes.BOOLEAN,
- DefaultDataTypes.BYTE, DefaultDataTypes.SHORT }));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.LONG, Arrays
- .asList(new String[] { DefaultDataTypes.BOOLEAN,
- DefaultDataTypes.BYTE, DefaultDataTypes.SHORT,
- DefaultDataTypes.INTEGER, DefaultDataTypes.FLOAT,
- DefaultDataTypes.DOUBLE}));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.BIG_INTEGER,
- Arrays.asList(new String[] { DefaultDataTypes.BOOLEAN,
- DefaultDataTypes.BYTE, DefaultDataTypes.SHORT,
- DefaultDataTypes.INTEGER, DefaultDataTypes.LONG,
- DefaultDataTypes.FLOAT, DefaultDataTypes.DOUBLE }));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.FLOAT, Arrays
- .asList(new String[] { DefaultDataTypes.BOOLEAN,
- DefaultDataTypes.BYTE, DefaultDataTypes.SHORT,
- DefaultDataTypes.INTEGER, DefaultDataTypes.LONG,
- DefaultDataTypes.BIG_INTEGER }));
- DataTypeManager
- .setExplicitConversions(DefaultDataTypes.DOUBLE, Arrays
- .asList(new String[] { DefaultDataTypes.BOOLEAN,
- DefaultDataTypes.BYTE, DefaultDataTypes.SHORT,
- DefaultDataTypes.INTEGER,
- DefaultDataTypes.LONG,
- DefaultDataTypes.BIG_INTEGER,
- DefaultDataTypes.FLOAT }));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.BIG_DECIMAL,
- Arrays.asList(new String[] { DefaultDataTypes.BOOLEAN,
- DefaultDataTypes.BYTE, DefaultDataTypes.SHORT,
- DefaultDataTypes.INTEGER, DefaultDataTypes.LONG,
- DefaultDataTypes.BIG_INTEGER, DefaultDataTypes.FLOAT,
- DefaultDataTypes.DOUBLE }));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.DATE, Arrays
- .asList(new String[] {}));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.TIME, Arrays
- .asList(new String[] {}));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.TIMESTAMP,
- Arrays.asList(new String[] { DefaultDataTypes.DATE,
- DefaultDataTypes.TIME }));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.OBJECT, Arrays
- .asList(new String[] { DefaultDataTypes.STRING,
- DefaultDataTypes.CHAR, DefaultDataTypes.BOOLEAN,
- DefaultDataTypes.BYTE, DefaultDataTypes.SHORT,
- DefaultDataTypes.INTEGER, DefaultDataTypes.LONG,
- DefaultDataTypes.BIG_INTEGER, DefaultDataTypes.FLOAT,
- DefaultDataTypes.DOUBLE, DefaultDataTypes.BIG_DECIMAL,
- DefaultDataTypes.DATE, DefaultDataTypes.TIME,
- DefaultDataTypes.TIMESTAMP, DefaultDataTypes.BLOB,
- DefaultDataTypes.CLOB, DefaultDataTypes.XML }));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.NULL, Arrays
- .asList(new String[] {}));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.BLOB, Arrays
- .asList(new String[] {}));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.CLOB, Arrays
- .asList(new String[] { DefaultDataTypes.STRING }));
- DataTypeManager.setExplicitConversions(DefaultDataTypes.XML, Arrays
- .asList(new String[] { DefaultDataTypes.STRING }));
- }
-
static void loadSourceConversions() {
sourceConverters.put(Clob.class, new SourceTransform<Clob, ClobType>() {
//## JDBC4.0-begin ##
Modified: trunk/common-core/src/main/java/com/metamatrix/common/types/Transform.java
===================================================================
--- trunk/common-core/src/main/java/com/metamatrix/common/types/Transform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++ trunk/common-core/src/main/java/com/metamatrix/common/types/Transform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -95,21 +95,10 @@
return getDisplayName();
}
- /**
- * Flag if the transformation from source to target is
- * a narrowing transformation that may lose information.
- * This class returns false by default. This method should
- * be overridden if the transform is a narrowing transform.
- * @return False unless overridden.
- */
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return false;
}
- public boolean isLossy() {
- return isNarrowing();
- }
-
/**
* Override Object.toString() to do getDisplayName() version.
* @return String representation of object
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/BigDecimalToBigIntegerTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/BigDecimalToBigIntegerTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/BigDecimalToBigIntegerTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -58,12 +58,7 @@
return BigInteger.class;
}
- /**
- * Flag if the transformation from source to target is
- * a narrowing transformation that may lose information.
- * @return True - this transformation is narrowing
- */
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/ClobToStringTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/ClobToStringTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/ClobToStringTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -69,9 +69,9 @@
}
/**
- * @see com.metamatrix.common.types.Transform#isNarrowing()
+ * @see com.metamatrix.common.types.Transform#isExplicit()
*/
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/FloatingNumberToBigIntegerTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/FloatingNumberToBigIntegerTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/FloatingNumberToBigIntegerTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -65,7 +65,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToBooleanTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToBooleanTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToBooleanTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -55,7 +55,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToByteTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToByteTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToByteTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -59,5 +59,10 @@
public Class<?> getTargetType() {
return DataTypeManager.DefaultDataClasses.BYTE;
}
-
+
+ @Override
+ public boolean isExplicit() {
+ return true;
+ }
+
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToDoubleTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToDoubleTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToDoubleTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -67,13 +67,8 @@
}
@Override
- public boolean isNarrowing() {
- return isNarrowing;
+ public boolean isExplicit() {
+ return isNarrowing || isLossy;
}
- @Override
- public boolean isLossy() {
- return isLossy;
- }
-
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToFloatTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToFloatTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToFloatTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -67,13 +67,8 @@
}
@Override
- public boolean isNarrowing() {
- return isNarrowing;
+ public boolean isExplicit() {
+ return isNarrowing || isLossy;
}
- @Override
- public boolean isLossy() {
- return isLossy;
- }
-
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToIntegerTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToIntegerTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToIntegerTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -65,7 +65,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return isNarrowing;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToLongTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToLongTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToLongTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -67,13 +67,8 @@
}
@Override
- public boolean isNarrowing() {
- return isNarrowing;
+ public boolean isExplicit() {
+ return isNarrowing || isLossy;
}
- @Override
- public boolean isLossy() {
- return isLossy;
- }
-
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToShortTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToShortTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/NumberToShortTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -65,7 +65,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return isNarrowing;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/ObjectToAnyTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/ObjectToAnyTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/ObjectToAnyTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -68,9 +68,9 @@
}
/**
- * @see com.metamatrix.common.types.Transform#isNarrowing()
+ * @see com.metamatrix.common.types.Transform#isExplicit()
*/
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/SQLXMLToStringTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/SQLXMLToStringTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/SQLXMLToStringTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -60,9 +60,9 @@
}
/**
- * @see com.metamatrix.common.types.Transform#isNarrowing()
+ * @see com.metamatrix.common.types.Transform#isExplicit()
*/
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToBigDecimalTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToBigDecimalTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToBigDecimalTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -64,7 +64,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToBigIntegerTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToBigIntegerTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToBigIntegerTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -64,7 +64,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToBooleanTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToBooleanTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToBooleanTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -70,7 +70,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToByteTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToByteTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToByteTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -62,7 +62,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToCharacterTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToCharacterTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToCharacterTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -62,7 +62,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToDateTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToDateTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToDateTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -70,7 +70,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToDoubleTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToDoubleTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToDoubleTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -62,7 +62,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToFloatTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToFloatTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToFloatTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -62,7 +62,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToIntegerTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToIntegerTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToIntegerTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -62,7 +62,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToLongTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToLongTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToLongTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -62,7 +62,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToSQLXMLTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToSQLXMLTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToSQLXMLTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -76,4 +76,9 @@
return XMLType.class;
}
+ @Override
+ public boolean isExplicit() {
+ return true;
+ }
+
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToShortTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToShortTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToShortTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -62,7 +62,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToTimeTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToTimeTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToTimeTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -70,7 +70,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToTimestampTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToTimestampTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/StringToTimestampTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -71,7 +71,7 @@
}
@Override
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/TimestampToDateTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/TimestampToDateTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/TimestampToDateTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -60,9 +60,9 @@
}
/**
- * @see com.metamatrix.common.types.Transform#isNarrowing()
+ * @see com.metamatrix.common.types.Transform#isExplicit()
*/
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
Modified:
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/TimestampToTimeTransform.java
===================================================================
---
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/TimestampToTimeTransform.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/main/java/com/metamatrix/common/types/basic/TimestampToTimeTransform.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -59,9 +59,9 @@
}
/**
- * @see com.metamatrix.common.types.Transform#isNarrowing()
+ * @see com.metamatrix.common.types.Transform#isExplicit()
*/
- public boolean isNarrowing() {
+ public boolean isExplicit() {
return true;
}
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-09-01
04:26:32 UTC (rev 1300)
+++
trunk/common-core/src/test/java/com/metamatrix/common/types/TestDataTypeManager.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -70,7 +70,7 @@
/*bool*/ {
'I','N','O','I','I','I','I','I','I','I','I','N','N','N','I','N','N','N'
},
/*byte*/ {
'I','N','C','O','I','I','I','I','I','I','I','N','N','N','I','N','N','N'
},
/*short*/ {
'I','N','C','C','O','I','I','I','I','I','I','N','N','N','I','N','N','N'
},
- /*int*/ {
'I','N','C','C','C','O','I','I','I','I','I','N','N','N','I','N','N','N'
},
+ /*int*/ {
'I','N','C','C','C','O','I','I','C','I','I','N','N','N','I','N','N','N'
},
/*long*/ {
'I','N','C','C','C','C','O','I','C','C','I','N','N','N','I','N','N','N'
},
/*bigint*/ {
'I','N','C','C','C','C','C','O','C','C','I','N','N','N','I','N','N','N'
},
/*float*/ {
'I','N','C','C','C','C','C','C','O','I','I','N','N','N','I','N','N','N'
},
Modified: trunk/documentation/reference/src/main/docbook/en-US/content/datatypes.xml
===================================================================
--- trunk/documentation/reference/src/main/docbook/en-US/content/datatypes.xml 2009-09-01
04:26:32 UTC (rev 1300)
+++ trunk/documentation/reference/src/main/docbook/en-US/content/datatypes.xml 2009-09-01
17:58:00 UTC (rev 1301)
@@ -293,9 +293,9 @@
</row>
<row>
<entry>integer</entry>
- <entry>string, long, biginteger, float, double,
+ <entry>string, long, biginteger, double,
bigdecimal</entry>
- <entry>boolean, byte, short</entry>
+ <entry>boolean, byte, short, float</entry>
</row>
<row>
<entry>long</entry>
Modified: trunk/engine/src/main/java/com/metamatrix/query/rewriter/QueryRewriter.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/rewriter/QueryRewriter.java 2009-09-01
04:26:32 UTC (rev 1300)
+++ trunk/engine/src/main/java/com/metamatrix/query/rewriter/QueryRewriter.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -54,7 +54,6 @@
import com.metamatrix.api.exception.query.QueryValidatorException;
import com.metamatrix.common.buffer.BlockedException;
import com.metamatrix.common.types.DataTypeManager;
-import com.metamatrix.common.types.Transform;
import com.metamatrix.common.util.TimestampWithTimezone;
import com.metamatrix.core.MetaMatrixRuntimeException;
import com.metamatrix.core.util.Assertion;
@@ -1482,10 +1481,7 @@
private Criteria simplifyConvertFunction(CompareCriteria crit) throws
QueryValidatorException {
Function leftFunction = (Function) crit.getLeftExpression();
Expression leftExpr = leftFunction.getArgs()[0];
- if (leftExpr.getType() == crit.getRightExpression().getType()) {
- crit.setLeftExpression(leftExpr);
- return crit;
- }
+
if(!(crit.getRightExpression() instanceof Constant)
//TODO: this can be relaxed for order preserving operations
|| !(crit.getOperator() == CompareCriteria.EQ || crit.getOperator() ==
CompareCriteria.NE)) {
@@ -1507,9 +1503,7 @@
return getSimpliedCriteria(crit, leftExpr, crit.getOperator() !=
CompareCriteria.EQ, true);
}
- Transform transform = DataTypeManager.getTransform(leftExpr.getType(),
crit.getRightExpression().getType());
-
- if (transform.isLossy()) {
+ if (!DataTypeManager.isImplicitConversion(leftExprTypeName,
DataTypeManager.getDataTypeName(rightConstant.getType()))) {
return crit;
}
Modified:
trunk/engine/src/test/java/com/metamatrix/query/function/TestFunctionLibrary.java
===================================================================
---
trunk/engine/src/test/java/com/metamatrix/query/function/TestFunctionLibrary.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/engine/src/test/java/com/metamatrix/query/function/TestFunctionLibrary.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -368,14 +368,14 @@
"+", new Class[] { T_INTEGER, T_FLOAT }, //$NON-NLS-1$
new FunctionDescriptor[] {
helpCreateDescriptor(FunctionLibrary.CONVERT, new Class[] { T_INTEGER,
T_STRING }),
- null } );
+ helpCreateDescriptor(FunctionLibrary.CONVERT, new Class[] { T_FLOAT,
T_STRING }) } );
}
@Test public void testFind2ArgConversion3() {
helpFindConversions(
"+", new Class[] { T_FLOAT, T_INTEGER }, //$NON-NLS-1$
new FunctionDescriptor[] {
- null,
+ helpCreateDescriptor(FunctionLibrary.CONVERT, new Class[] { T_FLOAT, T_STRING }),
helpCreateDescriptor(FunctionLibrary.CONVERT, new Class[] { T_INTEGER,
T_STRING }) } );
}
Modified:
trunk/engine/src/test/java/com/metamatrix/query/processor/TestInsertProcessing.java
===================================================================
---
trunk/engine/src/test/java/com/metamatrix/query/processor/TestInsertProcessing.java 2009-09-01
04:26:32 UTC (rev 1300)
+++
trunk/engine/src/test/java/com/metamatrix/query/processor/TestInsertProcessing.java 2009-09-01
17:58:00 UTC (rev 1301)
@@ -49,7 +49,7 @@
dataManager.addData("BatchedUpdate{I}", //$NON-NLS-1$
new List[] { Arrays.asList(new Object[] { new Integer(1)
})});
- String sql = "SELECT 1, 1, 1 INTO pm1.g1"; //$NON-NLS-1$
+ String sql = "SELECT 1, convert(1, float), convert(1, float) INTO
pm1.g1"; //$NON-NLS-1$
Command command = helpParse(sql);
ProcessorPlan plan = helpGetPlan(command, metadata, capFinder);
@@ -173,7 +173,7 @@
dataManager.addData("INSERT INTO pm1.g1 (pm1.g1.e1, pm1.g1.e2) VALUES (?,
?)", //$NON-NLS-1$
new List[] { Arrays.asList(new Object[] { new Integer(1)
})});
- String sql = "SELECT 1, 1 INTO pm1.g1"; //$NON-NLS-1$
+ String sql = "SELECT 1, convert(1, float) INTO pm1.g1"; //$NON-NLS-1$
Command command = helpParse(sql);
ProcessorPlan plan = helpGetPlan(command, metadata, capFinder);
@@ -213,7 +213,7 @@
dataManager.addData("INSERT INTO pm1.g1 (pm1.g1.e1, pm1.g1.e2) VALUES (1,
1.0)", //$NON-NLS-1$
new List[] { Arrays.asList(new Object[] { new Integer(1)
})});
- String sql = "SELECT 1, 1 INTO pm1.g1"; //$NON-NLS-1$
+ String sql = "SELECT 1, convert(1, float) INTO pm1.g1"; //$NON-NLS-1$
Command command = helpParse(sql);
ProcessorPlan plan = helpGetPlan(command, metadata, capFinder);