You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by pr...@apache.org on 2012/08/23 02:40:19 UTC
svn commit: r1376335 - in
/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery:
datamodel/util/ runtime/functions/comparison/
Author: prestonc
Date: Thu Aug 23 00:40:19 2012
New Revision: 1376335
URL: http://svn.apache.org/viewvc?rev=1376335&view=rev
Log:
Went through many of the Value Comparison test and fixed several types of errors.
* Wrong use of the array back value store
* Missing functions
* Bad date manipulation
* Added missing errors
Modified:
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/util/DateTime.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractDisjunctiveComparisonOperation.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractNegatingComparisonOperation.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonOperation.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/ValueEqComparisonOperation.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/ValueLtComparisonOperation.java
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/util/DateTime.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/util/DateTime.java?rev=1376335&r1=1376334&r2=1376335&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/util/DateTime.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/util/DateTime.java Thu Aug 23 00:40:19 2012
@@ -109,8 +109,8 @@ public class DateTime {
long minute = dayTime / CHRONON_OF_MINUTE;
dayTime %= CHRONON_OF_MINUTE;
long millisecond = dayTime;
- long month = yearMonth % 12;
- long year = yearMonth / 12;
+ long month = (yearMonth % 12 == 0 ? 12 : yearMonth % 12);
+ long year = (yearMonth / 12) + (month == 12 ? -1 : 0);
monthDayLimits = (isLeapYear(year) ? DateTime.DAYS_OF_MONTH_LEAP : DateTime.DAYS_OF_MONTH_ORDI);
while (day < DateTime.FIELD_MINS[DateTime.DAY_FIELD_INDEX] || day > monthDayLimits[(int) month - 1]
@@ -163,8 +163,8 @@ public class DateTime {
timezoneHour = timezonep.getTimezoneHour();
timezoneMinute = timezonep.getTimezoneMinute();
}
- long dayTime = timezonep.getDayTime() + timezoneHour * DateTime.CHRONON_OF_HOUR + timezoneMinute
- * DateTime.CHRONON_OF_HOUR;
+ long dayTime = timezonep.getDayTime() - (timezoneHour * DateTime.CHRONON_OF_HOUR + timezoneMinute
+ * DateTime.CHRONON_OF_HOUR);
DateTime.normalizeDateTime(timezonep.getYearMonth(), dayTime, dOut);
}
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractDisjunctiveComparisonOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractDisjunctiveComparisonOperation.java?rev=1376335&r1=1376334&r2=1376335&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractDisjunctiveComparisonOperation.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractDisjunctiveComparisonOperation.java Thu Aug 23 00:40:19 2012
@@ -114,6 +114,20 @@ public abstract class AbstractDisjunctiv
}
@Override
+ public boolean operateDTDurationDuration(LongPointable longp1, XSDurationPointable durationp2)
+ throws SystemException, IOException {
+ return (aOp1.operateDTDurationDuration(longp1, durationp2) || aOp2
+ .operateDTDurationDuration(longp1, durationp2));
+ }
+
+ @Override
+ public boolean operateDurationDTDuration(XSDurationPointable durationp1, LongPointable longp2)
+ throws SystemException, IOException {
+ return (aOp1.operateDurationDTDuration(durationp1, longp2) || aOp2
+ .operateDurationDTDuration(durationp1, longp2));
+ }
+
+ @Override
public boolean operateDurationDuration(XSDurationPointable durationp1, XSDurationPointable durationp2)
throws SystemException, IOException {
return (aOp1.operateDurationDuration(durationp1, durationp2) || aOp2.operateDurationDuration(durationp1,
@@ -121,6 +135,12 @@ public abstract class AbstractDisjunctiv
}
@Override
+ public boolean operateDurationYMDuration(XSDurationPointable durationp1, IntegerPointable intp2)
+ throws SystemException, IOException {
+ return (aOp1.operateDurationYMDuration(durationp1, intp2) || aOp2.operateDurationYMDuration(durationp1, intp2));
+ }
+
+ @Override
public boolean operateFloatDecimal(FloatPointable floatp1, XSDecimalPointable decp2) throws SystemException,
IOException {
return (aOp1.operateFloatDecimal(floatp1, decp2) || aOp2.operateFloatDecimal(floatp1, decp2));
@@ -232,6 +252,12 @@ public abstract class AbstractDisjunctiv
}
@Override
+ public boolean operateYMDurationDuration(IntegerPointable intp1, XSDurationPointable durationp2)
+ throws SystemException, IOException {
+ return (aOp1.operateYMDurationDuration(intp1, durationp2) || aOp2.operateYMDurationDuration(intp1, durationp2));
+ }
+
+ @Override
public boolean operateYMDurationYMDuration(IntegerPointable intp1, IntegerPointable intp2) throws SystemException,
IOException {
return (aOp1.operateYMDurationYMDuration(intp1, intp2) || aOp2.operateYMDurationYMDuration(intp1, intp2));
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractNegatingComparisonOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractNegatingComparisonOperation.java?rev=1376335&r1=1376334&r2=1376335&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractNegatingComparisonOperation.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractNegatingComparisonOperation.java Thu Aug 23 00:40:19 2012
@@ -109,12 +109,30 @@ public abstract class AbstractNegatingCo
}
@Override
+ public boolean operateDTDurationDuration(LongPointable longp1, XSDurationPointable durationp2)
+ throws SystemException, IOException {
+ return !aOp.operateDTDurationDuration(longp1, durationp2);
+ }
+
+ @Override
+ public boolean operateDurationDTDuration(XSDurationPointable durationp1, LongPointable longp2)
+ throws SystemException, IOException {
+ return !aOp.operateDurationDTDuration(durationp1, longp2);
+ }
+
+ @Override
public boolean operateDurationDuration(XSDurationPointable durationp1, XSDurationPointable durationp2)
throws SystemException, IOException {
return !aOp.operateDurationDuration(durationp1, durationp2);
}
@Override
+ public boolean operateDurationYMDuration(XSDurationPointable durationp1, IntegerPointable intp2)
+ throws SystemException, IOException {
+ return !aOp.operateDurationYMDuration(durationp1, intp2);
+ }
+
+ @Override
public boolean operateFloatDecimal(FloatPointable floatp1, XSDecimalPointable decp2) throws SystemException,
IOException {
return !aOp.operateFloatDecimal(floatp1, decp2);
@@ -223,6 +241,12 @@ public abstract class AbstractNegatingCo
}
@Override
+ public boolean operateYMDurationDuration(IntegerPointable intp1, XSDurationPointable durationp2)
+ throws SystemException, IOException {
+ return !aOp.operateYMDurationDuration(intp1, durationp2);
+ }
+
+ @Override
public boolean operateYMDurationYMDuration(IntegerPointable intp1, IntegerPointable intp2) throws SystemException,
IOException {
return !aOp.operateYMDurationYMDuration(intp1, intp2);
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonOperation.java?rev=1376335&r1=1376334&r2=1376335&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonOperation.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonOperation.java Thu Aug 23 00:40:19 2012
@@ -62,9 +62,18 @@ public abstract class AbstractValueCompa
public abstract boolean operateDTDurationDTDuration(LongPointable longp1, LongPointable longp2)
throws SystemException, IOException;
+ public abstract boolean operateDTDurationDuration(LongPointable longp1, XSDurationPointable durationp2)
+ throws SystemException, IOException;
+
+ public abstract boolean operateDurationDTDuration(XSDurationPointable durationp1, LongPointable longp2)
+ throws SystemException, IOException;
+
public abstract boolean operateDurationDuration(XSDurationPointable durationp1, XSDurationPointable durationp2)
throws SystemException, IOException;
+ public abstract boolean operateDurationYMDuration(XSDurationPointable durationp1, IntegerPointable intp2)
+ throws SystemException, IOException;
+
public abstract boolean operateFloatDecimal(FloatPointable floatp1, XSDecimalPointable decp2)
throws SystemException, IOException;
@@ -119,6 +128,9 @@ public abstract class AbstractValueCompa
public abstract boolean operateTimeTime(XSTimePointable timep1, XSTimePointable timep2, DynamicContext dCtx)
throws SystemException, IOException;
+ public abstract boolean operateYMDurationDuration(IntegerPointable intp1, XSDurationPointable durationp2)
+ throws SystemException, IOException;
+
public abstract boolean operateYMDurationYMDuration(IntegerPointable intp1, IntegerPointable intp2)
throws SystemException, IOException;
}
\ No newline at end of file
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java?rev=1376335&r1=1376334&r2=1376335&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java Thu Aug 23 00:40:19 2012
@@ -16,6 +16,9 @@
*/
package org.apache.vxquery.runtime.functions.comparison;
+import java.io.DataOutput;
+import java.io.IOException;
+
import org.apache.vxquery.context.DynamicContext;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
import org.apache.vxquery.datamodel.accessors.atomic.XSBinaryPointable;
@@ -38,11 +41,14 @@ import edu.uci.ics.hyracks.algebricks.ru
import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
import edu.uci.ics.hyracks.data.std.api.IPointable;
import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.data.std.primitive.BytePointable;
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;
+import edu.uci.ics.hyracks.data.std.primitive.ShortPointable;
import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
public abstract class AbstractValueComparisonScalarEvaluatorFactory extends
AbstractTaggedValueArgumentScalarEvaluatorFactory {
@@ -56,6 +62,10 @@ public abstract class AbstractValueCompa
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
throws AlgebricksException {
final AbstractValueComparisonOperation aOp = createValueComparisonOperation();
+ final ArrayBackedValueStorage abvsInteger1 = new ArrayBackedValueStorage();
+ final DataOutput dOutInteger1 = abvsInteger1.getDataOutput();
+ final ArrayBackedValueStorage abvsInteger2 = new ArrayBackedValueStorage();
+ final DataOutput dOutInteger2 = abvsInteger2.getDataOutput();
final TypedPointables tp1 = new TypedPointables();
final TypedPointables tp2 = new TypedPointables();
final DynamicContext dCtx = (DynamicContext) ctx.getJobletContext().getGlobalJobData();
@@ -79,6 +89,46 @@ public abstract class AbstractValueCompa
throw new UnsupportedOperationException();
}
try {
+ LongPointable longp1 = (LongPointable) LongPointable.FACTORY.createPointable();
+ switch (tvp1.getTag()) {
+ case ValueTag.XS_INTEGER_TAG:
+ case ValueTag.XS_NON_POSITIVE_INTEGER_TAG:
+ case ValueTag.XS_NEGATIVE_INTEGER_TAG:
+ case ValueTag.XS_LONG_TAG:
+ case ValueTag.XS_NON_NEGATIVE_INTEGER_TAG:
+ case ValueTag.XS_UNSIGNED_LONG_TAG:
+ case ValueTag.XS_POSITIVE_INTEGER_TAG:
+ case ValueTag.XS_INT_TAG:
+ case ValueTag.XS_UNSIGNED_INT_TAG:
+ case ValueTag.XS_SHORT_TAG:
+ case ValueTag.XS_UNSIGNED_SHORT_TAG:
+ case ValueTag.XS_BYTE_TAG:
+ case ValueTag.XS_UNSIGNED_BYTE_TAG:
+ abvsInteger1.reset();
+ getIntegerPointable(tp1, tvp1, dOutInteger1);
+ longp1.set(abvsInteger1.getByteArray(), abvsInteger1.getStartOffset() + 1,
+ LongPointable.TYPE_TRAITS.getFixedLength());
+ }
+ LongPointable longp2 = (LongPointable) LongPointable.FACTORY.createPointable();
+ switch (tvp2.getTag()) {
+ case ValueTag.XS_INTEGER_TAG:
+ case ValueTag.XS_NON_POSITIVE_INTEGER_TAG:
+ case ValueTag.XS_NEGATIVE_INTEGER_TAG:
+ case ValueTag.XS_LONG_TAG:
+ case ValueTag.XS_NON_NEGATIVE_INTEGER_TAG:
+ case ValueTag.XS_UNSIGNED_LONG_TAG:
+ case ValueTag.XS_POSITIVE_INTEGER_TAG:
+ case ValueTag.XS_INT_TAG:
+ case ValueTag.XS_UNSIGNED_INT_TAG:
+ case ValueTag.XS_SHORT_TAG:
+ case ValueTag.XS_UNSIGNED_SHORT_TAG:
+ case ValueTag.XS_BYTE_TAG:
+ case ValueTag.XS_UNSIGNED_BYTE_TAG:
+ abvsInteger2.reset();
+ getIntegerPointable(tp2, tvp2, dOutInteger2);
+ longp2.set(abvsInteger2.getByteArray(), abvsInteger2.getStartOffset() + 1,
+ LongPointable.TYPE_TRAITS.getFixedLength());
+ }
switch (tid1) {
case ValueTag.XS_DECIMAL_TAG:
tvp1.getValue(tp1.decp);
@@ -89,8 +139,7 @@ public abstract class AbstractValueCompa
break;
case ValueTag.XS_INTEGER_TAG:
- tvp2.getValue(tp2.longp);
- booleanResult = aOp.operateDecimalInteger(tp1.decp, tp2.longp);
+ booleanResult = aOp.operateDecimalInteger(tp1.decp, longp2);
break;
case ValueTag.XS_FLOAT_TAG:
@@ -106,26 +155,24 @@ public abstract class AbstractValueCompa
break;
case ValueTag.XS_INTEGER_TAG:
- tvp1.getValue(tp1.longp);
switch (tid2) {
case ValueTag.XS_DECIMAL_TAG:
tvp2.getValue(tp2.decp);
- booleanResult = aOp.operateIntegerDecimal(tp1.longp, tp2.decp);
+ booleanResult = aOp.operateIntegerDecimal(longp1, tp2.decp);
break;
case ValueTag.XS_INTEGER_TAG:
- tvp2.getValue(tp2.longp);
- booleanResult = aOp.operateIntegerInteger(tp1.longp, tp2.longp);
+ booleanResult = aOp.operateIntegerInteger(longp1, longp2);
break;
case ValueTag.XS_FLOAT_TAG:
tvp2.getValue(tp2.floatp);
- booleanResult = aOp.operateIntegerFloat(tp1.longp, tp2.floatp);
+ booleanResult = aOp.operateIntegerFloat(longp1, tp2.floatp);
break;
case ValueTag.XS_DOUBLE_TAG:
tvp2.getValue(tp2.doublep);
- booleanResult = aOp.operateIntegerDouble(tp1.longp, tp2.doublep);
+ booleanResult = aOp.operateIntegerDouble(longp1, tp2.doublep);
break;
}
break;
@@ -139,8 +186,7 @@ public abstract class AbstractValueCompa
break;
case ValueTag.XS_INTEGER_TAG:
- tvp2.getValue(tp2.longp);
- booleanResult = aOp.operateFloatInteger(tp1.floatp, tp2.longp);
+ booleanResult = aOp.operateFloatInteger(tp1.floatp, longp2);
break;
case ValueTag.XS_FLOAT_TAG:
@@ -164,8 +210,7 @@ public abstract class AbstractValueCompa
break;
case ValueTag.XS_INTEGER_TAG:
- tvp2.getValue(tp2.longp);
- booleanResult = aOp.operateDoubleInteger(tp1.doublep, tp2.longp);
+ booleanResult = aOp.operateDoubleInteger(tp1.doublep, longp2);
break;
case ValueTag.XS_FLOAT_TAG:
@@ -207,6 +252,9 @@ public abstract class AbstractValueCompa
tvp2.getValue(tp2.datep);
booleanResult = aOp.operateDateDate(tp1.datep, tp2.datep, dCtx);
break;
+ default:
+ // Cross comparisons between DateTime, Date and Time are not supported.
+ throw new SystemException(ErrorCode.XPTY0004);
}
break;
@@ -217,6 +265,9 @@ public abstract class AbstractValueCompa
tvp2.getValue(tp2.datetimep);
booleanResult = aOp.operateDatetimeDatetime(tp1.datetimep, tp2.datetimep, dCtx);
break;
+ default:
+ // Cross comparisons between DateTime, Date and Time are not supported.
+ throw new SystemException(ErrorCode.XPTY0004);
}
break;
@@ -227,16 +278,27 @@ public abstract class AbstractValueCompa
tvp2.getValue(tp2.timep);
booleanResult = aOp.operateTimeTime(tp1.timep, tp2.timep, dCtx);
break;
+ default:
+ // Cross comparisons between DateTime, Date and Time are not supported.
+ throw new SystemException(ErrorCode.XPTY0004);
}
break;
case ValueTag.XS_DURATION_TAG:
tvp1.getValue(tp1.durationp);
switch (tid2) {
+ case ValueTag.XS_DAY_TIME_DURATION_TAG:
+ tvp2.getValue(tp2.longp);
+ booleanResult = aOp.operateDurationDTDuration(tp1.durationp, tp2.longp);
+ break;
case ValueTag.XS_DURATION_TAG:
tvp2.getValue(tp2.durationp);
booleanResult = aOp.operateDurationDuration(tp1.durationp, tp2.durationp);
break;
+ case ValueTag.XS_YEAR_MONTH_DURATION_TAG:
+ tvp2.getValue(tp2.intp);
+ booleanResult = aOp.operateDurationYMDuration(tp1.durationp, tp2.intp);
+ break;
}
break;
@@ -247,12 +309,20 @@ public abstract class AbstractValueCompa
tvp2.getValue(tp2.longp);
booleanResult = aOp.operateDTDurationDTDuration(tp1.longp, tp2.longp);
break;
+ case ValueTag.XS_DURATION_TAG:
+ tvp2.getValue(tp2.durationp);
+ booleanResult = aOp.operateDTDurationDuration(tp1.longp, tp2.durationp);
+ break;
}
break;
case ValueTag.XS_YEAR_MONTH_DURATION_TAG:
tvp1.getValue(tp1.intp);
switch (tid2) {
+ case ValueTag.XS_DURATION_TAG:
+ tvp2.getValue(tp2.durationp);
+ booleanResult = aOp.operateYMDurationDuration(tp1.intp, tp2.durationp);
+ break;
case ValueTag.XS_YEAR_MONTH_DURATION_TAG:
tvp2.getValue(tp2.intp);
booleanResult = aOp.operateYMDurationYMDuration(tp1.intp, tp2.intp);
@@ -372,30 +442,71 @@ public abstract class AbstractValueCompa
}
}
+ private void getIntegerPointable(TypedPointables tp, TaggedValuePointable tvp, DataOutput dOut)
+ throws SystemException, IOException {
+ long value;
+ switch (tvp.getTag()) {
+ case ValueTag.XS_INTEGER_TAG:
+ case ValueTag.XS_LONG_TAG:
+ case ValueTag.XS_NEGATIVE_INTEGER_TAG:
+ case ValueTag.XS_NON_POSITIVE_INTEGER_TAG:
+ case ValueTag.XS_NON_NEGATIVE_INTEGER_TAG:
+ case ValueTag.XS_POSITIVE_INTEGER_TAG:
+ case ValueTag.XS_UNSIGNED_INT_TAG:
+ case ValueTag.XS_UNSIGNED_LONG_TAG:
+ tvp.getValue(tp.longp);
+ value = tp.longp.longValue();
+ break;
+
+ case ValueTag.XS_INT_TAG:
+ case ValueTag.XS_UNSIGNED_SHORT_TAG:
+ tvp.getValue(tp.intp);
+ value = tp.intp.longValue();
+ break;
+
+ case ValueTag.XS_SHORT_TAG:
+ case ValueTag.XS_UNSIGNED_BYTE_TAG:
+ tvp.getValue(tp.shortp);
+ value = tp.shortp.longValue();
+ break;
+
+ case ValueTag.XS_BYTE_TAG:
+ tvp.getValue(tp.bytep);
+ value = tp.bytep.longValue();
+ break;
+
+ default:
+ value = 0;
+ }
+ dOut.write(ValueTag.XS_INTEGER_TAG);
+ dOut.writeLong(value);
+ }
+
private int getBaseTypeForComparisons(int tid) throws SystemException {
while (true) {
switch (tid) {
- case ValueTag.XS_STRING_TAG:
- case ValueTag.XS_DECIMAL_TAG:
- case ValueTag.XS_INTEGER_TAG:
- case ValueTag.XS_FLOAT_TAG:
- case ValueTag.XS_DOUBLE_TAG:
case ValueTag.XS_ANY_URI_TAG:
+ case ValueTag.XS_BASE64_BINARY_TAG:
case ValueTag.XS_BOOLEAN_TAG:
case ValueTag.XS_DATE_TAG:
case ValueTag.XS_DATETIME_TAG:
- case ValueTag.XS_TIME_TAG:
case ValueTag.XS_DAY_TIME_DURATION_TAG:
- case ValueTag.XS_YEAR_MONTH_DURATION_TAG:
- case ValueTag.XS_BASE64_BINARY_TAG:
+ case ValueTag.XS_DECIMAL_TAG:
+ case ValueTag.XS_DOUBLE_TAG:
+ case ValueTag.XS_DURATION_TAG:
+ case ValueTag.XS_FLOAT_TAG:
case ValueTag.XS_HEX_BINARY_TAG:
- case ValueTag.XS_QNAME_TAG:
+ case ValueTag.XS_INTEGER_TAG:
case ValueTag.XS_G_DAY_TAG:
case ValueTag.XS_G_MONTH_DAY_TAG:
case ValueTag.XS_G_MONTH_TAG:
case ValueTag.XS_G_YEAR_MONTH_TAG:
case ValueTag.XS_G_YEAR_TAG:
+ case ValueTag.XS_QNAME_TAG:
+ case ValueTag.XS_STRING_TAG:
+ case ValueTag.XS_TIME_TAG:
case ValueTag.XS_UNTYPED_ATOMIC_TAG:
+ case ValueTag.XS_YEAR_MONTH_DURATION_TAG:
return tid;
case ValueTag.XS_ANY_ATOMIC_TAG:
@@ -411,10 +522,12 @@ public abstract class AbstractValueCompa
private static class TypedPointables {
BooleanPointable boolp = (BooleanPointable) BooleanPointable.FACTORY.createPointable();
+ BytePointable bytep = (BytePointable) BytePointable.FACTORY.createPointable();
+ DoublePointable doublep = (DoublePointable) DoublePointable.FACTORY.createPointable();
+ FloatPointable floatp = (FloatPointable) FloatPointable.FACTORY.createPointable();
IntegerPointable intp = (IntegerPointable) IntegerPointable.FACTORY.createPointable();
LongPointable longp = (LongPointable) LongPointable.FACTORY.createPointable();
- FloatPointable floatp = (FloatPointable) FloatPointable.FACTORY.createPointable();
- DoublePointable doublep = (DoublePointable) DoublePointable.FACTORY.createPointable();
+ ShortPointable shortp = (ShortPointable) ShortPointable.FACTORY.createPointable();
UTF8StringPointable utf8sp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
XSBinaryPointable binaryp = (XSBinaryPointable) XSBinaryPointable.FACTORY.createPointable();
XSDatePointable datep = (XSDatePointable) XSDatePointable.FACTORY.createPointable();
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/ValueEqComparisonOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/ValueEqComparisonOperation.java?rev=1376335&r1=1376334&r2=1376335&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/ValueEqComparisonOperation.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/ValueEqComparisonOperation.java Thu Aug 23 00:40:19 2012
@@ -53,10 +53,10 @@ public class ValueEqComparisonOperation
DateTime.getTimezoneDateTime(datep2, dCtx, dOutInner);
int startOffset1 = abvsInner.getStartOffset() + 1;
int startOffset2 = startOffset1 + 1 + XSDateTimePointable.TYPE_TRAITS.getFixedLength();
- if (XSDateTimePointable.getYearMonth(abvsInner.getByteArray(), startOffset1) == XSDateTimePointable.getYearMonth(
- abvsInner.getByteArray(), startOffset2)
- && XSDateTimePointable.getDayTime(abvsInner.getByteArray(), startOffset1) == XSDateTimePointable
- .getDayTime(abvsInner.getByteArray(), startOffset2)) {
+ if (XSDateTimePointable.getYearMonth(abvsInner.getByteArray(), startOffset1) == XSDateTimePointable
+ .getYearMonth(abvsInner.getByteArray(), startOffset2)
+ && XSDateTimePointable.getDay(abvsInner.getByteArray(), startOffset1) == XSDateTimePointable.getDay(
+ abvsInner.getByteArray(), startOffset2)) {
return true;
}
return false;
@@ -70,8 +70,8 @@ public class ValueEqComparisonOperation
DateTime.getTimezoneDateTime(datetimep2, dCtx, dOutInner);
int startOffset1 = abvsInner.getStartOffset() + 1;
int startOffset2 = startOffset1 + 1 + XSDateTimePointable.TYPE_TRAITS.getFixedLength();
- if (XSDateTimePointable.getYearMonth(abvsInner.getByteArray(), startOffset1) == XSDateTimePointable.getYearMonth(
- abvsInner.getByteArray(), startOffset2)
+ if (XSDateTimePointable.getYearMonth(abvsInner.getByteArray(), startOffset1) == XSDateTimePointable
+ .getYearMonth(abvsInner.getByteArray(), startOffset2)
&& XSDateTimePointable.getDayTime(abvsInner.getByteArray(), startOffset1) == XSDateTimePointable
.getDayTime(abvsInner.getByteArray(), startOffset2)) {
return true;
@@ -90,6 +90,9 @@ public class ValueEqComparisonOperation
IOException {
double double1 = decp1.doubleValue();
double double2 = doublep2.doubleValue();
+ if (Double.isNaN(doublep2.getDouble())) {
+ return false;
+ }
return (double1 == double2);
}
@@ -98,13 +101,18 @@ public class ValueEqComparisonOperation
IOException {
float float1 = decp1.floatValue();
float float2 = floatp2.floatValue();
+ if (Float.isNaN(floatp2.getFloat())) {
+ return false;
+ }
return (float1 == float2);
}
@Override
public boolean operateDecimalInteger(XSDecimalPointable decp1, LongPointable longp2) throws SystemException,
IOException {
+ abvsInner.reset();
XSDecimalPointable decp2 = (XSDecimalPointable) XSDecimalPointable.FACTORY.createPointable();
+ decp2.set(abvsInner.getByteArray(), abvsInner.getStartOffset(), XSDecimalPointable.TYPE_TRAITS.getFixedLength());
decp2.setDecimal(longp2.getLong(), (byte) 0);
return (decp1.compareTo(decp2) == 0);
}
@@ -114,12 +122,18 @@ public class ValueEqComparisonOperation
IOException {
double double1 = doublep1.doubleValue();
double double2 = decp2.doubleValue();
+ if (Double.isNaN(doublep1.getDouble())) {
+ return false;
+ }
return (double1 == double2);
}
@Override
public boolean operateDoubleDouble(DoublePointable doublep1, DoublePointable doublep2) throws SystemException,
IOException {
+ if (Double.isNaN(doublep1.getDouble()) || Double.isNaN(doublep2.getDouble())) {
+ return false;
+ }
return (doublep1.compareTo(doublep2) == 0);
}
@@ -128,6 +142,9 @@ public class ValueEqComparisonOperation
IOException {
double double1 = doublep1.doubleValue();
double double2 = floatp2.doubleValue();
+ if (Double.isNaN(doublep1.getDouble()) || Float.isNaN(floatp2.getFloat())) {
+ return false;
+ }
return (double1 == double2);
}
@@ -136,6 +153,9 @@ public class ValueEqComparisonOperation
IOException {
double double1 = doublep1.doubleValue();
double double2 = longp2.doubleValue();
+ if (Double.isNaN(doublep1.getDouble())) {
+ return false;
+ }
return (double1 == double2);
}
@@ -146,6 +166,24 @@ public class ValueEqComparisonOperation
}
@Override
+ public boolean operateDTDurationDuration(LongPointable longp1, XSDurationPointable durationp2)
+ throws SystemException, IOException {
+ if (durationp2.getYearMonth() == 0 && durationp2.getDayTime() == longp1.getLong()) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean operateDurationDTDuration(XSDurationPointable durationp1, LongPointable longp2)
+ throws SystemException, IOException {
+ if (durationp1.getYearMonth() == 0 && durationp1.getDayTime() == longp2.getLong()) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
public boolean operateDurationDuration(XSDurationPointable durationp1, XSDurationPointable durationp2)
throws SystemException, IOException {
return arraysEqual(durationp1.getByteArray(), durationp1.getStartOffset(), durationp1.getLength(),
@@ -153,10 +191,22 @@ public class ValueEqComparisonOperation
}
@Override
+ public boolean operateDurationYMDuration(XSDurationPointable durationp1, IntegerPointable intp2)
+ throws SystemException, IOException {
+ if (durationp1.getYearMonth() == intp2.getInteger() && durationp1.getDayTime() == 0) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
public boolean operateFloatDecimal(FloatPointable floatp1, XSDecimalPointable decp2) throws SystemException,
IOException {
float float1 = floatp1.floatValue();
float float2 = decp2.floatValue();
+ if (Float.isNaN(floatp1.getFloat())) {
+ return false;
+ }
return (float1 == float2);
}
@@ -165,12 +215,18 @@ public class ValueEqComparisonOperation
IOException {
double double1 = floatp1.doubleValue();
double double2 = doublep2.doubleValue();
+ if (Float.isNaN(floatp1.getFloat()) || Double.isNaN(double2)) {
+ return false;
+ }
return (double1 == double2);
}
@Override
public boolean operateFloatFloat(FloatPointable floatp1, FloatPointable floatp2) throws SystemException,
IOException {
+ if (Float.isNaN(floatp1.getFloat()) || Float.isNaN(floatp2.getFloat())) {
+ return false;
+ }
return (floatp1.compareTo(floatp2) == 0);
}
@@ -179,6 +235,9 @@ public class ValueEqComparisonOperation
IOException {
float float1 = floatp1.floatValue();
float float2 = longp2.floatValue();
+ if (Float.isNaN(floatp1.getFloat())) {
+ return false;
+ }
return (float1 == float2);
}
@@ -222,7 +281,9 @@ public class ValueEqComparisonOperation
@Override
public boolean operateIntegerDecimal(LongPointable longp1, XSDecimalPointable decp2) throws SystemException,
IOException {
+ abvsInner.reset();
XSDecimalPointable decp1 = (XSDecimalPointable) XSDecimalPointable.FACTORY.createPointable();
+ decp1.set(abvsInner.getByteArray(), abvsInner.getStartOffset(), XSDecimalPointable.TYPE_TRAITS.getFixedLength());
decp1.setDecimal(longp1.getLong(), (byte) 0);
return (decp1.compareTo(decp2) == 0);
}
@@ -232,6 +293,9 @@ public class ValueEqComparisonOperation
IOException {
double double1 = longp1.doubleValue();
double double2 = doublep2.doubleValue();
+ if (Double.isNaN(double2)) {
+ return false;
+ }
return (double1 == double2);
}
@@ -240,6 +304,9 @@ public class ValueEqComparisonOperation
IOException {
float float1 = longp1.floatValue();
float float2 = floatp2.floatValue();
+ if (Float.isNaN(float2)) {
+ return false;
+ }
return (float1 == float2);
}
@@ -276,8 +343,8 @@ public class ValueEqComparisonOperation
DateTime.getTimezoneDateTime(timep2, dCtx, dOutInner);
int startOffset1 = abvsInner.getStartOffset() + 1;
int startOffset2 = startOffset1 + 1 + XSDateTimePointable.TYPE_TRAITS.getFixedLength();
- if (XSDateTimePointable.getYearMonth(abvsInner.getByteArray(), startOffset1) == XSDateTimePointable.getYearMonth(
- abvsInner.getByteArray(), startOffset2)
+ if (XSDateTimePointable.getYearMonth(abvsInner.getByteArray(), startOffset1) == XSDateTimePointable
+ .getYearMonth(abvsInner.getByteArray(), startOffset2)
&& XSDateTimePointable.getDayTime(abvsInner.getByteArray(), startOffset1) == XSDateTimePointable
.getDayTime(abvsInner.getByteArray(), startOffset2)) {
return true;
@@ -286,6 +353,15 @@ public class ValueEqComparisonOperation
}
@Override
+ public boolean operateYMDurationDuration(IntegerPointable intp1, XSDurationPointable durationp2)
+ throws SystemException, IOException {
+ if (durationp2.getYearMonth() == intp1.getInteger() && durationp2.getDayTime() == 0) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
public boolean operateYMDurationYMDuration(IntegerPointable intp1, IntegerPointable intp2) throws SystemException,
IOException {
return (intp1.compareTo(intp2) == 0);
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/ValueLtComparisonOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/ValueLtComparisonOperation.java?rev=1376335&r1=1376334&r2=1376335&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/ValueLtComparisonOperation.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/ValueLtComparisonOperation.java Thu Aug 23 00:40:19 2012
@@ -12,6 +12,7 @@ import org.apache.vxquery.datamodel.acce
import org.apache.vxquery.datamodel.accessors.atomic.XSQNamePointable;
import org.apache.vxquery.datamodel.accessors.atomic.XSTimePointable;
import org.apache.vxquery.datamodel.util.DateTime;
+import org.apache.vxquery.exceptions.ErrorCode;
import org.apache.vxquery.exceptions.SystemException;
import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
@@ -35,7 +36,7 @@ public class ValueLtComparisonOperation
@Override
public boolean operateBase64BinaryBase64Binary(XSBinaryPointable binaryp1, XSBinaryPointable binaryp2)
throws SystemException, IOException {
- throw new UnsupportedOperationException();
+ throw new SystemException(ErrorCode.XPTY0004);
}
@Override
@@ -53,6 +54,9 @@ public class ValueLtComparisonOperation
int startOffset1 = abvsInner.getStartOffset() + 1;
int startOffset2 = startOffset1 + 1 + XSDateTimePointable.TYPE_TRAITS.getFixedLength();
if (XSDateTimePointable.getYearMonth(abvsInner.getByteArray(), startOffset1) < XSDateTimePointable
+ .getYearMonth(abvsInner.getByteArray(), startOffset2)) {
+ return true;
+ } else if (XSDateTimePointable.getYearMonth(abvsInner.getByteArray(), startOffset1) == XSDateTimePointable
.getYearMonth(abvsInner.getByteArray(), startOffset2)
&& XSDateTimePointable.getDayTime(abvsInner.getByteArray(), startOffset1) < XSDateTimePointable
.getDayTime(abvsInner.getByteArray(), startOffset2)) {
@@ -70,6 +74,9 @@ public class ValueLtComparisonOperation
int startOffset1 = abvsInner.getStartOffset() + 1;
int startOffset2 = startOffset1 + 1 + XSDateTimePointable.TYPE_TRAITS.getFixedLength();
if (XSDateTimePointable.getYearMonth(abvsInner.getByteArray(), startOffset1) < XSDateTimePointable
+ .getYearMonth(abvsInner.getByteArray(), startOffset2)) {
+ return true;
+ } else if (XSDateTimePointable.getYearMonth(abvsInner.getByteArray(), startOffset1) == XSDateTimePointable
.getYearMonth(abvsInner.getByteArray(), startOffset2)
&& XSDateTimePointable.getDayTime(abvsInner.getByteArray(), startOffset1) < XSDateTimePointable
.getDayTime(abvsInner.getByteArray(), startOffset2)) {
@@ -89,6 +96,9 @@ public class ValueLtComparisonOperation
IOException {
double double1 = decp1.doubleValue();
double double2 = doublep2.doubleValue();
+ if (Double.isNaN(doublep2.getDouble())) {
+ return false;
+ }
return (double1 < double2);
}
@@ -97,13 +107,18 @@ public class ValueLtComparisonOperation
IOException {
float float1 = decp1.floatValue();
float float2 = floatp2.floatValue();
+ if (Float.isNaN(floatp2.getFloat())) {
+ return false;
+ }
return (float1 < float2);
}
@Override
public boolean operateDecimalInteger(XSDecimalPointable decp1, LongPointable longp2) throws SystemException,
IOException {
+ abvsInner.reset();
XSDecimalPointable decp2 = (XSDecimalPointable) XSDecimalPointable.FACTORY.createPointable();
+ decp2.set(abvsInner.getByteArray(), abvsInner.getStartOffset(), XSDecimalPointable.TYPE_TRAITS.getFixedLength());
decp2.setDecimal(longp2.getLong(), (byte) 0);
return (decp1.compareTo(decp2) == -1);
}
@@ -113,12 +128,18 @@ public class ValueLtComparisonOperation
IOException {
double double1 = doublep1.doubleValue();
double double2 = decp2.doubleValue();
+ if (Double.isNaN(doublep1.getDouble())) {
+ return false;
+ }
return (double1 < double2);
}
@Override
public boolean operateDoubleDouble(DoublePointable doublep1, DoublePointable doublep2) throws SystemException,
IOException {
+ if (Double.isNaN(doublep1.getDouble()) || Double.isNaN(doublep2.getDouble())) {
+ return false;
+ }
return (doublep1.compareTo(doublep2) == -1);
}
@@ -127,6 +148,9 @@ public class ValueLtComparisonOperation
IOException {
double double1 = doublep1.doubleValue();
double double2 = floatp2.doubleValue();
+ if (Double.isNaN(doublep1.getDouble()) || Float.isNaN(floatp2.getFloat())) {
+ return false;
+ }
return (double1 < double2);
}
@@ -135,6 +159,9 @@ public class ValueLtComparisonOperation
IOException {
double double1 = doublep1.doubleValue();
double double2 = longp2.doubleValue();
+ if (Double.isNaN(doublep1.getDouble())) {
+ return false;
+ }
return (double1 < double2);
}
@@ -145,9 +172,27 @@ public class ValueLtComparisonOperation
}
@Override
+ public boolean operateDTDurationDuration(LongPointable longp1, XSDurationPointable durationp2)
+ throws SystemException, IOException {
+ throw new SystemException(ErrorCode.XPTY0004);
+ }
+
+ @Override
+ public boolean operateDurationDTDuration(XSDurationPointable durationp1, LongPointable longp2)
+ throws SystemException, IOException {
+ throw new SystemException(ErrorCode.XPTY0004);
+ }
+
+ @Override
public boolean operateDurationDuration(XSDurationPointable durationp1, XSDurationPointable durationp2)
throws SystemException, IOException {
- throw new UnsupportedOperationException();
+ throw new SystemException(ErrorCode.XPTY0004);
+ }
+
+ @Override
+ public boolean operateDurationYMDuration(XSDurationPointable durationp1, IntegerPointable intp2)
+ throws SystemException, IOException {
+ throw new SystemException(ErrorCode.XPTY0004);
}
@Override
@@ -155,6 +200,9 @@ public class ValueLtComparisonOperation
IOException {
float float1 = floatp1.floatValue();
float float2 = decp2.floatValue();
+ if (Float.isNaN(floatp1.getFloat())) {
+ return false;
+ }
return (float1 < float2);
}
@@ -163,12 +211,18 @@ public class ValueLtComparisonOperation
IOException {
double double1 = floatp1.doubleValue();
double double2 = doublep2.doubleValue();
+ if (Float.isNaN(floatp1.getFloat()) || Double.isNaN(double2)) {
+ return false;
+ }
return (double1 < double2);
}
@Override
public boolean operateFloatFloat(FloatPointable floatp1, FloatPointable floatp2) throws SystemException,
IOException {
+ if (Float.isNaN(floatp1.getFloat()) || Float.isNaN(floatp2.getFloat())) {
+ return false;
+ }
return (floatp1.compareTo(floatp2) == -1);
}
@@ -177,49 +231,54 @@ public class ValueLtComparisonOperation
IOException {
float float1 = floatp1.floatValue();
float float2 = longp2.floatValue();
+ if (Float.isNaN(floatp1.getFloat())) {
+ return false;
+ }
return (float1 < float2);
}
@Override
public boolean operateGDayGDay(XSDatePointable datep1, XSDatePointable datep2, DynamicContext dCtx)
throws SystemException, IOException {
- throw new UnsupportedOperationException();
+ throw new SystemException(ErrorCode.XPTY0004);
}
@Override
public boolean operateGMonthDayGMonthDay(XSDatePointable datep1, XSDatePointable datep2, DynamicContext dCtx)
throws SystemException, IOException {
- throw new UnsupportedOperationException();
+ throw new SystemException(ErrorCode.XPTY0004);
}
@Override
public boolean operateGMonthGMonth(XSDatePointable datep1, XSDatePointable datep2, DynamicContext dCtx)
throws SystemException, IOException {
- throw new UnsupportedOperationException();
+ throw new SystemException(ErrorCode.XPTY0004);
}
@Override
public boolean operateGYearGYear(XSDatePointable datep1, XSDatePointable datep2, DynamicContext dCtx)
throws SystemException, IOException {
- throw new UnsupportedOperationException();
+ throw new SystemException(ErrorCode.XPTY0004);
}
@Override
public boolean operateGYearMonthGYearMonth(XSDatePointable datep1, XSDatePointable datep2, DynamicContext dCtx)
throws SystemException, IOException {
- throw new UnsupportedOperationException();
+ throw new SystemException(ErrorCode.XPTY0004);
}
@Override
public boolean operateHexBinaryHexBinary(XSBinaryPointable binaryp1, XSBinaryPointable binaryp2)
throws SystemException, IOException {
- throw new UnsupportedOperationException();
+ throw new SystemException(ErrorCode.XPTY0004);
}
@Override
public boolean operateIntegerDecimal(LongPointable longp1, XSDecimalPointable decp2) throws SystemException,
IOException {
+ abvsInner.reset();
XSDecimalPointable decp1 = (XSDecimalPointable) XSDecimalPointable.FACTORY.createPointable();
+ decp1.set(abvsInner.getByteArray(), abvsInner.getStartOffset(), XSDecimalPointable.TYPE_TRAITS.getFixedLength());
decp1.setDecimal(longp1.getLong(), (byte) 0);
return (decp1.compareTo(decp2) == -1);
}
@@ -229,6 +288,9 @@ public class ValueLtComparisonOperation
IOException {
double double1 = longp1.doubleValue();
double double2 = doublep2.doubleValue();
+ if (Double.isNaN(double2)) {
+ return false;
+ }
return (double1 < double2);
}
@@ -237,6 +299,9 @@ public class ValueLtComparisonOperation
IOException {
float float1 = longp1.floatValue();
float float2 = floatp2.floatValue();
+ if (Float.isNaN(float2)) {
+ return false;
+ }
return (float1 < float2);
}
@@ -249,13 +314,13 @@ public class ValueLtComparisonOperation
@Override
public boolean operateNotationNotation(UTF8StringPointable stringp1, UTF8StringPointable stringp2)
throws SystemException, IOException {
- throw new UnsupportedOperationException();
+ throw new SystemException(ErrorCode.XPTY0004);
}
@Override
public boolean operateQNameQName(XSQNamePointable qnamep1, XSQNamePointable qnamep2) throws SystemException,
IOException {
- throw new UnsupportedOperationException();
+ throw new SystemException(ErrorCode.XPTY0004);
}
@Override
@@ -272,16 +337,20 @@ public class ValueLtComparisonOperation
DateTime.getTimezoneDateTime(timep2, dCtx, dOutInner);
int startOffset1 = abvsInner.getStartOffset() + 1;
int startOffset2 = startOffset1 + 1 + XSDateTimePointable.TYPE_TRAITS.getFixedLength();
- if (XSDateTimePointable.getYearMonth(abvsInner.getByteArray(), startOffset1) < XSDateTimePointable.getYearMonth(
- abvsInner.getByteArray(), startOffset2)
- && XSDateTimePointable.getDayTime(abvsInner.getByteArray(), startOffset1) < XSDateTimePointable
- .getDayTime(abvsInner.getByteArray(), startOffset2)) {
+ if (XSDateTimePointable.getDayTime(abvsInner.getByteArray(), startOffset1) < XSDateTimePointable.getDayTime(
+ abvsInner.getByteArray(), startOffset2)) {
return true;
}
return false;
}
@Override
+ public boolean operateYMDurationDuration(IntegerPointable intp1, XSDurationPointable durationp2)
+ throws SystemException, IOException {
+ throw new SystemException(ErrorCode.XPTY0004);
+ }
+
+ @Override
public boolean operateYMDurationYMDuration(IntegerPointable intp1, IntegerPointable intp2) throws SystemException,
IOException {
return (intp1.compareTo(intp2) == -1);