[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