[teiid-commits] teiid SVN: r1443 - in branches/6.2.x/engine/src: test/java/com/metamatrix/query/rewriter and 1 other directory.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Mon Sep 21 17:29:36 EDT 2009
Author: shawkins
Date: 2009-09-21 17:29:36 -0400 (Mon, 21 Sep 2009)
New Revision: 1443
Modified:
branches/6.2.x/engine/src/main/java/com/metamatrix/query/rewriter/QueryRewriter.java
branches/6.2.x/engine/src/test/java/com/metamatrix/query/rewriter/TestQueryRewriter.java
Log:
TEIID-744 adding a check for explicit conversion in set query rewrite to ensure that widening does not happen as part of inversion.
Modified: branches/6.2.x/engine/src/main/java/com/metamatrix/query/rewriter/QueryRewriter.java
===================================================================
--- branches/6.2.x/engine/src/main/java/com/metamatrix/query/rewriter/QueryRewriter.java 2009-09-21 20:50:45 UTC (rev 1442)
+++ branches/6.2.x/engine/src/main/java/com/metamatrix/query/rewriter/QueryRewriter.java 2009-09-21 21:29:36 UTC (rev 1443)
@@ -1537,7 +1537,7 @@
* @throws QueryValidatorException
* @since 4.2
*/
- private Criteria simplifyConvertFunction(SetCriteria crit) throws QueryValidatorException {
+ private Criteria simplifyConvertFunction(SetCriteria crit) throws QueryValidatorException {
Function leftFunction = (Function) crit.getExpression();
Expression leftExpr = leftFunction.getArgs()[0];
String leftExprTypeName = DataTypeManager.getDataTypeName(leftExpr.getType());
@@ -1564,11 +1564,13 @@
}
}
- if (result != null) {
+ if (result == null) {
+ removedSome = true;
+ i.remove();
+ } else if (DataTypeManager.isImplicitConversion(leftExprTypeName, DataTypeManager.getDataTypeName(rightConstant.getType()))) {
newValues.add(result);
} else {
- removedSome = true;
- i.remove();
+ convertedAll = false;
}
}
Modified: branches/6.2.x/engine/src/test/java/com/metamatrix/query/rewriter/TestQueryRewriter.java
===================================================================
--- branches/6.2.x/engine/src/test/java/com/metamatrix/query/rewriter/TestQueryRewriter.java 2009-09-21 20:50:45 UTC (rev 1442)
+++ branches/6.2.x/engine/src/test/java/com/metamatrix/query/rewriter/TestQueryRewriter.java 2009-09-21 21:29:36 UTC (rev 1443)
@@ -2276,10 +2276,21 @@
helpTestRewriteCriteria(original, expected);
}
- @Test public void testRewriteLong() {
+ /**
+ * Test ensures that '22.0' is a valid long via bigdecimal
+ */
+ @Test public void testRewriteBigDecimal() {
String original = "convert(BQT1.SmallA.LongNum, bigdecimal) = '22.0'"; //$NON-NLS-1$
CompareCriteria crit = new CompareCriteria(new ElementSymbol("BQT1.SmallA.LongNum"), CompareCriteria.EQ, new Constant(new Long(22))); //$NON-NLS-1$
helpTestRewriteCriteria(original, crit, FakeMetadataFactory.exampleBQTCached());
}
+
+ /**
+ * Test ensures that we will not attempt to invert the widening conversion
+ */
+ @Test public void testRewriteWideningIn() {
+ String original = "convert(BQT1.SmallA.TimestampValue, time) in ({t'10:00:00'}, {t'11:00:00'})"; //$NON-NLS-1$
+ helpTestRewriteCriteria(original, parseCriteria("convert(BQT1.SmallA.TimestampValue, time) in ({t'10:00:00'}, {t'11:00:00'})", FakeMetadataFactory.exampleBQTCached()), FakeMetadataFactory.exampleBQTCached()); //$NON-NLS-1$
+ }
}
More information about the teiid-commits
mailing list