You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by ti...@apache.org on 2012/06/19 10:43:23 UTC

svn commit: r1351603 - in /incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery: datamodel/accessors/atomic/ functions/ runtime/functions/arithmetic/

Author: tillw
Date: Tue Jun 19 08:43:22 2012
New Revision: 1351603

URL: http://svn.apache.org/viewvc?rev=1351603&view=rev
Log:
first implementation for subtraction, multiplication, and division
extended type support for addition

Added:
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/DivideOperation.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/DivideScalarEvaluatorFactory.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyOperation.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyScalarEvaluatorFactory.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/SubtractOperation.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/SubtractScalarEvaluatorFactory.java
Modified:
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/atomic/XSDecimalPointable.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/AddOperation.java

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/atomic/XSDecimalPointable.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/atomic/XSDecimalPointable.java?rev=1351603&r1=1351602&r2=1351603&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/atomic/XSDecimalPointable.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/atomic/XSDecimalPointable.java Tue Jun 19 08:43:22 2012
@@ -4,4 +4,19 @@ import edu.uci.ics.hyracks.data.std.api.
 
 public class XSDecimalPointable extends AbstractPointable {
 
+    public double doubleValue() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public float floatValue() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public long longValue() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
 }
\ No newline at end of file

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml?rev=1351603&r1=1351602&r2=1351603&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml Tue Jun 19 08:43:22 2012
@@ -602,6 +602,7 @@
         <param name="arg1" type="xs:anyAtomicType?"/>
         <param name="arg2" type="xs:anyAtomicType?"/>
         <return type="xs:anyAtomicType?"/>
