[teiid-commits] teiid SVN: r3012 - in trunk: common-core/src/main/java/org/teiid/core/types/basic and 5 other directories.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Sun Mar 20 11:06:45 EDT 2011
Author: shawkins
Date: 2011-03-20 11:06:45 -0400 (Sun, 20 Mar 2011)
New Revision: 3012
Modified:
trunk/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java
trunk/common-core/src/main/java/org/teiid/core/types/basic/BigIntegerToBigDecimalTransform.java
trunk/common-core/src/main/java/org/teiid/core/types/basic/FloatingNumberToBigDecimalTransform.java
trunk/common-core/src/main/java/org/teiid/core/types/basic/StringToBigDecimalTransform.java
trunk/engine/src/main/java/org/teiid/query/processor/relational/DependentValueSource.java
trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
trunk/engine/src/main/java/org/teiid/query/sql/symbol/Constant.java
trunk/engine/src/test/java/org/teiid/query/function/TestFunction.java
trunk/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestTPCR.java
Log:
TEIID-1497 backing out teiidbigdecimal for a more targeted fix
Modified: trunk/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java
===================================================================
--- trunk/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java 2011-03-20 13:39:50 UTC (rev 3011)
+++ trunk/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java 2011-03-20 15:06:45 UTC (rev 3012)
@@ -173,7 +173,7 @@
public static final Class<BigInteger> BIG_INTEGER = BigInteger.class;
public static final Class<Float> FLOAT = Float.class;
public static final Class<Double> DOUBLE = Double.class;
- public static final Class<? extends BigDecimal> BIG_DECIMAL = TeiidBigDecimal.class;
+ public static final Class<BigDecimal> BIG_DECIMAL = BigDecimal.class;
public static final Class<java.sql.Date> DATE = java.sql.Date.class;
public static final Class<Time> TIME = Time.class;
public static final Class<Timestamp> TIMESTAMP = Timestamp.class;
@@ -736,12 +736,6 @@
return new Timestamp(value.getTime());
}
});
- addSourceTransform(BigDecimal.class, new SourceTransform<BigDecimal, TeiidBigDecimal>() {
- @Override
- public TeiidBigDecimal transform(BigDecimal value) {
- return new TeiidBigDecimal(value);
- }
- });
}
public static Object convertToRuntimeType(Object value) {
Modified: trunk/common-core/src/main/java/org/teiid/core/types/basic/BigIntegerToBigDecimalTransform.java
===================================================================
--- trunk/common-core/src/main/java/org/teiid/core/types/basic/BigIntegerToBigDecimalTransform.java 2011-03-20 13:39:50 UTC (rev 3011)
+++ trunk/common-core/src/main/java/org/teiid/core/types/basic/BigIntegerToBigDecimalTransform.java 2011-03-20 15:06:45 UTC (rev 3012)
@@ -22,9 +22,9 @@
package org.teiid.core.types.basic;
+import java.math.BigDecimal;
import java.math.BigInteger;
-import org.teiid.core.types.TeiidBigDecimal;
import org.teiid.core.types.Transform;
import org.teiid.core.types.TransformationException;
import org.teiid.core.types.DataTypeManager.DefaultDataClasses;
@@ -41,7 +41,7 @@
* the transformation fails
*/
public Object transformDirect(Object value) throws TransformationException {
- return new TeiidBigDecimal((BigInteger) value, 0);
+ return new BigDecimal((BigInteger) value, 0);
}
/**
Modified: trunk/common-core/src/main/java/org/teiid/core/types/basic/FloatingNumberToBigDecimalTransform.java
===================================================================
--- trunk/common-core/src/main/java/org/teiid/core/types/basic/FloatingNumberToBigDecimalTransform.java 2011-03-20 13:39:50 UTC (rev 3011)
+++ trunk/common-core/src/main/java/org/teiid/core/types/basic/FloatingNumberToBigDecimalTransform.java 2011-03-20 15:06:45 UTC (rev 3012)
@@ -25,7 +25,6 @@
import java.math.BigDecimal;
import org.teiid.core.types.DataTypeManager;
-import org.teiid.core.types.TeiidBigDecimal;
import org.teiid.core.types.Transform;
import org.teiid.core.types.TransformationException;
@@ -49,7 +48,7 @@
public Object transformDirect(Object value) throws TransformationException {
BigDecimal result = BigDecimal.valueOf(((Number)value).doubleValue());
result = result.setScale(Math.max(result.scale(), (value instanceof Double ? 16 : 8) - result.precision()));
- return new TeiidBigDecimal(result);
+ return result;
}
/**
Modified: trunk/common-core/src/main/java/org/teiid/core/types/basic/StringToBigDecimalTransform.java
===================================================================
--- trunk/common-core/src/main/java/org/teiid/core/types/basic/StringToBigDecimalTransform.java 2011-03-20 13:39:50 UTC (rev 3011)
+++ trunk/common-core/src/main/java/org/teiid/core/types/basic/StringToBigDecimalTransform.java 2011-03-20 15:06:45 UTC (rev 3012)
@@ -22,8 +22,9 @@
package org.teiid.core.types.basic;
+import java.math.BigDecimal;
+
import org.teiid.core.CorePlugin;
-import org.teiid.core.types.TeiidBigDecimal;
import org.teiid.core.types.Transform;
import org.teiid.core.types.TransformationException;
import org.teiid.core.types.DataTypeManager.DefaultDataClasses;
@@ -41,7 +42,7 @@
*/
public Object transformDirect(Object value) throws TransformationException {
try {
- return new TeiidBigDecimal(((String)value).trim());
+ return new BigDecimal(((String)value).trim());
} catch(NumberFormatException e) {
throw new TransformationException("ERR.003.029.0014", CorePlugin.Util.getString("ERR.003.029.0014", value)); //$NON-NLS-1$ //$NON-NLS-2$
}
Modified: trunk/engine/src/main/java/org/teiid/query/processor/relational/DependentValueSource.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/processor/relational/DependentValueSource.java 2011-03-20 13:39:50 UTC (rev 3011)
+++ trunk/engine/src/main/java/org/teiid/query/processor/relational/DependentValueSource.java 2011-03-20 15:06:45 UTC (rev 3012)
@@ -26,13 +26,16 @@
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import java.util.TreeSet;
import org.teiid.common.buffer.IndexedTupleSource;
import org.teiid.common.buffer.TupleBuffer;
import org.teiid.core.TeiidComponentException;
import org.teiid.core.TeiidProcessingException;
+import org.teiid.core.types.DataTypeManager;
import org.teiid.core.util.Assertion;
import org.teiid.query.sql.symbol.Expression;
+import org.teiid.query.sql.symbol.SingleElementSymbol;
import org.teiid.query.sql.util.ValueIterator;
import org.teiid.query.sql.util.ValueIteratorSource;
@@ -83,7 +86,11 @@
index = buffer.getSchema().indexOf(valueExpression);
}
Assertion.assertTrue(index != -1);
- result = new HashSet<Object>();
+ if (((SingleElementSymbol)buffer.getSchema().get(index)).getType() == DataTypeManager.DefaultDataClasses.BIG_DECIMAL) {
+ result = new TreeSet<Object>();
+ } else {
+ result = new HashSet<Object>();
+ }
while (its.hasNext()) {
Object value = its.nextTuple().get(index);
if (value != null) {
Modified: trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2011-03-20 13:39:50 UTC (rev 3011)
+++ trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2011-03-20 15:06:45 UTC (rev 3012)
@@ -2235,7 +2235,6 @@
criteria.setValues(newVals);
if (allConstants) {
criteria.setAllConstants(true);
- criteria.setValues(new LinkedHashSet(newVals));
}
if (size == 0) {
Modified: trunk/engine/src/main/java/org/teiid/query/sql/symbol/Constant.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/symbol/Constant.java 2011-03-20 13:39:50 UTC (rev 3011)
+++ trunk/engine/src/main/java/org/teiid/query/sql/symbol/Constant.java 2011-03-20 15:06:45 UTC (rev 3012)
@@ -22,6 +22,7 @@
package org.teiid.query.sql.symbol;
+import java.math.BigDecimal;
import java.util.List;
import org.teiid.core.types.DataTypeManager;
@@ -153,6 +154,16 @@
if(! other.getType().equals(this.getType())) {
return false;
}
+
+ if (this.value instanceof BigDecimal) {
+ if (this.value == other.value) {
+ return true;
+ }
+ if (!(other.value instanceof BigDecimal)) {
+ return false;
+ }
+ return ((BigDecimal)this.value).compareTo((BigDecimal)other.value) == 0;
+ }
return multiValued == other.multiValued && other.getValue().equals(this.getValue());
}
@@ -163,6 +174,14 @@
*/
public int hashCode() {
if(this.value != null) {
+ if (this.value instanceof BigDecimal) {
+ BigDecimal bd = (BigDecimal)this.value;
+ int xsign = bd.signum();
+ if (xsign == 0)
+ return 0;
+ bd = bd.stripTrailingZeros();
+ return bd.hashCode();
+ }
return this.value.hashCode();
}
return 0;
Modified: trunk/engine/src/test/java/org/teiid/query/function/TestFunction.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/function/TestFunction.java 2011-03-20 13:39:50 UTC (rev 3011)
+++ trunk/engine/src/test/java/org/teiid/query/function/TestFunction.java 2011-03-20 15:06:45 UTC (rev 3012)
@@ -34,7 +34,6 @@
import org.junit.Test;
import org.teiid.api.exception.query.FunctionExecutionException;
-import org.teiid.core.types.TeiidBigDecimal;
import org.teiid.language.SQLConstants.NonReserved;
import org.teiid.query.sql.symbol.Constant;
import org.teiid.query.unittest.TimestampUtil;
@@ -471,7 +470,7 @@
}
@Test public void testConvertBigDecimalBigInteger() throws Exception {
- helpConvert(new TeiidBigDecimal("1.0"), "biginteger", new BigInteger("1")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ helpConvert(new BigDecimal("1.0"), "biginteger", new BigInteger("1")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
@Test public void testConvertDoubleLong() throws Exception {
Modified: trunk/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestTPCR.java
===================================================================
--- trunk/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestTPCR.java 2011-03-20 13:39:50 UTC (rev 3011)
+++ trunk/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestTPCR.java 2011-03-20 15:06:45 UTC (rev 3012)
@@ -191,7 +191,7 @@
ProcessorPlan plan = TestOptimizer.helpPlan("SELECT custsale.cntrycode, COUNT(*) AS numcust, SUM(c_acctbal) AS totacctbal FROM (SELECT left(C_PHONE, 2) AS cntrycode, CUSTOMER.C_ACCTBAL FROM CUSTOMER WHERE (left(C_PHONE, 2) IN ('13','31','23','29','30','18','17')) AND (CUSTOMER.C_ACCTBAL > (SELECT AVG(CUSTOMER.C_ACCTBAL) FROM CUSTOMER WHERE (CUSTOMER.C_ACCTBAL > 0.0) AND (left(C_PHONE, 2) IN ('13','31','23','29','30','18','17')))) AND (NOT (EXISTS (SELECT * FROM ORDERS WHERE O_CUSTKEY = C_CUSTKEY)))) AS custsale GROUP BY custsale.cntrycode ORDER BY custsale.cntrycode", //$NON-NLS-1$
METADATA, null, finder,
- new String[] {"SELECT v_0.c_0, COUNT(*) AS c_1, SUM(v_0.c_1) AS c_2 FROM (SELECT left(g_0.C_PHONE, 2) AS c_0, g_0.C_ACCTBAL AS c_1 FROM TPCR_Oracle_9i.CUSTOMER AS g_0 WHERE (left(g_0.C_PHONE, 2) IN ('13', '17', '18', '23', '29', '30', '31')) AND (g_0.C_ACCTBAL > (SELECT AVG(g_1.C_ACCTBAL) FROM TPCR_Oracle_9i.CUSTOMER AS g_1 WHERE (g_1.C_ACCTBAL > 0E-15) AND (left(g_1.C_PHONE, 2) IN ('13', '17', '18', '23', '29', '30', '31')))) AND (NOT EXISTS (SELECT 1 FROM TPCR_Oracle_9i.ORDERS AS g_2 WHERE g_2.O_CUSTKEY = g_0.C_CUSTKEY))) AS v_0 GROUP BY v_0.c_0 ORDER BY c_0 NULLS FIRST"}, ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$
+ new String[] {"SELECT v_0.c_0, COUNT(*) AS c_1, SUM(v_0.c_1) AS c_2 FROM (SELECT left(g_0.C_PHONE, 2) AS c_0, g_0.C_ACCTBAL AS c_1 FROM TPCR_Oracle_9i.CUSTOMER AS g_0 WHERE (left(g_0.C_PHONE, 2) IN ('13', '31', '23', '29', '30', '18', '17')) AND (g_0.C_ACCTBAL > (SELECT AVG(g_1.C_ACCTBAL) FROM TPCR_Oracle_9i.CUSTOMER AS g_1 WHERE (g_1.C_ACCTBAL > 0E-15) AND (left(g_1.C_PHONE, 2) IN ('13', '31', '23', '29', '30', '18', '17')))) AND (NOT EXISTS (SELECT 1 FROM TPCR_Oracle_9i.ORDERS AS g_2 WHERE g_2.O_CUSTKEY = g_0.C_CUSTKEY))) AS v_0 GROUP BY v_0.c_0 ORDER BY c_0 NULLS FIRST"}, ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
More information about the teiid-commits
mailing list