[teiid-commits] teiid SVN: r1138 - in trunk: engine/src/main/java/com/metamatrix/query/function and 2 other directories.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Thu Jul 16 13:06:57 EDT 2009
Author: shawkins
Date: 2009-07-16 13:06:57 -0400 (Thu, 16 Jul 2009)
New Revision: 1138
Modified:
trunk/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml
trunk/engine/src/main/java/com/metamatrix/query/function/FunctionMethods.java
trunk/engine/src/main/java/com/metamatrix/query/function/source/SystemSource.java
trunk/engine/src/test/java/com/metamatrix/query/function/TestFunctionLibrary.java
Log:
TEIID-671 adding bigdecimal as an accepted input to power.
Modified: trunk/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml
===================================================================
--- trunk/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml 2009-07-16 14:19:27 UTC (rev 1137)
+++ trunk/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml 2009-07-16 17:06:57 UTC (rev 1138)
@@ -350,8 +350,7 @@
<para>x to the y power</para>
</entry>
<entry>
- <para>x in {integer, long, float, double, biginteger}, if x is
- biginteger then return type is biginteger, else double</para>
+ <para>x in {double, bigdecimal, biginteger}, return is the same type as x</para>
</entry>
</row>
<row>
Modified: trunk/engine/src/main/java/com/metamatrix/query/function/FunctionMethods.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/function/FunctionMethods.java 2009-07-16 14:19:27 UTC (rev 1137)
+++ trunk/engine/src/main/java/com/metamatrix/query/function/FunctionMethods.java 2009-07-16 17:06:57 UTC (rev 1138)
@@ -282,22 +282,18 @@
}
// ================== Function = power =====================
-
- public static Object power(Object x, Object y) throws FunctionExecutionException {
- if(x == null || y == null) {
- return null;
- } else if(x instanceof Double) {
- if(y instanceof Double) {
- return new Double(Math.pow(((Double)x).doubleValue(), ((Double)y).doubleValue()));
- }
- } else if(x instanceof BigInteger) {
- if(y instanceof Integer) {
- return ((BigInteger)x).pow(((Integer)y).intValue());
- }
- }
-
- throw new FunctionExecutionException(ErrorMessageKeys.FUNCTION_0007, QueryPlugin.Util.getString(ErrorMessageKeys.FUNCTION_0007, new Object[]{"power", x.getClass().getName(), y.getClass().getName()})); //$NON-NLS-1$
+
+ public static double power(double x, double y) {
+ return Math.pow(x, y);
}
+
+ public static BigInteger power(BigInteger x, int y) {
+ return x.pow(y);
+ }
+
+ public static BigDecimal power(BigDecimal x, int y) {
+ return x.pow(y);
+ }
public static int round(int number, int places) {
if(places < 0){
Modified: trunk/engine/src/main/java/com/metamatrix/query/function/source/SystemSource.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/function/source/SystemSource.java 2009-07-16 14:19:27 UTC (rev 1137)
+++ trunk/engine/src/main/java/com/metamatrix/query/function/source/SystemSource.java 2009-07-16 17:06:57 UTC (rev 1138)
@@ -298,6 +298,7 @@
private void addPowerFunction() {
addTypedPowerFunction(DataTypeManager.DefaultDataTypes.DOUBLE, DataTypeManager.DefaultDataTypes.DOUBLE);
addTypedPowerFunction(DataTypeManager.DefaultDataTypes.BIG_INTEGER, DataTypeManager.DefaultDataTypes.INTEGER);
+ addTypedPowerFunction(DataTypeManager.DefaultDataTypes.BIG_DECIMAL, DataTypeManager.DefaultDataTypes.INTEGER);
}
private void addTypedPowerFunction(String baseType, String powerType) {
Modified: trunk/engine/src/test/java/com/metamatrix/query/function/TestFunctionLibrary.java
===================================================================
--- trunk/engine/src/test/java/com/metamatrix/query/function/TestFunctionLibrary.java 2009-07-16 14:19:27 UTC (rev 1137)
+++ trunk/engine/src/test/java/com/metamatrix/query/function/TestFunctionLibrary.java 2009-07-16 17:06:57 UTC (rev 1138)
@@ -1341,6 +1341,10 @@
helpInvokeMethod("power", new Object[] { new Double("10"), new Double("2") }, new Double("100")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
+ @Test public void testInvokePower1() {
+ helpInvokeMethod("power", new Object[] { new BigDecimal("10"), new Integer(2) }, new BigDecimal("100")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+
@Test public void testInvokeSqrt() {
helpInvokeMethod("sqrt", new Object[] { new Double("4")}, new Double("2")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
More information about the teiid-commits
mailing list