+        <runtime type="scalar" class="org.apache.vxquery.runtime.functions.arithmetic.SubtractScalarEvaluatorFactory"/>
     </operator>
 
     <!-- opext:multiply($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:anyAtomicType? -->
@@ -609,6 +610,7 @@
         <param name="arg1" type="xs:anyAtomicType?"/>
         <param name="arg2" type="xs:anyAtomicType?"/>
         <return type="xs:anyAtomicType?"/>
+        <runtime type="scalar" class="org.apache.vxquery.runtime.functions.arithmetic.MultiplyScalarEvaluatorFactory"/>
     </operator>
 
     <!-- opext:divide($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:anyAtomicType? -->
@@ -616,6 +618,7 @@
         <param name="arg1" type="xs:anyAtomicType?"/>
         <param name="arg2" type="xs:anyAtomicType?"/>
         <return type="xs:anyAtomicType?"/>
+        <runtime type="scalar" class="org.apache.vxquery.runtime.functions.arithmetic.DivideScalarEvaluatorFactory"/>
     </operator>
 
     <!-- opext:idiv($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:anyAtomicType? -->

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/AddOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/AddOperation.java?rev=1351603&r1=1351602&r2=1351603&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/AddOperation.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/AddOperation.java Tue Jun 19 08:43:22 2012
@@ -17,29 +17,53 @@ public class AddOperation extends Abstra
     @Override
     public void operateDecimalDecimal(XSDecimalPointable decp1, XSDecimalPointable decp2, DataOutput dOut)
             throws Exception {
+        double value = decp1.doubleValue();
+        value += decp2.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DECIMAL_TYPE_ID);
+        dOut.writeDouble(value);
     }
 
     @Override
-    public void operateDecimalInteger(XSDecimalPointable decp1, LongPointable longp2, DataOutput dOut) throws Exception {
+    public void operateDecimalInteger(XSDecimalPointable decp, LongPointable longp, DataOutput dOut) throws Exception {
+        double value = decp.doubleValue();
+        value += longp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DECIMAL_TYPE_ID);
+        dOut.writeDouble(value);
     }
 
     @Override
     public void operateDecimalFloat(XSDecimalPointable decp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        float value = decp.floatValue();
+        value += floatp.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
     }
 
     @Override
     public void operateDecimalDouble(XSDecimalPointable decp, DoublePointable doublep, DataOutput dOut)
             throws Exception {
+        double value = decp.doubleValue();
+        value += doublep.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
     }
 
     @Override
     public void operateDecimalDTDuration(XSDecimalPointable decp, IntegerPointable intp, DataOutput dOut)
             throws Exception {
+        long value = decp.longValue();
+        value += intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
     }
 
     @Override
     public void operateDecimalYMDuration(XSDecimalPointable decp, IntegerPointable intp, DataOutput dOut)
             throws Exception {
+        long value = decp.longValue();
+        value += intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
     }
 
     @Override
@@ -57,7 +81,7 @@ public class AddOperation extends Abstra
 
     @Override
     public void operateIntegerFloat(LongPointable longp, FloatPointable floatp, DataOutput dOut) throws Exception {
-
+        operateFloatInteger(floatp, longp, dOut);
     }
 
     @Override
@@ -67,81 +91,97 @@ public class AddOperation extends Abstra
 
     @Override
     public void operateIntegerDTDuration(LongPointable longp, IntegerPointable intp, DataOutput dOut) throws Exception {
-
+        operateDTDurationInteger(intp, longp, dOut);
     }
 
     @Override
     public void operateIntegerYMDuration(LongPointable longp, IntegerPointable intp, DataOutput dOut) throws Exception {
-
+        long value = longp.longValue();
+        value += intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
     }
 
     @Override
     public void operateFloatDecimal(FloatPointable floatp, XSDecimalPointable decp, DataOutput dOut) throws Exception {
-
+        operateDecimalFloat(decp, floatp, dOut);
     }
 
     @Override
     public void operateFloatInteger(FloatPointable floatp, LongPointable longp, DataOutput dOut) throws Exception {
-
+        float value = floatp.floatValue();
+        value += longp.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
     }
 
     @Override
     public void operateFloatFloat(FloatPointable floatp, FloatPointable floatp2, DataOutput dOut) throws Exception {
-
+        float value = floatp.floatValue();
+        value += floatp2.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
     }
 
     @Override
     public void operateFloatDouble(FloatPointable floatp, DoublePointable doublep, DataOutput dOut) throws Exception {
-
+        operateDoubleFloat(doublep, floatp, dOut);
     }
 
     @Override
     public void operateFloatDTDuration(FloatPointable floatp, IntegerPointable intp, DataOutput dOut) throws Exception {
-
+        operateDTDurationFloat(intp, floatp, dOut);
     }
 
     @Override
     public void operateFloatYMDuration(FloatPointable floatp, IntegerPointable intp, DataOutput dOut) throws Exception {
-
+        operateYMDurationFloat(intp, floatp, dOut);
     }
 
     @Override
     public void operateDoubleDecimal(DoublePointable doublep, XSDecimalPointable decp, DataOutput dOut)
             throws Exception {
-
+        operateDecimalDouble(decp, doublep, dOut);
     }
 
     @Override
     public void operateDoubleInteger(DoublePointable doublep, LongPointable longp, DataOutput dOut) throws Exception {
-        double value = longp.doubleValue();
-        System.err.println(value);
-        value += doublep.doubleValue();
-        System.err.println(value);
+        double value = doublep.doubleValue();
+        value += longp.doubleValue();
         dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
         dOut.writeDouble(value);
     }
 
     @Override
     public void operateDoubleFloat(DoublePointable doublep, FloatPointable floatp, DataOutput dOut) throws Exception {
-
+        double value = doublep.doubleValue();
+        value += floatp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
     }
 
     @Override
     public void operateDoubleDouble(DoublePointable doublep, DoublePointable doublep2, DataOutput dOut)
             throws Exception {
-
+        double value = doublep.doubleValue();
+        value += doublep2.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
     }
 
     @Override
     public void operateDoubleDTDuration(DoublePointable doublep, IntegerPointable intp, DataOutput dOut)
             throws Exception {
-
+        operateDTDurationDouble(intp, doublep, dOut);
     }
 
     @Override
     public void operateDoubleYMDuration(DoublePointable doublep, IntegerPointable intp, DataOutput dOut)
             throws Exception {
-
+        long value = doublep.longValue();
+        value += intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
     }
 
     @Override
@@ -195,23 +235,32 @@ public class AddOperation extends Abstra
     @Override
     public void operateDTDurationDecimal(IntegerPointable intp, XSDecimalPointable decp, DataOutput dOut)
             throws Exception {
-
+        operateDecimalDTDuration(decp, intp, dOut);
     }
 
     @Override
     public void operateDTDurationInteger(IntegerPointable intp, LongPointable longp, DataOutput dOut) throws Exception {
-
+        long value = intp.longValue();
+        value += longp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
     }
 
     @Override
     public void operateDTDurationFloat(IntegerPointable intp, FloatPointable floatp, DataOutput dOut) throws Exception {
-
+        long value = intp.longValue();
+        value += floatp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
     }
 
     @Override
     public void operateDTDurationDouble(IntegerPointable intp, DoublePointable doublep, DataOutput dOut)
             throws Exception {
-
+        long value = intp.longValue();
+        value += doublep.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
     }
 
     @Override
@@ -233,29 +282,32 @@ public class AddOperation extends Abstra
     @Override
     public void operateDTDurationDTDuration(IntegerPointable intp, IntegerPointable intp2, DataOutput dOut)
             throws Exception {
-
+        long value = intp.longValue();
+        value += intp2.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
     }
 
     @Override
     public void operateYMDurationDecimal(IntegerPointable intp, XSDecimalPointable decp, DataOutput dOut)
             throws Exception {
-
+        operateDecimalYMDuration(decp, intp, dOut);
     }
 
     @Override
     public void operateYMDurationInteger(IntegerPointable intp, LongPointable longp, DataOutput dOut) throws Exception {
-
+        operateIntegerYMDuration(longp, intp, dOut);
     }
 
     @Override
     public void operateYMDurationFloat(IntegerPointable intp, FloatPointable floatp, DataOutput dOut) throws Exception {
-
+        operateFloatYMDuration(floatp, intp, dOut);
     }
 
     @Override
     public void operateYMDurationDouble(IntegerPointable intp, DoublePointable doublep, DataOutput dOut)
             throws Exception {
-
+        operateDoubleYMDuration(doublep, intp, dOut);
     }
 
     @Override
@@ -277,6 +329,9 @@ public class AddOperation extends Abstra
     @Override
     public void operateYMDurationYMDuration(IntegerPointable intp, IntegerPointable intp2, DataOutput dOut)
             throws Exception {
-
+        long value = intp.longValue();
+        value += intp2.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
     }
 }
\ No newline at end of file

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/DivideOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/DivideOperation.java?rev=1351603&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/DivideOperation.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/DivideOperation.java Tue Jun 19 08:43:22 2012
@@ -0,0 +1,382 @@
+package org.apache.vxquery.runtime.functions.arithmetic;
+
+import java.io.DataOutput;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSTimePointable;
+import org.apache.vxquery.types.BuiltinTypeConstants;
+
+import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
+import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
+import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
+import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+
+public class DivideOperation extends AbstractArithmeticOperation {
+    @Override
+    public void operateDecimalDecimal(XSDecimalPointable decp1, XSDecimalPointable decp2, DataOutput dOut)
+            throws Exception {
+        double value = decp1.doubleValue();
+        value /= decp2.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DECIMAL_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDecimalInteger(XSDecimalPointable decp, LongPointable longp, DataOutput dOut) throws Exception {
+        double value = decp.doubleValue();
+        value /= longp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DECIMAL_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDecimalFloat(XSDecimalPointable decp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        float value = decp.floatValue();
+        value /= floatp.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void operateDecimalDouble(XSDecimalPointable decp, DoublePointable doublep, DataOutput dOut)
+            throws Exception {
+        double value = decp.doubleValue();
+        value /= doublep.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDecimalDTDuration(XSDecimalPointable decp, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+        long value = decp.longValue();
+        value /= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDecimalYMDuration(XSDecimalPointable decp, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+        long value = decp.longValue();
+        value /= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateIntegerDecimal(LongPointable longp, XSDecimalPointable decp, DataOutput dOut) throws Exception {
+        double value = longp.doubleValue();
+        value /= decp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DECIMAL_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateIntegerInteger(LongPointable longp, LongPointable longp2, DataOutput dOut) throws Exception {
+        long value = longp.getLong();
+        value /= longp2.getLong();
+        dOut.write(BuiltinTypeConstants.XS_INTEGER_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateIntegerFloat(LongPointable longp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        float value = longp.floatValue();
+        value /= floatp.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void operateIntegerDouble(LongPointable longp, DoublePointable doublep, DataOutput dOut) throws Exception {
+        double value = longp.doubleValue();
+        value /= doublep.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateIntegerDTDuration(LongPointable longp, IntegerPointable intp, DataOutput dOut) throws Exception {
+        long value = longp.longValue();
+        value /= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateIntegerYMDuration(LongPointable longp, IntegerPointable intp, DataOutput dOut) throws Exception {
+        long value = longp.longValue();
+        value /= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateFloatDecimal(FloatPointable floatp, XSDecimalPointable decp, DataOutput dOut) throws Exception {
+        float value = floatp.floatValue();
+        value /= decp.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateFloatInteger(FloatPointable floatp, LongPointable longp, DataOutput dOut) throws Exception {
+        float value = floatp.floatValue();
+        value /= longp.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void operateFloatFloat(FloatPointable floatp, FloatPointable floatp2, DataOutput dOut) throws Exception {
+        float value = floatp.floatValue();
+        value /= floatp2.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void operateFloatDouble(FloatPointable floatp, DoublePointable doublep, DataOutput dOut) throws Exception {
+        double value = floatp.doubleValue();
+        value /= doublep.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateFloatDTDuration(FloatPointable floatp, IntegerPointable intp, DataOutput dOut) throws Exception {
+        long value = floatp.longValue();
+        value /= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateFloatYMDuration(FloatPointable floatp, IntegerPointable intp, DataOutput dOut) throws Exception {
+        long value = floatp.longValue();
+        value /= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDoubleDecimal(DoublePointable doublep, XSDecimalPointable decp, DataOutput dOut)
+            throws Exception {
+        double value = doublep.doubleValue();
+        value /= decp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDoubleInteger(DoublePointable doublep, LongPointable longp, DataOutput dOut) throws Exception {
+        double value = doublep.doubleValue();
+        value /= longp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDoubleFloat(DoublePointable doublep, FloatPointable floatp, DataOutput dOut) throws Exception {
+        double value = doublep.doubleValue();
+        value /= floatp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDoubleDouble(DoublePointable doublep, DoublePointable doublep2, DataOutput dOut)
+            throws Exception {
+        double value = doublep.doubleValue();
+        value /= doublep2.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDoubleDTDuration(DoublePointable doublep, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+        long value = doublep.longValue();
+        value /= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDoubleYMDuration(DoublePointable doublep, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+        long value = doublep.longValue();
+        value /= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDateDate(XSDatePointable datep, XSDatePointable datep2, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDateDTDuration(XSDatePointable datep, IntegerPointable intp, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDateYMDuration(XSDatePointable datep, IntegerPointable intp, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDatetimeDatetime(XSDateTimePointable datetimep, XSDateTimePointable datetimep2, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateDatetimeDTDuration(XSDateTimePointable datetimep, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateDatetimeYMDuration(XSDateTimePointable datetimep, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateTimeTime(XSTimePointable timep, XSTimePointable timep2, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateTimeDTDuration(XSTimePointable timep, IntegerPointable intp, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateTimeYMDuration(XSTimePointable timep, IntegerPointable intp, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDTDurationDecimal(IntegerPointable intp, XSDecimalPointable decp, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value /= decp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDTDurationInteger(IntegerPointable intp, LongPointable longp, DataOutput dOut) throws Exception {
+        long value = intp.longValue();
+        value /= longp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDTDurationFloat(IntegerPointable intp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        long value = intp.longValue();
+        value /= floatp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDTDurationDouble(IntegerPointable intp, DoublePointable doublep, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value /= doublep.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDTDurationDate(IntegerPointable intp, XSDatePointable datep, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDTDurationTime(IntegerPointable intp, XSTimePointable timep, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDTDurationDatetime(IntegerPointable intp, XSDateTimePointable datetimep, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateDTDurationDTDuration(IntegerPointable intp, IntegerPointable intp2, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value /= intp2.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateYMDurationDecimal(IntegerPointable intp, XSDecimalPointable decp, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value /= decp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateYMDurationInteger(IntegerPointable intp, LongPointable longp, DataOutput dOut) throws Exception {
+        long value = intp.longValue();
+        value /= longp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateYMDurationFloat(IntegerPointable intp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        long value = intp.longValue();
+        value /= floatp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateYMDurationDouble(IntegerPointable intp, DoublePointable doublep, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value /= doublep.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateYMDurationDate(IntegerPointable intp, XSDatePointable datep, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateYMDurationTime(IntegerPointable intp, XSTimePointable timep, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateYMDurationDatetime(IntegerPointable intp, XSDateTimePointable datetimep, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateYMDurationYMDuration(IntegerPointable intp, IntegerPointable intp2, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value /= intp2.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+}
\ No newline at end of file

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/DivideScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/DivideScalarEvaluatorFactory.java?rev=1351603&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/DivideScalarEvaluatorFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/DivideScalarEvaluatorFactory.java Tue Jun 19 08:43:22 2012
@@ -0,0 +1,16 @@
+package org.apache.vxquery.runtime.functions.arithmetic;
+
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+
+public class DivideScalarEvaluatorFactory extends AbstractArithmeticScalarEvaluatorFactory {
+    private static final long serialVersionUID = 1L;
+
+    public DivideScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+        super(args);
+    }
+
+    @Override
+    protected AbstractArithmeticOperation createArithmeticOperation() {
+        return new DivideOperation();
+    }
+}
\ No newline at end of file

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyOperation.java?rev=1351603&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyOperation.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyOperation.java Tue Jun 19 08:43:22 2012
@@ -0,0 +1,337 @@
+package org.apache.vxquery.runtime.functions.arithmetic;
+
+import java.io.DataOutput;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSTimePointable;
+import org.apache.vxquery.types.BuiltinTypeConstants;
+
+import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
+import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
+import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
+import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+
+public class MultiplyOperation extends AbstractArithmeticOperation {
+    @Override
+    public void operateDecimalDecimal(XSDecimalPointable decp1, XSDecimalPointable decp2, DataOutput dOut)
+            throws Exception {
+        double value = decp1.doubleValue();
+        value *= decp2.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DECIMAL_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDecimalInteger(XSDecimalPointable decp, LongPointable longp, DataOutput dOut) throws Exception {
+        double value = decp.doubleValue();
+        value *= longp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DECIMAL_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDecimalFloat(XSDecimalPointable decp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        float value = decp.floatValue();
+        value *= floatp.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void operateDecimalDouble(XSDecimalPointable decp, DoublePointable doublep, DataOutput dOut)
+            throws Exception {
+        double value = decp.doubleValue();
+        value *= doublep.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDecimalDTDuration(XSDecimalPointable decp, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+        long value = decp.longValue();
+        value *= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDecimalYMDuration(XSDecimalPointable decp, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+        long value = decp.longValue();
+        value *= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateIntegerDecimal(LongPointable longp, XSDecimalPointable decp, DataOutput dOut) throws Exception {
+        operateDecimalInteger(decp, longp, dOut);
+    }
+
+    @Override
+    public void operateIntegerInteger(LongPointable longp, LongPointable longp2, DataOutput dOut) throws Exception {
+        long value = longp.getLong();
+        value *= longp2.getLong();
+        dOut.write(BuiltinTypeConstants.XS_INTEGER_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateIntegerFloat(LongPointable longp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        operateFloatInteger(floatp, longp, dOut);
+    }
+
+    @Override
+    public void operateIntegerDouble(LongPointable longp, DoublePointable doublep, DataOutput dOut) throws Exception {
+        operateDoubleInteger(doublep, longp, dOut);
+    }
+
+    @Override
+    public void operateIntegerDTDuration(LongPointable longp, IntegerPointable intp, DataOutput dOut) throws Exception {
+        operateDTDurationInteger(intp, longp, dOut);
+    }
+
+    @Override
+    public void operateIntegerYMDuration(LongPointable longp, IntegerPointable intp, DataOutput dOut) throws Exception {
+        long value = longp.longValue();
+        value *= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateFloatDecimal(FloatPointable floatp, XSDecimalPointable decp, DataOutput dOut) throws Exception {
+        operateDecimalFloat(decp, floatp, dOut);
+    }
+
+    @Override
+    public void operateFloatInteger(FloatPointable floatp, LongPointable longp, DataOutput dOut) throws Exception {
+        float value = floatp.floatValue();
+        value *= longp.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void operateFloatFloat(FloatPointable floatp, FloatPointable floatp2, DataOutput dOut) throws Exception {
+        float value = floatp.floatValue();
+        value *= floatp2.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void operateFloatDouble(FloatPointable floatp, DoublePointable doublep, DataOutput dOut) throws Exception {
+        operateDoubleFloat(doublep, floatp, dOut);
+    }
+
+    @Override
+    public void operateFloatDTDuration(FloatPointable floatp, IntegerPointable intp, DataOutput dOut) throws Exception {
+        operateDTDurationFloat(intp, floatp, dOut);
+    }
+
+    @Override
+    public void operateFloatYMDuration(FloatPointable floatp, IntegerPointable intp, DataOutput dOut) throws Exception {
+        operateYMDurationFloat(intp, floatp, dOut);
+    }
+
+    @Override
+    public void operateDoubleDecimal(DoublePointable doublep, XSDecimalPointable decp, DataOutput dOut)
+            throws Exception {
+        operateDecimalDouble(decp, doublep, dOut);
+    }
+
+    @Override
+    public void operateDoubleInteger(DoublePointable doublep, LongPointable longp, DataOutput dOut) throws Exception {
+        double value = doublep.doubleValue();
+        value *= longp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDoubleFloat(DoublePointable doublep, FloatPointable floatp, DataOutput dOut) throws Exception {
+        double value = doublep.doubleValue();
+        value *= floatp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDoubleDouble(DoublePointable doublep, DoublePointable doublep2, DataOutput dOut)
+            throws Exception {
+        double value = doublep.doubleValue();
+        value *= doublep2.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDoubleDTDuration(DoublePointable doublep, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+operateDTDurationDouble(intp, doublep, dOut);
+    }
+
+    @Override
+    public void operateDoubleYMDuration(DoublePointable doublep, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+        long value = doublep.longValue();
+        value *= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDateDate(XSDatePointable datep, XSDatePointable datep2, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDateDTDuration(XSDatePointable datep, IntegerPointable intp, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDateYMDuration(XSDatePointable datep, IntegerPointable intp, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDatetimeDatetime(XSDateTimePointable datetimep, XSDateTimePointable datetimep2, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateDatetimeDTDuration(XSDateTimePointable datetimep, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateDatetimeYMDuration(XSDateTimePointable datetimep, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateTimeTime(XSTimePointable timep, XSTimePointable timep2, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateTimeDTDuration(XSTimePointable timep, IntegerPointable intp, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateTimeYMDuration(XSTimePointable timep, IntegerPointable intp, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDTDurationDecimal(IntegerPointable intp, XSDecimalPointable decp, DataOutput dOut)
+            throws Exception {
+        operateDecimalDTDuration(decp, intp, dOut);
+    }
+
+    @Override
+    public void operateDTDurationInteger(IntegerPointable intp, LongPointable longp, DataOutput dOut) throws Exception {
+        long value = intp.longValue();
+        value *= longp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDTDurationFloat(IntegerPointable intp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        long value = intp.longValue();
+        value *= floatp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDTDurationDouble(IntegerPointable intp, DoublePointable doublep, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value *= doublep.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDTDurationDate(IntegerPointable intp, XSDatePointable datep, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDTDurationTime(IntegerPointable intp, XSTimePointable timep, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDTDurationDatetime(IntegerPointable intp, XSDateTimePointable datetimep, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateDTDurationDTDuration(IntegerPointable intp, IntegerPointable intp2, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value *= intp2.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateYMDurationDecimal(IntegerPointable intp, XSDecimalPointable decp, DataOutput dOut)
+            throws Exception {
+        operateDecimalYMDuration(decp, intp, dOut);
+    }
+
+    @Override
+    public void operateYMDurationInteger(IntegerPointable intp, LongPointable longp, DataOutput dOut) throws Exception {
+        operateIntegerYMDuration(longp, intp, dOut);
+    }
+
+    @Override
+    public void operateYMDurationFloat(IntegerPointable intp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        operateFloatYMDuration(floatp, intp, dOut);
+    }
+
+    @Override
+    public void operateYMDurationDouble(IntegerPointable intp, DoublePointable doublep, DataOutput dOut)
+            throws Exception {
+        operateDoubleYMDuration(doublep, intp, dOut);
+    }
+
+    @Override
+    public void operateYMDurationDate(IntegerPointable intp, XSDatePointable datep, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateYMDurationTime(IntegerPointable intp, XSTimePointable timep, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateYMDurationDatetime(IntegerPointable intp, XSDateTimePointable datetimep, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateYMDurationYMDuration(IntegerPointable intp, IntegerPointable intp2, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value *= intp2.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+}
\ No newline at end of file

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyScalarEvaluatorFactory.java?rev=1351603&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyScalarEvaluatorFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyScalarEvaluatorFactory.java Tue Jun 19 08:43:22 2012
@@ -0,0 +1,16 @@
+package org.apache.vxquery.runtime.functions.arithmetic;
+
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+
+public class MultiplyScalarEvaluatorFactory extends AbstractArithmeticScalarEvaluatorFactory {
+    private static final long serialVersionUID = 1L;
+
+    public MultiplyScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+        super(args);
+    }
+
+    @Override
+    protected AbstractArithmeticOperation createArithmeticOperation() {
+        return new MultiplyOperation();
+    }
+}
\ No newline at end of file

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/SubtractOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/SubtractOperation.java?rev=1351603&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/SubtractOperation.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/SubtractOperation.java Tue Jun 19 08:43:22 2012
@@ -0,0 +1,382 @@
+package org.apache.vxquery.runtime.functions.arithmetic;
+
+import java.io.DataOutput;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSTimePointable;
+import org.apache.vxquery.types.BuiltinTypeConstants;
+
+import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
+import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
+import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
+import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+
+public class SubtractOperation extends AbstractArithmeticOperation {
+    @Override
+    public void operateDecimalDecimal(XSDecimalPointable decp1, XSDecimalPointable decp2, DataOutput dOut)
+            throws Exception {
+        double value = decp1.doubleValue();
+        value -= decp2.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DECIMAL_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDecimalInteger(XSDecimalPointable decp, LongPointable longp, DataOutput dOut) throws Exception {
+        double value = decp.doubleValue();
+        value -= longp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DECIMAL_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDecimalFloat(XSDecimalPointable decp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        float value = decp.floatValue();
+        value -= floatp.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void operateDecimalDouble(XSDecimalPointable decp, DoublePointable doublep, DataOutput dOut)
+            throws Exception {
+        double value = decp.doubleValue();
+        value -= doublep.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDecimalDTDuration(XSDecimalPointable decp, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+        long value = decp.longValue();
+        value -= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDecimalYMDuration(XSDecimalPointable decp, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+        long value = decp.longValue();
+        value -= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateIntegerDecimal(LongPointable longp, XSDecimalPointable decp, DataOutput dOut) throws Exception {
+        double value = longp.doubleValue();
+        value -= decp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DECIMAL_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateIntegerInteger(LongPointable longp, LongPointable longp2, DataOutput dOut) throws Exception {
+        long value = longp.getLong();
+        value -= longp2.getLong();
+        dOut.write(BuiltinTypeConstants.XS_INTEGER_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateIntegerFloat(LongPointable longp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        float value = longp.floatValue();
+        value -= floatp.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void operateIntegerDouble(LongPointable longp, DoublePointable doublep, DataOutput dOut) throws Exception {
+        double value = longp.doubleValue();
+        value -= doublep.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateIntegerDTDuration(LongPointable longp, IntegerPointable intp, DataOutput dOut) throws Exception {
+        long value = longp.longValue();
+        value -= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateIntegerYMDuration(LongPointable longp, IntegerPointable intp, DataOutput dOut) throws Exception {
+        long value = longp.longValue();
+        value -= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateFloatDecimal(FloatPointable floatp, XSDecimalPointable decp, DataOutput dOut) throws Exception {
+        float value = floatp.floatValue();
+        value -= decp.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateFloatInteger(FloatPointable floatp, LongPointable longp, DataOutput dOut) throws Exception {
+        float value = floatp.floatValue();
+        value -= longp.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void operateFloatFloat(FloatPointable floatp, FloatPointable floatp2, DataOutput dOut) throws Exception {
+        float value = floatp.floatValue();
+        value -= floatp2.floatValue();
+        dOut.write(BuiltinTypeConstants.XS_FLOAT_TYPE_ID);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void operateFloatDouble(FloatPointable floatp, DoublePointable doublep, DataOutput dOut) throws Exception {
+        double value = floatp.doubleValue();
+        value -= doublep.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateFloatDTDuration(FloatPointable floatp, IntegerPointable intp, DataOutput dOut) throws Exception {
+        long value = floatp.longValue();
+        value -= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateFloatYMDuration(FloatPointable floatp, IntegerPointable intp, DataOutput dOut) throws Exception {
+        long value = floatp.longValue();
+        value -= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDoubleDecimal(DoublePointable doublep, XSDecimalPointable decp, DataOutput dOut)
+            throws Exception {
+        double value = doublep.doubleValue();
+        value -= decp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDoubleInteger(DoublePointable doublep, LongPointable longp, DataOutput dOut) throws Exception {
+        double value = doublep.doubleValue();
+        value -= longp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDoubleFloat(DoublePointable doublep, FloatPointable floatp, DataOutput dOut) throws Exception {
+        double value = doublep.doubleValue();
+        value -= floatp.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDoubleDouble(DoublePointable doublep, DoublePointable doublep2, DataOutput dOut)
+            throws Exception {
+        double value = doublep.doubleValue();
+        value -= doublep2.doubleValue();
+        dOut.write(BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void operateDoubleDTDuration(DoublePointable doublep, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+        long value = doublep.longValue();
+        value -= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDoubleYMDuration(DoublePointable doublep, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+        long value = doublep.longValue();
+        value -= intp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDateDate(XSDatePointable datep, XSDatePointable datep2, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDateDTDuration(XSDatePointable datep, IntegerPointable intp, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDateYMDuration(XSDatePointable datep, IntegerPointable intp, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDatetimeDatetime(XSDateTimePointable datetimep, XSDateTimePointable datetimep2, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateDatetimeDTDuration(XSDateTimePointable datetimep, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateDatetimeYMDuration(XSDateTimePointable datetimep, IntegerPointable intp, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateTimeTime(XSTimePointable timep, XSTimePointable timep2, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateTimeDTDuration(XSTimePointable timep, IntegerPointable intp, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateTimeYMDuration(XSTimePointable timep, IntegerPointable intp, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDTDurationDecimal(IntegerPointable intp, XSDecimalPointable decp, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value -= decp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDTDurationInteger(IntegerPointable intp, LongPointable longp, DataOutput dOut) throws Exception {
+        long value = intp.longValue();
+        value -= longp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDTDurationFloat(IntegerPointable intp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        long value = intp.longValue();
+        value -= floatp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDTDurationDouble(IntegerPointable intp, DoublePointable doublep, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value -= doublep.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateDTDurationDate(IntegerPointable intp, XSDatePointable datep, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDTDurationTime(IntegerPointable intp, XSTimePointable timep, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateDTDurationDatetime(IntegerPointable intp, XSDateTimePointable datetimep, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateDTDurationDTDuration(IntegerPointable intp, IntegerPointable intp2, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value -= intp2.longValue();
+        dOut.write(BuiltinTypeConstants.XS_DAY_TIME_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateYMDurationDecimal(IntegerPointable intp, XSDecimalPointable decp, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value -= decp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateYMDurationInteger(IntegerPointable intp, LongPointable longp, DataOutput dOut) throws Exception {
+        long value = intp.longValue();
+        value -= longp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateYMDurationFloat(IntegerPointable intp, FloatPointable floatp, DataOutput dOut) throws Exception {
+        long value = intp.longValue();
+        value -= floatp.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateYMDurationDouble(IntegerPointable intp, DoublePointable doublep, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value -= doublep.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void operateYMDurationDate(IntegerPointable intp, XSDatePointable datep, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateYMDurationTime(IntegerPointable intp, XSTimePointable timep, DataOutput dOut) throws Exception {
+
+    }
+
+    @Override
+    public void operateYMDurationDatetime(IntegerPointable intp, XSDateTimePointable datetimep, DataOutput dOut)
+            throws Exception {
+
+    }
+
+    @Override
+    public void operateYMDurationYMDuration(IntegerPointable intp, IntegerPointable intp2, DataOutput dOut)
+            throws Exception {
+        long value = intp.longValue();
+        value -= intp2.longValue();
+        dOut.write(BuiltinTypeConstants.XS_YEAR_MONTH_DURATION_TYPE_ID);
+        dOut.writeLong(value);
+    }
+}
\ No newline at end of file

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/SubtractScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/SubtractScalarEvaluatorFactory.java?rev=1351603&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/SubtractScalarEvaluatorFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/SubtractScalarEvaluatorFactory.java Tue Jun 19 08:43:22 2012
@@ -0,0 +1,16 @@
+package org.apache.vxquery.runtime.functions.arithmetic;
+
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+
+public class SubtractScalarEvaluatorFactory extends AbstractArithmeticScalarEvaluatorFactory {
+    private static final long serialVersionUID = 1L;
+
+    public SubtractScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+        super(args);
+    }
+
+    @Override
+    protected AbstractArithmeticOperation createArithmeticOperation() {
+        return new SubtractOperation();
+    }
+}
\ No newline at end of file