addressed Sattam's comments; added code to enable loading year-month-duration and day-time-duration through external data
diff --git a/asterix-app/data/temporal/temporalData.json b/asterix-app/data/temporal/temporalData.json
index 5b3a0f5..bedf2c7 100644
--- a/asterix-app/data/temporal/temporalData.json
+++ b/asterix-app/data/temporal/temporalData.json
@@ -1,3 +1,4 @@
{"id": "001", "dateField": date("-2012-12-12"), "dateFieldPlus": date("0990-01-01"), "timeField": time("23:49:12.39Z"), "timeFieldPlus": time("03:23:12.2"), "datetimeField": datetime("2012-12-12T00:00:00.001"), "datetimeFieldPlus": datetime("-00130810T221015398"), "durationField": duration("P20Y19DT3H74M23.34S"), "durationFieldPlus": duration("-P2MT4M300.68S"), "intervalField": interval-datetime("2012-12-12T00:00:00.001,20130810T221015398") }
{"id": "002", "timeField": time("12:12:12.219+08:00"), "timeField2": time("13:13:13.321-08:00"), "datetimeField": datetime("19201220T232918478-1200"), "intervalField": interval-time("12:29:30+08:00, 235959999-0800") }
-{"id": "003", "durationField": duration("-P27Y48DT2400H"), "datetimeField": datetime("-0290-03-23T00:59:48.999+07:00"), "intervalField": interval-date("-2012-03-17, 2013-04-01"), "intervalPlus": interval-time("19:23:32.328Z,23:20:20") }
\ No newline at end of file
+{"id": "003", "durationField": duration("-P27Y48DT2400H"), "datetimeField": datetime("-0290-03-23T00:59:48.999+07:00"), "intervalField": interval-date("-2012-03-17, 2013-04-01"), "intervalPlus": interval-time("19:23:32.328Z,23:20:20") }
+{"id": "003", "dayTimeDurationField": day-time-duration("-P48DT2400H"), "yearMonthDurationField": year-month-duration("P27Y50M") }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_circle/issue363_inequality_circle.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_circle/issue363_inequality_circle.3.query.aql
index 2c65355..dc9aeb5 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_circle/issue363_inequality_circle.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_circle/issue363_inequality_circle.3.query.aql
@@ -8,4 +8,4 @@
let $v1 := circle("0.1234,-1.00e-10 +10.5E-2")
let $dv1 := circle("0.5678,-1.00e-10 +10.5E-2")
-return { "circle0": $v1 > $dv1, "circle1": $dv1 < $v1 }
\ No newline at end of file
+return { "circle0": $v1 > $dv1, "circle1": $dv1 < $v1, "circle2": $v1 >= $dv1, "circle3": $dv1 <= $v1 }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_duration/issue363_inequality_duration.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_duration/issue363_inequality_duration.3.query.aql
index 31d8b7b..a365aba 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_duration/issue363_inequality_duration.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_duration/issue363_inequality_duration.3.query.aql
@@ -8,4 +8,4 @@
let $v1 := duration("P300Y6M3DT9H5M2.348S")
let $dv1 := duration("P3Y6M3DT9H5M2.348S")
-return { "duration0": $v1 > $dv1, "duration1": $dv1 < $v1 }
\ No newline at end of file
+return { "duration0": $v1 > $dv1, "duration1": $dv1 < $v1, "duration2": $v1 >= $dv1, "duration3": $dv1 <= $v1 }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql
index b5c22e0..36ac511 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql
@@ -8,4 +8,4 @@
let $v1 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
let $dv1 := interval-from-datetime(datetime("-1983-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
-return { "interval0": $v1 > $dv1, "interval1": $dv1 < $v1 }
\ No newline at end of file
+return { "interval0": $v1 > $dv1, "interval1": $dv1 < $v1, "interval2": $v1 >= $dv1, "interval3": $dv1 <= $v1 }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_line/issue363_inequality_line.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_line/issue363_inequality_line.3.query.aql
index a311f90..d887233 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_line/issue363_inequality_line.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_line/issue363_inequality_line.3.query.aql
@@ -8,4 +8,4 @@
let $v1 := line("10.1234,11.1e-1 +10.2E-2,-11.22")
let $dv1 := line("10.1234,11.1e-1 +10.2E-2,-11.22")
-return { "line0": $v1 > $dv1, "line1": $dv1 < $v1 }
\ No newline at end of file
+return { "line0": $v1 > $dv1, "line1": $dv1 < $v1, "line2": $v1 >= $dv1, "line3": $dv1 <= $v1 }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_point/issue363_inequality_point.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_point/issue363_inequality_point.3.query.aql
index 66a5c9e..2199d41 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_point/issue363_inequality_point.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_point/issue363_inequality_point.3.query.aql
@@ -8,4 +8,4 @@
let $v1 := point("47.44,80.65")
let $dv1 := point("47.4444,80.65")
-return { "point0": $v1 > $dv1, "point1": $dv1 < $v1 }
\ No newline at end of file
+return { "point0": $v1 > $dv1, "point1": $dv1 < $v1, "point2": $v1 >= $dv1, "point3": $dv1 <= $v1 }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_polygon/issue363_inequality_polygon.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_polygon/issue363_inequality_polygon.3.query.aql
index 569b518..04af82a 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_polygon/issue363_inequality_polygon.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_polygon/issue363_inequality_polygon.3.query.aql
@@ -8,4 +8,4 @@
let $v1 := polygon("-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75")
let $dv1 := polygon("-1.0,+10.5e2 -02.19E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75")
-return { "polygon0": $v1 > $dv1, "polygon1": $dv1 < $v1 }
\ No newline at end of file
+return { "polygon0": $v1 > $dv1, "polygon1": $dv1 < $v1, "polygon2": $v1 >= $dv1, "polygon3": $dv1 <= $v1 }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_rectangle/issue363_inequality_rectangle.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_rectangle/issue363_inequality_rectangle.3.query.aql
index 8d44f20..0665b16 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_rectangle/issue363_inequality_rectangle.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_rectangle/issue363_inequality_rectangle.3.query.aql
@@ -8,4 +8,4 @@
let $v1 := rectangle("0.1234,-1.00e-10 5.5487,0.48765")
let $dv1 := rectangle("0.5678,-1.00e-10 5.5487,0.48765")
-return { "rectangle0": $v1 > $dv1, "rectangle1": $dv1 < $v1 }
\ No newline at end of file
+return { "rectangle0": $v1 > $dv1, "rectangle1": $dv1 < $v1, "rectangle2": $v1 > $dv1, "rectangle3": $dv1 < $v1 }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/insert_from_ext_ds/insert_from_ext_ds.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/insert_from_ext_ds/insert_from_ext_ds.1.ddl.aql
index 0338aef..07825c7 100644
--- a/asterix-app/src/test/resources/runtimets/queries/temporal/insert_from_ext_ds/insert_from_ext_ds.1.ddl.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/insert_from_ext_ds/insert_from_ext_ds.1.ddl.aql
@@ -14,7 +14,9 @@
timeField: time?,
datetimeField: datetime?,
durationField: duration?,
- intervalField: interval?
+ intervalField: interval?,
+ yearMonthDurationField: year-month-duration?,
+ dayTimeDurationField: day-time-duration?
}
create external dataset testds(testtype)
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/insert_from_ext_ds/insert_from_ext_ds.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/insert_from_ext_ds/insert_from_ext_ds.3.query.aql
index 2defafc..de39156 100644
--- a/asterix-app/src/test/resources/runtimets/queries/temporal/insert_from_ext_ds/insert_from_ext_ds.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/insert_from_ext_ds/insert_from_ext_ds.3.query.aql
@@ -1,4 +1,4 @@
use dataverse testdvt;
for $r in dataset("testds")
-return {"date": $r.dateField, "time": $r.timeField, "datetime": $r.datetimeField, "duration": $r.durationField, "interval": $r.intervalField }
\ No newline at end of file
+return {"date": $r.dateField, "time": $r.timeField, "datetime": $r.datetimeField, "duration": $r.durationField, "interval": $r.intervalField, "ymduration": $r.yearMonthDurationField, "dtduration": $r.dayTimeDurationField }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm
index b087496..9573677 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm
@@ -1,3 +1,4 @@
-{ "date": date("-2012-12-12"), "time": time("23:49:12.390Z"), "datetime": datetime("2012-12-12T00:00:00.001Z"), "duration": duration("P20Y19DT4H14M23.34S"), "interval": interval-datetime("2012-12-12T00:00:00.001Z, 2013-08-10T22:10:15.398Z") }
-{ "date": null, "time": time("04:12:12.219Z"), "datetime": datetime("1920-12-21T11:29:18.478Z"), "duration": null, "interval": interval-time("04:29:30.000Z, 07:59:59.999Z") }
-{ "date": null, "time": null, "datetime": datetime("-0290-03-22T17:59:48.999Z"), "duration": duration("-P27Y148D"), "interval": interval-date("-2012-03-17, 2013-04-01") }
\ No newline at end of file
+{ "date": date("-2012-12-12"), "time": time("23:49:12.390Z"), "datetime": datetime("2012-12-12T00:00:00.001Z"), "duration": duration("P20Y19DT4H14M23.34S"), "interval": interval-datetime("2012-12-12T00:00:00.001Z, 2013-08-10T22:10:15.398Z"), "ymduration": null, "dtduration": null }
+{ "date": null, "time": time("04:12:12.219Z"), "datetime": datetime("1920-12-21T11:29:18.478Z"), "duration": null, "interval": interval-time("04:29:30.000Z, 07:59:59.999Z"), "ymduration": null, "dtduration": null }
+{ "date": null, "time": null, "datetime": datetime("-0290-03-22T17:59:48.999Z"), "duration": duration("-P27Y148D"), "interval": interval-date("-2012-03-17, 2013-04-01"), "ymduration": null, "dtduration": null }
+{ "date": null, "time": null, "datetime": null, "duration": null, "interval": null, "ymduration": year-month-duration("P31Y2M"), "dtduration": day-time-duration("-P148D") }
\ No newline at end of file
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ACirclePartialBinaryComparatorFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ACirclePartialBinaryComparatorFactory.java
index 06a6e53..0c54ea1 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ACirclePartialBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ACirclePartialBinaryComparatorFactory.java
@@ -14,9 +14,12 @@
*/
package edu.uci.ics.asterix.dataflow.data.nontagged.comparators;
+import edu.uci.ics.asterix.dataflow.data.nontagged.Coordinate;
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ACircleSerializerDeserializer;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADoubleSerializerDeserializer;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
public class ACirclePartialBinaryComparatorFactory implements IBinaryComparatorFactory {
@@ -37,22 +40,43 @@
@Override
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
- // center.x
- int c = Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1),
- ADoubleSerializerDeserializer.getDouble(b2, s2));
- if (c == 0) {
- // center.y
- c = Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1 + 8),
- ADoubleSerializerDeserializer.getDouble(b2, s2 + 8));
+ try {
+ // center.x
+ int c = Double
+ .compare(
+ ADoubleSerializerDeserializer.getDouble(
+ b1,
+ s1
+ + ACircleSerializerDeserializer
+ .getCenterPointCoordinateOffset(Coordinate.X) - 1),
+ ADoubleSerializerDeserializer.getDouble(
+ b2,
+ s2
+ + ACircleSerializerDeserializer
+ .getCenterPointCoordinateOffset(Coordinate.X) - 1));
if (c == 0) {
- // radius
- return Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1 + 16),
- ADoubleSerializerDeserializer.getDouble(b2, s2 + 16));
+ // center.y
+ c = Double.compare(
+ ADoubleSerializerDeserializer.getDouble(b1,
+ s1 + ACircleSerializerDeserializer.getCenterPointCoordinateOffset(Coordinate.Y)
+ - 1),
+ ADoubleSerializerDeserializer.getDouble(b2,
+ s2 + ACircleSerializerDeserializer.getCenterPointCoordinateOffset(Coordinate.Y)
+ - 1));
+ if (c == 0) {
+ // radius
+ return Double.compare(
+ ADoubleSerializerDeserializer.getDouble(b1,
+ s1 + ACircleSerializerDeserializer.getRadiusOffset() - 1),
+ ADoubleSerializerDeserializer.getDouble(b2,
+ s2 + ACircleSerializerDeserializer.getRadiusOffset() - 1));
+ }
}
+ return c;
+ } catch (HyracksDataException hex) {
+ throw new IllegalStateException(hex);
}
- return c;
}
};
}
-
}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ADurationPartialBinaryComparatorFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ADurationPartialBinaryComparatorFactory.java
index 39fc655..877426d 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ADurationPartialBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ADurationPartialBinaryComparatorFactory.java
@@ -15,6 +15,7 @@
package edu.uci.ics.asterix.dataflow.data.nontagged.comparators;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADoubleSerializerDeserializer;
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADurationSerializerDeserializer;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
@@ -38,11 +39,17 @@
@Override
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
- int c = Integer.compare(AInt32SerializerDeserializer.getInt(b1, s1),
- AInt32SerializerDeserializer.getInt(b2, s2));
+ int c = Integer.compare(
+ AInt32SerializerDeserializer.getInt(b1,
+ s1 + ADurationSerializerDeserializer.getYearMonthOffset()),
+ AInt32SerializerDeserializer.getInt(b2,
+ s2 + ADurationSerializerDeserializer.getYearMonthOffset()));
if (c == 0) {
- return Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1 + 4),
- ADoubleSerializerDeserializer.getDouble(b2, s2 + 4));
+ return Double.compare(
+ ADoubleSerializerDeserializer.getDouble(b1,
+ s1 + ADurationSerializerDeserializer.getDayTimeOffset()),
+ ADoubleSerializerDeserializer.getDouble(b2,
+ s2 + ADurationSerializerDeserializer.getDayTimeOffset()));
}
return c;
}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AIntervalPartialBinaryComparatorFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AIntervalPartialBinaryComparatorFactory.java
index a20a860..69f5051 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AIntervalPartialBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AIntervalPartialBinaryComparatorFactory.java
@@ -15,6 +15,7 @@
package edu.uci.ics.asterix.dataflow.data.nontagged.comparators;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
@@ -37,11 +38,17 @@
@Override
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
- int c = Double.compare(AInt64SerializerDeserializer.getLong(b1, s1),
- AInt64SerializerDeserializer.getLong(b2, s2));
+ int c = Double.compare(
+ AInt64SerializerDeserializer.getLong(b1,
+ s1 + AIntervalSerializerDeserializer.getIntervalStartOffset()),
+ AInt64SerializerDeserializer.getLong(b2,
+ s2 + AIntervalSerializerDeserializer.getIntervalStartOffset()));
if (c == 0) {
- c = Double.compare(AInt64SerializerDeserializer.getLong(b1, s1 + 8),
- AInt64SerializerDeserializer.getLong(b2, s2 + 8));
+ c = Double.compare(
+ AInt64SerializerDeserializer.getLong(b1,
+ s1 + AIntervalSerializerDeserializer.getIntervalEndOffset()),
+ AInt64SerializerDeserializer.getLong(b2,
+ s2 + AIntervalSerializerDeserializer.getIntervalEndOffset()));
if (c == 0) {
c = Byte.compare(b1[s1 + 16], b2[s2 + 16]);
}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ALinePartialBinaryComparatorFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ALinePartialBinaryComparatorFactory.java
index e604c6a..9f0fb57 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ALinePartialBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ALinePartialBinaryComparatorFactory.java
@@ -14,18 +14,21 @@
*/
package edu.uci.ics.asterix.dataflow.data.nontagged.comparators;
+import edu.uci.ics.asterix.dataflow.data.nontagged.Coordinate;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADoubleSerializerDeserializer;
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ALineSerializerDeserializer;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
public class ALinePartialBinaryComparatorFactory implements IBinaryComparatorFactory {
private static final long serialVersionUID = 1L;
-
+
public static final ALinePartialBinaryComparatorFactory INSTANCE = new ALinePartialBinaryComparatorFactory();
-
- private ALinePartialBinaryComparatorFactory(){
-
+
+ private ALinePartialBinaryComparatorFactory() {
+
}
/* (non-Javadoc)
@@ -34,24 +37,50 @@
@Override
public IBinaryComparator createBinaryComparator() {
return new IBinaryComparator() {
-
+
@Override
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
- int c = Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1),
- ADoubleSerializerDeserializer.getDouble(b2, s2));
- if (c == 0) {
- c = Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1 + 8),
- ADoubleSerializerDeserializer.getDouble(b2, s2 + 8));
+ try {
+ int c = Double.compare(
+ ADoubleSerializerDeserializer.getDouble(b1,
+ s1 + ALineSerializerDeserializer.getStartPointCoordinateOffset(Coordinate.X) - 1),
+ ADoubleSerializerDeserializer.getDouble(b2,
+ s2 + ALineSerializerDeserializer.getStartPointCoordinateOffset(Coordinate.X) - 1));
if (c == 0) {
- c = Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1 + 16),
- ADoubleSerializerDeserializer.getDouble(b2, s2 + 16));
- if(c == 0){
- return Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1 + 24),
- ADoubleSerializerDeserializer.getDouble(b2, s2 + 24));
+ c = Double.compare(
+ ADoubleSerializerDeserializer.getDouble(b1,
+ s1 + ALineSerializerDeserializer.getStartPointCoordinateOffset(Coordinate.Y)
+ - 1),
+ ADoubleSerializerDeserializer.getDouble(b2,
+ s2 + ALineSerializerDeserializer.getStartPointCoordinateOffset(Coordinate.Y)
+ - 1));
+ if (c == 0) {
+ c = Double.compare(
+ ADoubleSerializerDeserializer.getDouble(b1,
+ s1 + ALineSerializerDeserializer.getEndPointCoordinateOffset(Coordinate.X)
+ - 1),
+ ADoubleSerializerDeserializer.getDouble(b2,
+ s2 + ALineSerializerDeserializer.getEndPointCoordinateOffset(Coordinate.X)
+ - 1));
+ if (c == 0) {
+ return Double.compare(
+ ADoubleSerializerDeserializer.getDouble(
+ b1,
+ s1
+ + ALineSerializerDeserializer
+ .getEndPointCoordinateOffset(Coordinate.Y) - 1),
+ ADoubleSerializerDeserializer.getDouble(
+ b2,
+ s2
+ + ALineSerializerDeserializer
+ .getEndPointCoordinateOffset(Coordinate.Y) - 1));
+ }
}
}
+ return c;
+ } catch (HyracksDataException hex) {
+ throw new IllegalStateException(hex);
}
- return c;
}
};
}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AObjectAscBinaryComparatorFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AObjectAscBinaryComparatorFactory.java
index 87acbc0..df21f28 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AObjectAscBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AObjectAscBinaryComparatorFactory.java
@@ -33,7 +33,7 @@
.createBinaryComparator();
final IBinaryComparator ascDoubleComp = new PointableBinaryComparatorFactory(DoublePointable.FACTORY)
.createBinaryComparator();
- final IBinaryComparator ascRectangleComp = RectangleBinaryComparatorFactory.INSTANCE
+ final IBinaryComparator ascRectangleComp = ARectanglePartialBinaryComparatorFactory.INSTANCE
.createBinaryComparator();
final IBinaryComparator ascCircleComp = ACirclePartialBinaryComparatorFactory.INSTANCE
.createBinaryComparator();
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/APoint3DPartialBinaryComparatorFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/APoint3DPartialBinaryComparatorFactory.java
index 32c335b..caf855a 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/APoint3DPartialBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/APoint3DPartialBinaryComparatorFactory.java
@@ -14,9 +14,12 @@
*/
package edu.uci.ics.asterix.dataflow.data.nontagged.comparators;
+import edu.uci.ics.asterix.dataflow.data.nontagged.Coordinate;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADoubleSerializerDeserializer;
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.APoint3DSerializerDeserializer;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import edu.uci.ics.hyracks.api.exceptions.HyracksException;
public class APoint3DPartialBinaryComparatorFactory implements IBinaryComparatorFactory {
@@ -37,17 +40,30 @@
@Override
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
- int c = Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1),
- ADoubleSerializerDeserializer.getDouble(b2, s2));
- if (c == 0) {
- c = Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1 + 8),
- ADoubleSerializerDeserializer.getDouble(b2, s2 + 8));
+ try {
+ int c = Double.compare(
+ ADoubleSerializerDeserializer.getDouble(b1,
+ s1 + APoint3DSerializerDeserializer.getCoordinateOffset(Coordinate.X) - 1),
+ ADoubleSerializerDeserializer.getDouble(b2,
+ s2 + APoint3DSerializerDeserializer.getCoordinateOffset(Coordinate.X) - 1));
if (c == 0) {
- return Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1 + 16),
- ADoubleSerializerDeserializer.getDouble(b2, s2 + 16));
+ c = Double.compare(
+ ADoubleSerializerDeserializer.getDouble(b1,
+ s1 + APoint3DSerializerDeserializer.getCoordinateOffset(Coordinate.Y) - 1),
+ ADoubleSerializerDeserializer.getDouble(b2,
+ s2 + APoint3DSerializerDeserializer.getCoordinateOffset(Coordinate.Y) - 1));
+ if (c == 0) {
+ return Double.compare(
+ ADoubleSerializerDeserializer.getDouble(b1,
+ s1 + APoint3DSerializerDeserializer.getCoordinateOffset(Coordinate.Z) - 1),
+ ADoubleSerializerDeserializer.getDouble(b2,
+ s2 + APoint3DSerializerDeserializer.getCoordinateOffset(Coordinate.Z) - 1));
+ }
}
+ return c;
+ } catch (HyracksException hex) {
+ throw new IllegalStateException(hex);
}
- return c;
}
};
}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/APointPartialBinaryComparatorFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/APointPartialBinaryComparatorFactory.java
index 3de6df8..24d47eb 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/APointPartialBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/APointPartialBinaryComparatorFactory.java
@@ -14,9 +14,12 @@
*/
package edu.uci.ics.asterix.dataflow.data.nontagged.comparators;
+import edu.uci.ics.asterix.dataflow.data.nontagged.Coordinate;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADoubleSerializerDeserializer;
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.APointSerializerDeserializer;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
public class APointPartialBinaryComparatorFactory implements IBinaryComparatorFactory {
@@ -34,13 +37,23 @@
@Override
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
- int c = Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1),
- ADoubleSerializerDeserializer.getDouble(b2, s2));
- if (c == 0) {
- return Double.compare(ADoubleSerializerDeserializer.getDouble(b1, s1 + 8),
- ADoubleSerializerDeserializer.getDouble(b2, s2 + 8));
+ try {
+ int c = Double.compare(
+ ADoubleSerializerDeserializer.getDouble(b1,
+ s1 + APointSerializerDeserializer.getCoordinateOffset(Coordinate.X) - 1),
+ ADoubleSerializerDeserializer.getDouble(b2,
+ s2 + APointSerializerDeserializer.getCoordinateOffset(Coordinate.X) - 1));
+ if (c == 0) {
+ return Double.compare(
+ ADoubleSerializerDeserializer.getDouble(b1,
+ s1 + APointSerializerDeserializer.getCoordinateOffset(Coordinate.Y) - 1),
+ ADoubleSerializerDeserializer.getDouble(b2,
+ s2 + APointSerializerDeserializer.getCoordinateOffset(Coordinate.Y) - 1));
+ }
+ return c;
+ } catch (HyracksDataException hex) {
+ throw new IllegalStateException(hex);
}
- return c;
}
};
}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/APolygonPartialBinaryComparatorFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/APolygonPartialBinaryComparatorFactory.java
index 187a478..fec245f 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/APolygonPartialBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/APolygonPartialBinaryComparatorFactory.java
@@ -14,9 +14,12 @@
*/
package edu.uci.ics.asterix.dataflow.data.nontagged.comparators;
+import edu.uci.ics.asterix.dataflow.data.nontagged.Coordinate;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt16SerializerDeserializer;
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.APolygonSerializerDeserializer;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
import edu.uci.ics.hyracks.dataflow.common.data.marshalling.DoubleSerializerDeserializer;
public class APolygonPartialBinaryComparatorFactory implements IBinaryComparatorFactory {
@@ -38,26 +41,48 @@
@Override
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
- short pointCount1 = AInt16SerializerDeserializer.getShort(b1, s1);
- int c = Short.compare(pointCount1, AInt16SerializerDeserializer.getShort(b2, s2));
+ try {
+ short pointCount1 = AInt16SerializerDeserializer.getShort(b1,
+ s1 + APolygonSerializerDeserializer.getNumberOfPointsOffset() - 1);
+ int c = Short.compare(
+ pointCount1,
+ AInt16SerializerDeserializer.getShort(b2,
+ s2 + APolygonSerializerDeserializer.getNumberOfPointsOffset() - 1));
- if (c == 0) {
- int ci = 0;
- for (int i = 0; i < pointCount1; i++) {
- ci = Double.compare(DoubleSerializerDeserializer.getDouble(b1, s1 + 2 + i * 16),
- DoubleSerializerDeserializer.getDouble(b2, s1 + 2 + i * 16));
- if (ci == 0) {
- ci = Double.compare(DoubleSerializerDeserializer.getDouble(b1, s1 + 10 + i * 16),
- DoubleSerializerDeserializer.getDouble(b2, s1 + 10 + i * 16));
+ if (c == 0) {
+ int ci = 0;
+ for (int i = 0; i < pointCount1; i++) {
+ ci = Double.compare(
+ DoubleSerializerDeserializer.getDouble(b1,
+ s1 + APolygonSerializerDeserializer.getCoordinateOffset(i, Coordinate.X)
+ - 1),
+ DoubleSerializerDeserializer.getDouble(b2,
+ s1 + APolygonSerializerDeserializer.getCoordinateOffset(i, Coordinate.X)
+ - 1));
if (ci == 0) {
- continue;
+ ci = Double.compare(
+ DoubleSerializerDeserializer.getDouble(
+ b1,
+ s1
+ + APolygonSerializerDeserializer.getCoordinateOffset(i,
+ Coordinate.Y) - 1),
+ DoubleSerializerDeserializer.getDouble(
+ b2,
+ s1
+ + APolygonSerializerDeserializer.getCoordinateOffset(i,
+ Coordinate.Y) - 1));
+ if (ci == 0) {
+ continue;
+ }
}
+ return ci;
}
- return ci;
}
- }
- return c;
+ return c;
+ } catch (HyracksDataException hex) {
+ throw new IllegalStateException(hex);
+ }
}
};
}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/RectangleBinaryComparatorFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ARectanglePartialBinaryComparatorFactory.java
similarity index 86%
rename from asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/RectangleBinaryComparatorFactory.java
rename to asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ARectanglePartialBinaryComparatorFactory.java
index bdc8409..63d0d24 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/RectangleBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ARectanglePartialBinaryComparatorFactory.java
@@ -4,12 +4,12 @@
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-public class RectangleBinaryComparatorFactory implements IBinaryComparatorFactory {
+public class ARectanglePartialBinaryComparatorFactory implements IBinaryComparatorFactory {
private static final long serialVersionUID = 1L;
- public final static RectangleBinaryComparatorFactory INSTANCE = new RectangleBinaryComparatorFactory();
+ public final static ARectanglePartialBinaryComparatorFactory INSTANCE = new ARectanglePartialBinaryComparatorFactory();
- private RectangleBinaryComparatorFactory() {
+ private ARectanglePartialBinaryComparatorFactory() {
}
@Override
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/hash/AObjectBinaryHashFunctionFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/hash/AObjectBinaryHashFunctionFactory.java
index 45acd7d..f33ab97 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/hash/AObjectBinaryHashFunctionFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/hash/AObjectBinaryHashFunctionFactory.java
@@ -33,8 +33,6 @@
private IBinaryHashFunction doubleHash = DoubleBinaryHashFunctionFactory.INSTANCE
.createBinaryHashFunction();
- private IBinaryHashFunction rectangleHash = RectangleBinaryHashFunctionFactory.INSTANCE
- .createBinaryHashFunction();
private IBinaryHashFunction genericBinaryHash = MurmurHash3BinaryHashFunctionFamily.INSTANCE
.createBinaryHashFunction(0);
@@ -66,9 +64,6 @@
case STRING: {
return stringHash.hash(bytes, offset + 1, length - 1);
}
- case RECTANGLE: {
- return rectangleHash.hash(bytes, offset + 1, length - 1);
- }
case NULL: {
return 0;
}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/hash/RectangleBinaryHashFunctionFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/hash/RectangleBinaryHashFunctionFactory.java
deleted file mode 100644
index 83bc50e..0000000
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/hash/RectangleBinaryHashFunctionFactory.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package edu.uci.ics.asterix.dataflow.data.nontagged.hash;
-
-import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADoubleSerializerDeserializer;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class RectangleBinaryHashFunctionFactory implements IBinaryHashFunctionFactory {
-
- private static final long serialVersionUID = 1L;
-
- public static final RectangleBinaryHashFunctionFactory INSTANCE = new RectangleBinaryHashFunctionFactory();
-
- private RectangleBinaryHashFunctionFactory() {
- }
-
- @Override
- public IBinaryHashFunction createBinaryHashFunction() {
- return new IBinaryHashFunction() {
- @Override
- public int hash(byte[] bytes, int offset, int length) {
- long xBits = ADoubleSerializerDeserializer.getLongBits(bytes, offset);
- long yBits = ADoubleSerializerDeserializer.getLongBits(bytes, offset + 8);
- return (int) ((xBits ^ (xBits >>> 32)) ^ (yBits ^ (yBits >>> 32)));
- }
- };
- }
-
-}
\ No newline at end of file
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/ADurationSerializerDeserializer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/ADurationSerializerDeserializer.java
index be50d48..498a5b8 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/ADurationSerializerDeserializer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/ADurationSerializerDeserializer.java
@@ -62,7 +62,7 @@
* @return
*/
public static int getYearMonth(byte[] data, int offset) {
- return AInt32SerializerDeserializer.getInt(data, offset);
+ return AInt32SerializerDeserializer.getInt(data, offset + getYearMonthOffset());
}
/**
@@ -73,6 +73,14 @@
* @return
*/
public static long getDayTime(byte[] data, int offset) {
- return AInt64SerializerDeserializer.getLong(data, offset + 4);
+ return AInt64SerializerDeserializer.getLong(data, offset + getDayTimeOffset());
+ }
+
+ public static int getYearMonthOffset() {
+ return 0;
+ }
+
+ public static int getDayTimeOffset() {
+ return 4;
}
}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
index 8c4def0..318d10e 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
@@ -66,11 +66,19 @@
}
public static long getIntervalStart(byte[] data, int offset) {
- return AInt64SerializerDeserializer.getLong(data, offset);
+ return AInt64SerializerDeserializer.getLong(data, offset + getIntervalStartOffset());
}
public static long getIntervalEnd(byte[] data, int offset) {
- return AInt64SerializerDeserializer.getLong(data, offset + 8);
+ return AInt64SerializerDeserializer.getLong(data, offset + getIntervalEndOffset());
+ }
+
+ public static int getIntervalStartOffset() {
+ return 0;
+ }
+
+ public static int getIntervalEndOffset() {
+ return 8;
}
public static byte getIntervalTimeType(byte[] data, int offset) {
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java
index d72efb2..6f0cc1c 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java
@@ -12,7 +12,7 @@
import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.APointPartialBinaryComparatorFactory;
import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.APolygonPartialBinaryComparatorFactory;
import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.BooleanBinaryComparatorFactory;
-import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.RectangleBinaryComparatorFactory;
+import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.ARectanglePartialBinaryComparatorFactory;
import edu.uci.ics.asterix.om.types.ATypeTag;
import edu.uci.ics.asterix.om.types.IAType;
import edu.uci.ics.hyracks.algebricks.common.exceptions.NotImplementedException;
@@ -128,7 +128,7 @@
return addOffset(UTF8STRING_POINTABLE_INSTANCE, ascending);
}
case RECTANGLE: {
- return addOffset(RectangleBinaryComparatorFactory.INSTANCE, ascending);
+ return addOffset(ARectanglePartialBinaryComparatorFactory.INSTANCE, ascending);
}
case CIRCLE: {
return addOffset(ACirclePartialBinaryComparatorFactory.INSTANCE, ascending);
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlBinaryHashFunctionFactoryProvider.java b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlBinaryHashFunctionFactoryProvider.java
index 47ba267..467d46f 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlBinaryHashFunctionFactoryProvider.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlBinaryHashFunctionFactoryProvider.java
@@ -7,7 +7,6 @@
import edu.uci.ics.asterix.dataflow.data.nontagged.hash.DoubleBinaryHashFunctionFactory;
import edu.uci.ics.asterix.dataflow.data.nontagged.hash.LongBinaryHashFunctionFactory;
import edu.uci.ics.asterix.dataflow.data.nontagged.hash.MurmurHash3BinaryHashFunctionFamily;
-import edu.uci.ics.asterix.dataflow.data.nontagged.hash.RectangleBinaryHashFunctionFactory;
import edu.uci.ics.asterix.om.types.IAType;
import edu.uci.ics.hyracks.algebricks.data.IBinaryHashFunctionFactoryProvider;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
@@ -89,9 +88,6 @@
case STRING: {
return addOffset(new PointableBinaryHashFunctionFactory(UTF8StringPointable.FACTORY));
}
- case RECTANGLE: {
- return addOffset(RectangleBinaryHashFunctionFactory.INSTANCE);
- }
default: {
return addOffsetForGenericBinaryHash();
}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
index b13c7cc..06a7823 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
@@ -9,7 +9,7 @@
import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.APoint3DPartialBinaryComparatorFactory;
import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.APointPartialBinaryComparatorFactory;
import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.APolygonPartialBinaryComparatorFactory;
-import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.RectangleBinaryComparatorFactory;
+import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.ARectanglePartialBinaryComparatorFactory;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADoubleSerializerDeserializer;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AFloatSerializerDeserializer;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt16SerializerDeserializer;
@@ -69,7 +69,7 @@
.createBinaryComparator();
protected IBinaryComparator polygonBinaryComparator = APolygonPartialBinaryComparatorFactory.INSTANCE
.createBinaryComparator();
- protected IBinaryComparator rectangleBinaryComparator = RectangleBinaryComparatorFactory.INSTANCE
+ protected IBinaryComparator rectangleBinaryComparator = ARectanglePartialBinaryComparatorFactory.INSTANCE
.createBinaryComparator();
public AbstractComparisonEvaluator(DataOutput out, ICopyEvaluatorFactory evalLeftFactory,
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/ADMDataParser.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/ADMDataParser.java
index b32110b..35c0529 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/ADMDataParser.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/ADMDataParser.java
@@ -33,6 +33,7 @@
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ACircleSerializerDeserializer;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADateSerializerDeserializer;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADateTimeSerializerDeserializer;
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADayTimeDurationSerializerDeserializer;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADurationSerializerDeserializer;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ALineSerializerDeserializer;
@@ -41,6 +42,7 @@
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.APolygonSerializerDeserializer;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ARectangleSerializerDeserializer;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ATimeSerializerDeserializer;
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AYearMonthDurationerializerDeserializer;
import edu.uci.ics.asterix.om.base.ABoolean;
import edu.uci.ics.asterix.om.base.ANull;
import edu.uci.ics.asterix.om.types.AOrderedListType;
@@ -288,6 +290,14 @@
parseConstructor(ATypeTag.DURATION, objectType, out);
break;
}
+ case AdmLexer.TOKEN_YEAR_MONTH_DURATION_CONS: {
+ parseConstructor(ATypeTag.YEARMONTHDURATION, objectType, out);
+ break;
+ }
+ case AdmLexer.TOKEN_DAY_TIME_DURATION_CONS: {
+ parseConstructor(ATypeTag.DAYTIMEDURATION, objectType, out);
+ break;
+ }
case AdmLexer.TOKEN_POINT_CONS: {
parseConstructor(ATypeTag.POINT, objectType, out);
break;
@@ -363,6 +373,22 @@
}
+ private void parseYearMonthDuration(String duration, DataOutput out) throws AsterixException {
+ try {
+ AYearMonthDurationerializerDeserializer.parse(duration, out);
+ } catch (HyracksDataException e) {
+ throw new AsterixException(e);
+ }
+ }
+
+ private void parseDayTimeDuration(String duration, DataOutput out) throws AsterixException {
+ try {
+ ADayTimeDurationSerializerDeserializer.parse(duration, out);
+ } catch (HyracksDataException e) {
+ throw new AsterixException(e);
+ }
+ }
+
private IAType getComplexType(IAType aObjectType, ATypeTag tag) {
if (aObjectType == null) {
@@ -762,6 +788,16 @@
admLexer.getLastTokenImage().substring(1,
admLexer.getLastTokenImage().length() - 1), out);
break;
+ case DAYTIMEDURATION:
+ parseDayTimeDuration(
+ admLexer.getLastTokenImage().substring(1,
+ admLexer.getLastTokenImage().length() - 1), out);
+ break;
+ case YEARMONTHDURATION:
+ parseYearMonthDuration(
+ admLexer.getLastTokenImage().substring(1,
+ admLexer.getLastTokenImage().length() - 1), out);
+ break;
case POINT:
parsePoint(
admLexer.getLastTokenImage().substring(1,
diff --git a/asterix-runtime/src/main/resources/adm.grammar b/asterix-runtime/src/main/resources/adm.grammar
index 4d4158f..80e2cd4 100644
--- a/asterix-runtime/src/main/resources/adm.grammar
+++ b/asterix-runtime/src/main/resources/adm.grammar
@@ -29,6 +29,8 @@
INTERVAL_TIME_CONS = string(interval-time)
INTERVAL_DATE_CONS = string(interval-date)
INTERVAL_DATETIME_CONS = string(interval-datetime)
+YEAR_MONTH_DURATION_CONS = string(year-month-duration)
+DAY_TIME_DURATION_CONS = string(day-time-duration)
NULL_LITERAL = string(null)
TRUE_LITERAL = string(true)