You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by dl...@apache.org on 2020/08/17 18:44:33 UTC
[asterixdb] branch master updated: [NO ISSUE] Added Optimized
Interval Joins
This is an automated email from the ASF dual-hosted git repository.
dlych pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new 8d9c57a [NO ISSUE] Added Optimized Interval Joins
8d9c57a is described below
commit 8d9c57abe191b76dd976d7ab2f611ae1beb7bf6e
Author: Caleb Herbel <ca...@gmail.com>
AuthorDate: Fri Aug 14 20:41:13 2020 -0600
[NO ISSUE] Added Optimized Interval Joins
- user model changes: no
- storage format changes: no
- interface changes: no
details:
-Support for optimized interval joins over the 7 of the 13 Allen's relations: Before, After, Covers, Covered_by, Overlaps, Overlapping, and Overlapped_by. Starts, Started_by, ends, ended_by, meets, and met_by are not yet implemented and will default to Hybrid Hash Join.
-Adds a RangeHint
-Updates Optimizer tests for interval joins
-Updates interval join runtime tests to include range hints, tests for time and datetime, and a new data point that tests for additional cases
-Support for PartialBroadcastRangeFollowingExchange and PartialBroadcastRangeIntersectExchange physical operators
-Adds IntervalMergeJoinPOperator and a IntervalMergeJoin Operator Descriptor with a IntervalMergeJoin algorithm and supporting files
-Adds a RunFileStream, RunFilePointer, and a TupleAccessor
Change-Id: Ib90a953881461f8574f1170ad2264b95fa81fd4b
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/7163
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Dmitry Lychagin <dm...@couchbase.com>
---
.../physical/IntervalMergeJoinPOperator.java | 195 +++++++++++++++
.../rules/SetAsterixPhysicalOperatorsRule.java | 23 ++
.../optimizer/rules/util/AsterixJoinUtils.java | 83 +++++++
.../optimizer/rules/util/IntervalJoinUtils.java | 251 ++++++++++++++++++++
.../optimizer/rules/util/IntervalPartitions.java | 82 +++++++
asterixdb/asterix-app/data/tinycollege/staff.adm | 15 +-
.../asterix-app/data/tinycollege/students.adm | 14 +-
.../interval_after/interval_after.3.query.sqlpp | 10 +-
.../interval_before/interval_before.3.query.sqlpp | 8 +-
.../interval_covered_by.3.query.sqlpp | 10 +-
.../interval_covers/interval_covers.3.query.sqlpp | 10 +-
.../interval_ended_by.3.query.sqlpp | 12 +-
.../interval_ends/interval_ends.3.query.sqlpp | 12 +-
.../interval_meets/interval_meets.3.query.sqlpp | 12 +-
.../interval_met_by/interval_met_by.3.query.sqlpp | 12 +-
.../interval_overlapped_by.3.query.sqlpp | 10 +-
.../interval_overlapping.3.query.sqlpp | 10 +-
.../interval_overlaps.3.query.sqlpp | 10 +-
.../interval_started_by.3.query.sqlpp | 12 +-
.../interval_starts/interval_starts.3.query.sqlpp | 12 +-
.../interval_after/interval_after.3.query.plan | 45 ++--
.../interval_before/interval_before.3.query.plan | 38 +--
.../interval_covered_by.3.query.plan | 38 +--
.../interval_covers/interval_covers.3.query.plan | 38 +--
.../interval_overlapped_by.3.query.plan | 38 +--
.../interval_overlapping.3.query.plan | 38 +--
.../interval_overlaps.3.query.plan | 38 +--
.../interval_after/interval_after.1.ddl.sqlpp | 11 +-
...5.query.sqlpp => interval_after.10.query.sqlpp} | 6 +-
.../interval_after.11.query.sqlpp} | 6 +-
.../interval_after.12.query.sqlpp} | 6 +-
...5.query.sqlpp => interval_after.13.query.sqlpp} | 6 +-
...5.query.sqlpp => interval_after.14.query.sqlpp} | 6 +-
.../interval_after/interval_after.2.update.sqlpp | 2 +-
.../interval_after/interval_after.3.query.sqlpp | 6 +-
.../interval_after/interval_after.4.query.sqlpp | 6 +-
.../interval_after/interval_after.5.query.sqlpp | 6 +-
.../interval_after/interval_after.6.query.sqlpp | 6 +-
.../interval_after.7.query.sqlpp} | 6 +-
.../interval_after.8.query.sqlpp} | 6 +-
....5.query.sqlpp => interval_after.9.query.sqlpp} | 6 +-
.../interval_before/interval_before.1.ddl.sqlpp | 10 +-
.../interval_before.10.query.sqlpp} | 6 +-
....query.sqlpp => interval_before.11.query.sqlpp} | 6 +-
....query.sqlpp => interval_before.12.query.sqlpp} | 6 +-
.../interval_before.13.query.sqlpp} | 6 +-
.../interval_before.14.query.sqlpp} | 6 +-
.../interval_before/interval_before.2.update.sqlpp | 2 +-
.../interval_before/interval_before.3.query.sqlpp | 6 +-
.../interval_before/interval_before.4.query.sqlpp | 6 +-
.../interval_before/interval_before.5.query.sqlpp | 6 +-
.../interval_before/interval_before.6.query.sqlpp | 6 +-
...3.query.sqlpp => interval_before.7.query.sqlpp} | 6 +-
...3.query.sqlpp => interval_before.8.query.sqlpp} | 6 +-
.../interval_before.9.query.sqlpp} | 6 +-
.../interval_covered_by.1.ddl.sqlpp | 10 +-
.../interval_covered_by.10.query.sqlpp} | 6 +-
.../interval_covered_by.11.query.sqlpp} | 6 +-
.../interval_covered_by.12.query.sqlpp} | 6 +-
.../interval_covered_by.13.query.sqlpp} | 6 +-
.../interval_covered_by.14.query.sqlpp} | 6 +-
.../interval_covered_by.2.update.sqlpp | 2 +-
.../interval_covered_by.3.query.sqlpp | 6 +-
.../interval_covered_by.4.query.sqlpp | 6 +-
.../interval_covered_by.5.query.sqlpp | 6 +-
.../interval_covered_by.6.query.sqlpp | 6 +-
.../interval_covered_by.7.query.sqlpp} | 6 +-
.../interval_covered_by.8.query.sqlpp} | 6 +-
.../interval_covered_by.9.query.sqlpp} | 6 +-
.../interval_covers/interval_covers.1.ddl.sqlpp | 10 +-
.../interval_covers.10.query.sqlpp} | 6 +-
.../interval_covers.11.query.sqlpp} | 6 +-
.../interval_covers.12.query.sqlpp} | 6 +-
.../interval_covers.13.query.sqlpp} | 6 +-
.../interval_covers.14.query.sqlpp} | 6 +-
.../interval_covers/interval_covers.2.update.sqlpp | 2 +-
.../interval_covers/interval_covers.3.query.sqlpp | 6 +-
.../interval_covers/interval_covers.4.query.sqlpp | 6 +-
.../interval_covers/interval_covers.5.query.sqlpp | 6 +-
.../interval_covers/interval_covers.6.query.sqlpp | 6 +-
.../interval_covers.7.query.sqlpp} | 6 +-
.../interval_covers.8.query.sqlpp} | 6 +-
.../interval_covers.9.query.sqlpp} | 6 +-
.../interval_ended_by.1.ddl.sqlpp | 12 +-
.../interval_ended_by.10.query.sqlpp} | 8 +-
.../interval_ended_by.11.query.sqlpp} | 8 +-
.../interval_ended_by.12.query.sqlpp} | 8 +-
.../interval_ended_by.13.query.sqlpp} | 8 +-
.../interval_ended_by.14.query.sqlpp} | 8 +-
.../interval_ended_by.2.update.sqlpp | 4 +-
.../interval_ended_by.3.query.sqlpp | 8 +-
.../interval_ended_by.4.query.sqlpp | 8 +-
.../interval_ended_by.5.query.sqlpp | 8 +-
.../interval_ended_by.6.query.sqlpp | 8 +-
.../interval_ended_by.7.query.sqlpp} | 8 +-
.../interval_ended_by.8.query.sqlpp} | 8 +-
.../interval_ended_by.9.query.sqlpp} | 8 +-
.../interval_ends/interval_ends.1.ddl.sqlpp | 12 +-
.../interval_ends.10.query.sqlpp} | 8 +-
.../interval_ends.11.query.sqlpp} | 8 +-
.../interval_ends.12.query.sqlpp} | 8 +-
.../interval_ends.13.query.sqlpp} | 8 +-
.../interval_ends.14.query.sqlpp} | 8 +-
.../interval_ends/interval_ends.2.update.sqlpp | 4 +-
.../interval_ends/interval_ends.3.query.sqlpp | 8 +-
.../interval_ends/interval_ends.4.query.sqlpp | 8 +-
.../interval_ends/interval_ends.5.query.sqlpp | 8 +-
.../interval_ends/interval_ends.6.query.sqlpp | 8 +-
.../interval_ends.7.query.sqlpp} | 8 +-
.../interval_ends.8.query.sqlpp} | 8 +-
.../interval_ends.9.query.sqlpp} | 8 +-
.../interval_meets/interval_meets.1.ddl.sqlpp | 12 +-
.../interval_meets.10.query.sqlpp} | 8 +-
.../interval_meets.11.query.sqlpp} | 8 +-
.../interval_meets.12.query.sqlpp} | 8 +-
.../interval_meets.13.query.sqlpp} | 8 +-
.../interval_meets.14.query.sqlpp} | 8 +-
.../interval_meets/interval_meets.2.update.sqlpp | 4 +-
.../interval_meets/interval_meets.3.query.sqlpp | 8 +-
.../interval_meets/interval_meets.4.query.sqlpp | 8 +-
.../interval_meets/interval_meets.5.query.sqlpp | 8 +-
.../interval_meets/interval_meets.6.query.sqlpp | 8 +-
.../interval_meets.7.query.sqlpp} | 8 +-
.../interval_meets.8.query.sqlpp} | 8 +-
.../interval_meets.9.query.sqlpp} | 8 +-
.../interval_met_by/interval_met_by.1.ddl.sqlpp | 12 +-
.../interval_met_by.10.query.sqlpp} | 8 +-
.../interval_met_by.11.query.sqlpp} | 8 +-
.../interval_met_by.12.query.sqlpp} | 8 +-
.../interval_met_by.13.query.sqlpp} | 8 +-
.../interval_met_by.14.query.sqlpp} | 8 +-
.../interval_met_by/interval_met_by.2.update.sqlpp | 4 +-
.../interval_met_by/interval_met_by.3.query.sqlpp | 8 +-
.../interval_met_by/interval_met_by.4.query.sqlpp | 8 +-
.../interval_met_by/interval_met_by.5.query.sqlpp | 8 +-
.../interval_met_by/interval_met_by.6.query.sqlpp | 8 +-
.../interval_met_by.7.query.sqlpp} | 8 +-
.../interval_met_by.8.query.sqlpp} | 8 +-
.../interval_met_by.9.query.sqlpp} | 8 +-
.../interval_overlapped_by.1.ddl.sqlpp | 10 +-
.../interval_overlapped_by.10.query.sqlpp} | 6 +-
.../interval_overlapped_by.11.query.sqlpp} | 6 +-
.../interval_overlapped_by.12.query.sqlpp} | 6 +-
.../interval_overlapped_by.13.query.sqlpp} | 6 +-
.../interval_overlapped_by.14.query.sqlpp} | 6 +-
.../interval_overlapped_by.2.update.sqlpp | 2 +-
.../interval_overlapped_by.3.query.sqlpp | 6 +-
.../interval_overlapped_by.4.query.sqlpp | 6 +-
.../interval_overlapped_by.5.query.sqlpp | 6 +-
.../interval_overlapped_by.6.query.sqlpp | 6 +-
.../interval_overlapped_by.7.query.sqlpp} | 6 +-
.../interval_overlapped_by.8.query.sqlpp} | 6 +-
.../interval_overlapped_by.9.query.sqlpp} | 6 +-
.../interval_overlapping.1.ddl.sqlpp | 10 +-
.../interval_overlapping.10.query.sqlpp} | 6 +-
.../interval_overlapping.11.query.sqlpp} | 6 +-
.../interval_overlapping.12.query.sqlpp} | 6 +-
.../interval_overlapping.13.query.sqlpp} | 6 +-
.../interval_overlapping.14.query.sqlpp} | 6 +-
.../interval_overlapping.2.update.sqlpp | 2 +-
.../interval_overlapping.3.query.sqlpp | 6 +-
.../interval_overlapping.4.query.sqlpp | 6 +-
.../interval_overlapping.5.query.sqlpp | 6 +-
.../interval_overlapping.6.query.sqlpp | 6 +-
.../interval_overlapping.7.query.sqlpp} | 6 +-
.../interval_overlapping.8.query.sqlpp} | 6 +-
.../interval_overlapping.9.query.sqlpp} | 6 +-
.../interval_overlaps.1.ddl.sqlpp | 10 +-
.../interval_overlaps.10.query.sqlpp} | 6 +-
.../interval_overlaps.11.query.sqlpp} | 6 +-
.../interval_overlaps.12.query.sqlpp} | 6 +-
.../interval_overlaps.13.query.sqlpp} | 6 +-
.../interval_overlaps.14.query.sqlpp} | 6 +-
.../interval_overlaps.2.update.sqlpp | 2 +-
.../interval_overlaps.3.query.sqlpp | 6 +-
.../interval_overlaps.4.query.sqlpp | 6 +-
.../interval_overlaps.5.query.sqlpp | 6 +-
.../interval_overlaps.6.query.sqlpp | 6 +-
.../interval_overlaps.7.query.sqlpp} | 6 +-
.../interval_overlaps.8.query.sqlpp} | 6 +-
.../interval_overlaps.9.query.sqlpp} | 6 +-
.../interval_started_by.1.ddl.sqlpp | 12 +-
.../interval_started_by.10.query.sqlpp} | 8 +-
.../interval_started_by.11.query.sqlpp} | 8 +-
.../interval_started_by.12.query.sqlpp} | 8 +-
.../interval_started_by.13.query.sqlpp} | 8 +-
.../interval_started_by.14.query.sqlpp} | 8 +-
.../interval_started_by.2.update.sqlpp | 4 +-
.../interval_started_by.3.query.sqlpp | 8 +-
.../interval_started_by.4.query.sqlpp | 8 +-
.../interval_started_by.5.query.sqlpp | 8 +-
.../interval_started_by.6.query.sqlpp | 8 +-
.../interval_started_by.7.query.sqlpp} | 8 +-
.../interval_started_by.8.query.sqlpp} | 8 +-
.../interval_started_by.9.query.sqlpp} | 8 +-
.../interval_starts/interval_starts.1.ddl.sqlpp | 12 +-
.../interval_starts.10.query.sqlpp} | 8 +-
.../interval_starts.11.query.sqlpp} | 8 +-
.../interval_starts.12.query.sqlpp} | 8 +-
.../interval_starts.13.query.sqlpp} | 8 +-
.../interval_starts.14.query.sqlpp} | 8 +-
.../interval_starts/interval_starts.2.update.sqlpp | 4 +-
.../interval_starts/interval_starts.3.query.sqlpp | 8 +-
.../interval_starts/interval_starts.4.query.sqlpp | 8 +-
.../interval_starts/interval_starts.5.query.sqlpp | 8 +-
.../interval_starts/interval_starts.6.query.sqlpp | 8 +-
.../interval_starts.7.query.sqlpp} | 8 +-
.../interval_starts.8.query.sqlpp} | 8 +-
.../interval_starts.9.query.sqlpp} | 8 +-
.../interval_after.10.adm} | 2 +-
.../interval_after/interval_after.11.adm | 9 +
.../interval_after.12.adm} | 2 +-
.../interval_after/interval_after.13.adm | 9 +
.../interval_after.14.adm} | 2 +-
.../interval_after/interval_after.3.adm | 12 +-
.../interval_after/interval_after.5.adm | 12 +-
.../interval_after/interval_after.7.adm | 9 +
.../interval_after.8.adm} | 2 +-
.../interval_after/interval_after.9.adm | 9 +
.../interval_before/interval_before.10.adm | 9 +
...nterval_before.3.adm => interval_before.11.adm} | 2 +-
.../interval_before/interval_before.12.adm | 9 +
...nterval_before.3.adm => interval_before.13.adm} | 2 +-
.../interval_before/interval_before.14.adm | 9 +
.../interval_before/interval_before.3.adm | 2 +-
.../interval_before/interval_before.4.adm | 12 +-
.../interval_before/interval_before.5.adm | 2 +-
.../interval_before/interval_before.6.adm | 12 +-
...interval_before.3.adm => interval_before.7.adm} | 2 +-
.../interval_before/interval_before.8.adm | 9 +
...interval_before.3.adm => interval_before.9.adm} | 2 +-
...covered_by.4.adm => interval_covered_by.10.adm} | 6 +-
.../interval_covered_by/interval_covered_by.11.adm | 4 +
...covered_by.4.adm => interval_covered_by.12.adm} | 6 +-
.../interval_covered_by/interval_covered_by.13.adm | 4 +
...covered_by.4.adm => interval_covered_by.14.adm} | 6 +-
.../interval_covered_by/interval_covered_by.4.adm | 6 +-
.../interval_covered_by/interval_covered_by.6.adm | 6 +-
.../interval_covered_by/interval_covered_by.7.adm | 4 +
..._covered_by.4.adm => interval_covered_by.8.adm} | 6 +-
.../interval_covered_by/interval_covered_by.9.adm | 4 +
.../interval_covers/interval_covers.10.adm | 4 +
.../interval_covers.11.adm} | 6 +-
.../interval_covers/interval_covers.12.adm | 4 +
.../interval_covers.13.adm} | 6 +-
.../interval_covers/interval_covers.14.adm | 4 +
.../interval_covers/interval_covers.3.adm | 6 +-
.../interval_covers/interval_covers.5.adm | 6 +-
.../interval_covers.7.adm} | 6 +-
.../interval_covers/interval_covers.8.adm | 4 +
.../interval_covers.9.adm} | 6 +-
...val_ended_by.4.adm => interval_ended_by.10.adm} | 4 +-
.../interval_ended_by/interval_ended_by.11.adm | 1 +
...val_ended_by.4.adm => interval_ended_by.12.adm} | 4 +-
.../interval_ended_by/interval_ended_by.13.adm | 1 +
...val_ended_by.4.adm => interval_ended_by.14.adm} | 4 +-
.../interval_ended_by/interval_ended_by.4.adm | 4 +-
.../interval_ended_by/interval_ended_by.6.adm | 4 +-
.../interval_ended_by/interval_ended_by.7.adm | 1 +
...rval_ended_by.4.adm => interval_ended_by.8.adm} | 4 +-
.../interval_ended_by/interval_ended_by.9.adm | 1 +
.../interval_ends/interval_ends.10.adm | 1 +
.../interval_ends.11.adm} | 4 +-
.../interval_ends/interval_ends.12.adm | 1 +
.../interval_ends.13.adm} | 4 +-
.../interval_ends/interval_ends.14.adm | 1 +
.../interval_ends/interval_ends.3.adm | 4 +-
.../interval_ends/interval_ends.5.adm | 4 +-
.../interval_ends.7.adm} | 4 +-
.../interval_ends/interval_ends.8.adm | 1 +
.../interval_ends.9.adm} | 4 +-
.../interval_meets/interval_meets.10.adm | 4 +
...{interval_meets.3.adm => interval_meets.11.adm} | 1 +
.../interval_meets/interval_meets.12.adm | 4 +
...{interval_meets.3.adm => interval_meets.13.adm} | 1 +
.../interval_meets/interval_meets.14.adm | 4 +
.../interval_meets/interval_meets.3.adm | 1 +
.../interval_meets/interval_meets.5.adm | 1 +
.../{interval_meets.3.adm => interval_meets.7.adm} | 1 +
.../interval_meets/interval_meets.8.adm | 4 +
.../{interval_meets.3.adm => interval_meets.9.adm} | 1 +
.../interval_met_by.10.adm} | 1 +
.../interval_met_by/interval_met_by.11.adm | 4 +
.../interval_met_by.12.adm} | 1 +
.../interval_met_by/interval_met_by.13.adm | 4 +
.../interval_met_by.14.adm} | 1 +
.../interval_met_by/interval_met_by.4.adm | 1 +
.../interval_met_by/interval_met_by.6.adm | 1 +
.../interval_met_by/interval_met_by.7.adm | 4 +
.../interval_met_by.8.adm} | 1 +
.../interval_met_by/interval_met_by.9.adm | 4 +
...pped_by.4.adm => interval_overlapped_by.10.adm} | 2 +
.../interval_overlapped_by.11.adm | 10 +
...pped_by.4.adm => interval_overlapped_by.12.adm} | 2 +
.../interval_overlapped_by.13.adm | 10 +
...pped_by.4.adm => interval_overlapped_by.14.adm} | 2 +
.../interval_overlapped_by.4.adm | 2 +
.../interval_overlapped_by.6.adm | 2 +
.../interval_overlapped_by.7.adm | 10 +
...apped_by.4.adm => interval_overlapped_by.8.adm} | 2 +
.../interval_overlapped_by.9.adm | 10 +
...erlapping.3.adm => interval_overlapping.10.adm} | 8 +-
...erlapping.3.adm => interval_overlapping.11.adm} | 8 +-
...erlapping.3.adm => interval_overlapping.12.adm} | 8 +-
...erlapping.3.adm => interval_overlapping.13.adm} | 8 +-
...erlapping.3.adm => interval_overlapping.14.adm} | 8 +-
.../interval_overlapping.3.adm | 8 +-
.../interval_overlapping.4.adm | 8 +-
.../interval_overlapping.5.adm | 8 +-
.../interval_overlapping.6.adm | 8 +-
...verlapping.3.adm => interval_overlapping.7.adm} | 8 +-
...verlapping.3.adm => interval_overlapping.8.adm} | 8 +-
...verlapping.3.adm => interval_overlapping.9.adm} | 8 +-
.../interval_overlaps/interval_overlaps.10.adm | 10 +
.../interval_overlaps.11.adm} | 2 +
.../interval_overlaps/interval_overlaps.12.adm | 10 +
.../interval_overlaps.13.adm} | 2 +
.../interval_overlaps/interval_overlaps.14.adm | 10 +
.../interval_overlaps/interval_overlaps.3.adm | 2 +
.../interval_overlaps/interval_overlaps.5.adm | 2 +
.../interval_overlaps.7.adm} | 2 +
.../interval_overlaps/interval_overlaps.8.adm | 10 +
.../interval_overlaps.9.adm} | 2 +
.../interval_started_by/interval_started_by.10.adm | 1 +
.../interval_started_by/interval_started_by.11.adm | 4 +
.../interval_started_by/interval_started_by.12.adm | 1 +
.../interval_started_by/interval_started_by.13.adm | 4 +
.../interval_started_by/interval_started_by.14.adm | 1 +
.../interval_started_by/interval_started_by.7.adm | 4 +
.../interval_started_by/interval_started_by.8.adm | 1 +
.../interval_started_by/interval_started_by.9.adm | 4 +
.../interval_starts/interval_starts.10.adm | 4 +
.../interval_starts/interval_starts.11.adm | 1 +
.../interval_starts/interval_starts.12.adm | 4 +
.../interval_starts/interval_starts.13.adm | 1 +
.../interval_starts/interval_starts.14.adm | 4 +
.../interval_starts/interval_starts.7.adm | 1 +
.../interval_starts/interval_starts.8.adm | 4 +
.../interval_starts/interval_starts.9.adm | 1 +
.../test/resources/runtimets/testsuite_sqlpp.xml | 4 +-
.../common/annotations/RangeAnnotation.java} | 45 ++--
.../asterix-lang-sqlpp/src/main/javacc/SQLPP.jj | 39 +--
.../functions/temporal/IntervalLogic.java | 30 +--
.../IntervalMergeJoinOperatorDescriptor.java | 186 +++++++++++++++
.../joins/interval/IntervalMergeJoiner.java | 264 +++++++++++++++++++++
.../utils/AbstractIntervalInverseJoinUtil.java | 52 ++++
.../interval/utils/AbstractIntervalJoinUtil.java | 115 +++++++++
.../interval/utils/AfterIntervalJoinUtil.java | 62 +++++
.../utils/AfterIntervalJoinUtilFactory.java} | 20 +-
.../interval/utils/BeforeIntervalJoinUtil.java | 62 +++++
.../utils/BeforeIntervalJoinUtilFactory.java} | 20 +-
.../interval/utils/CoveredByIntervalJoinUtil.java | 59 +++++
.../utils/CoveredByIntervalJoinUtilFactory.java} | 20 +-
.../interval/utils/CoversIntervalJoinUtil.java} | 34 +--
.../utils/CoversIntervalJoinUtilFactory.java} | 20 +-
.../joins/interval/utils/IIntervalJoinUtil.java | 102 ++++++++
.../interval/utils/IIntervalJoinUtilFactory.java} | 19 +-
.../utils/OverlappedByIntervalJoinUtil.java} | 34 +--
.../OverlappedByIntervalJoinUtilFactory.java} | 20 +-
.../utils/OverlappingIntervalJoinUtil.java | 88 +++++++
.../utils/OverlappingIntervalJoinUtilFactory.java | 71 ++++++
.../interval/utils/OverlapsIntervalJoinUtil.java} | 34 +--
.../utils/OverlapsIntervalJoinUtilFactory.java} | 20 +-
.../utils/memory/AbstractTupleAccessor.java | 194 +++++++++++++++
.../interval/utils/memory/ITupleAccessor.java | 69 ++++++
.../interval/utils/memory/IntervalJoinUtil.java | 82 +++++++
.../interval/utils/memory/IntervalSideTuple.java | 99 ++++++++
...ntervalVariableDeletableTupleMemoryManager.java | 112 +++++++++
.../interval/utils/memory/RunFilePointer.java | 96 ++++++++
.../joins/interval/utils/memory/RunFileStream.java | 201 ++++++++++++++++
.../joins/interval/utils/memory/TupleAccessor.java | 118 +++++++++
.../core/algebra/base/PhysicalOperatorTag.java | 3 +
.../logical/visitors/UsedVariableVisitor.java | 28 ++-
...or.java => AbstractRangeExchangePOperator.java} | 107 +++++----
...alBroadcastRangeFollowingExchangePOperator.java | 87 +++++++
...lBroadcastRangeIntersectExchangePOperator.java} | 115 ++++-----
.../physical/RangePartitionExchangePOperator.java | 74 +-----
.../RangePartitionMergeExchangePOperator.java | 154 ------------
...ava => AbstractOrderedPartitionedProperty.java} | 38 ++-
.../algebra/properties/IPartitioningProperty.java | 22 +-
.../core/algebra/properties/IntervalColumn.java | 78 ++++++
.../properties/OrderedPartitionedProperty.java | 77 +-----
.../PartialBroadcastOrderedFollowingProperty.java | 52 ++++
... PartialBroadcastOrderedIntersectProperty.java} | 78 +++---
.../core/algebra/properties/PropertiesUtil.java | 26 ++
.../core/utils/LogicalOperatorDotVisitor.java | 6 +
.../rules/EnforceStructuralPropertiesRule.java | 30 ++-
.../VariableDeletableTupleMemoryManager.java | 4 +-
388 files changed, 4975 insertions(+), 1316 deletions(-)
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalMergeJoinPOperator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalMergeJoinPOperator.java
new file mode 100644
index 0000000..4815349
--- /dev/null
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalMergeJoinPOperator.java
@@ -0,0 +1,195 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.algebra.operators.physical;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.asterix.optimizer.rules.util.IntervalPartitions;
+import org.apache.asterix.runtime.operators.joins.interval.IntervalMergeJoinOperatorDescriptor;
+import org.apache.asterix.runtime.operators.joins.interval.utils.IIntervalJoinUtilFactory;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.IHyracksJobBuilder;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator.JoinKind;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.AbstractJoinPOperator;
+import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.INodeDomain;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningRequirementsCoordinator;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
+import org.apache.hyracks.algebricks.core.algebra.properties.LocalOrderProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
+import org.apache.hyracks.algebricks.core.algebra.properties.OrderedPartitionedProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.PartialBroadcastOrderedFollowingProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.PartialBroadcastOrderedIntersectProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
+import org.apache.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
+import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
+import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenHelper;
+import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public class IntervalMergeJoinPOperator extends AbstractJoinPOperator {
+
+ private final List<LogicalVariable> keysLeftBranch;
+ private final List<LogicalVariable> keysRightBranch;
+ protected final IIntervalJoinUtilFactory mjcf;
+ protected final IntervalPartitions intervalPartitions;
+
+ private final int memSizeInFrames;
+
+ public IntervalMergeJoinPOperator(JoinKind kind, JoinPartitioningType partitioningType,
+ List<LogicalVariable> sideLeftOfEqualities, List<LogicalVariable> sideRightOfEqualities,
+ int memSizeInFrames, IIntervalJoinUtilFactory mjcf, IntervalPartitions intervalPartitions) {
+ super(kind, partitioningType);
+ this.keysLeftBranch = sideLeftOfEqualities;
+ this.keysRightBranch = sideRightOfEqualities;
+ this.mjcf = mjcf;
+ this.intervalPartitions = intervalPartitions;
+ this.memSizeInFrames = memSizeInFrames;
+ }
+
+ public IIntervalJoinUtilFactory getIntervalMergeJoinCheckerFactory() {
+ return mjcf;
+ }
+
+ @Override
+ public PhysicalOperatorTag getOperatorTag() {
+ return PhysicalOperatorTag.INTERVAL_MERGE_JOIN;
+ }
+
+ @Override
+ public String toString() {
+ return "INTERVAL_MERGE_JOIN" + " " + keysLeftBranch + " " + keysRightBranch;
+ }
+
+ @Override
+ public boolean isMicroOperator() {
+ return false;
+ }
+
+ @Override
+ public void computeDeliveredProperties(ILogicalOperator iop, IOptimizationContext context) {
+ List<OrderColumn> order = intervalPartitions.getLeftStartColumn();
+ IPartitioningProperty pp = new OrderedPartitionedProperty(order, null, intervalPartitions.getRangeMap());
+ List<ILocalStructuralProperty> propsLocal = new ArrayList<>();
+ propsLocal.add(new LocalOrderProperty(intervalPartitions.getLeftStartColumn()));
+ deliveredProperties = new StructuralPropertiesVector(pp, propsLocal);
+ }
+
+ @Override
+ public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator iop,
+ IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
+ StructuralPropertiesVector[] pv = new StructuralPropertiesVector[2];
+ AbstractLogicalOperator op = (AbstractLogicalOperator) iop;
+
+ //Create Left Local Order Column
+ IPartitioningProperty ppLeft = null;
+ List<ILocalStructuralProperty> ispLeft = new ArrayList<>();
+ ArrayList<OrderColumn> leftLocalOrderColumn = new ArrayList<>();
+ for (LogicalVariable v : keysLeftBranch) {
+ leftLocalOrderColumn.add(new OrderColumn(v, intervalPartitions.getLeftIntervalColumn().get(0).getOrder()));
+ }
+ ispLeft.add(new LocalOrderProperty(leftLocalOrderColumn));
+
+ //Create Right Local Order Column
+ IPartitioningProperty ppRight = null;
+ List<ILocalStructuralProperty> ispRight = new ArrayList<>();
+ ArrayList<OrderColumn> rightLocalOrderColumn = new ArrayList<>();
+ for (LogicalVariable v : keysRightBranch) {
+ rightLocalOrderColumn
+ .add(new OrderColumn(v, intervalPartitions.getRightIntervalColumn().get(0).getOrder()));
+ }
+ ispRight.add(new LocalOrderProperty(rightLocalOrderColumn));
+
+ if (op.getExecutionMode() == AbstractLogicalOperator.ExecutionMode.PARTITIONED) {
+ INodeDomain targetNodeDomain = context.getComputationNodeDomain();
+
+ RangeMap rangeMapHint = intervalPartitions.getRangeMap();
+
+ //Assign Property
+ switch (intervalPartitions.getLeftPartitioningType()) {
+ case ORDERED_PARTITIONED:
+ ppLeft = new OrderedPartitionedProperty(intervalPartitions.getLeftStartColumn(), targetNodeDomain,
+ rangeMapHint);
+ break;
+ case PARTIAL_BROADCAST_ORDERED_FOLLOWING:
+ ppLeft = new PartialBroadcastOrderedFollowingProperty(intervalPartitions.getLeftStartColumn(),
+ targetNodeDomain, rangeMapHint);
+ break;
+ case PARTIAL_BROADCAST_ORDERED_INTERSECT:
+ ppLeft = new PartialBroadcastOrderedIntersectProperty(intervalPartitions.getLeftIntervalColumn(),
+ targetNodeDomain, rangeMapHint);
+ break;
+ }
+ switch (intervalPartitions.getRightPartitioningType()) {
+ case ORDERED_PARTITIONED:
+ ppRight = new OrderedPartitionedProperty(intervalPartitions.getRightStartColumn(), targetNodeDomain,
+ rangeMapHint);
+ break;
+ case PARTIAL_BROADCAST_ORDERED_FOLLOWING:
+ ppRight = new PartialBroadcastOrderedFollowingProperty(intervalPartitions.getRightStartColumn(),
+ targetNodeDomain, rangeMapHint);
+ break;
+ case PARTIAL_BROADCAST_ORDERED_INTERSECT:
+ ppRight = new PartialBroadcastOrderedIntersectProperty(intervalPartitions.getRightIntervalColumn(),
+ targetNodeDomain, rangeMapHint);
+ break;
+ }
+ }
+ pv[0] = new StructuralPropertiesVector(ppLeft, ispLeft);
+ pv[1] = new StructuralPropertiesVector(ppRight, ispRight);
+ IPartitioningRequirementsCoordinator prc = IPartitioningRequirementsCoordinator.NO_COORDINATION;
+ return new PhysicalRequirements(pv, prc);
+ }
+
+ @Override
+ public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
+ IOperatorSchema opSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
+ throws AlgebricksException {
+ int[] keysLeft = JobGenHelper.variablesToFieldIndexes(keysLeftBranch, inputSchemas[0]);
+ int[] keysRight = JobGenHelper.variablesToFieldIndexes(keysRightBranch, inputSchemas[1]);
+
+ IOperatorDescriptorRegistry spec = builder.getJobSpec();
+ RecordDescriptor recordDescriptor =
+ JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), opSchema, context);
+
+ IOperatorDescriptor opDesc = getIntervalOperatorDescriptor(keysLeft, keysRight, spec, recordDescriptor, mjcf);
+ contributeOpDesc(builder, (AbstractLogicalOperator) op, opDesc);
+
+ ILogicalOperator src1 = op.getInputs().get(0).getValue();
+ builder.contributeGraphEdge(src1, 0, op, 0);
+ ILogicalOperator src2 = op.getInputs().get(1).getValue();
+ builder.contributeGraphEdge(src2, 0, op, 1);
+ }
+
+ IOperatorDescriptor getIntervalOperatorDescriptor(int[] keysLeft, int[] keysRight, IOperatorDescriptorRegistry spec,
+ RecordDescriptor recordDescriptor, IIntervalJoinUtilFactory mjcf) {
+ return new IntervalMergeJoinOperatorDescriptor(spec, memSizeInFrames, keysLeft, keysRight, recordDescriptor,
+ mjcf);
+ }
+}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixPhysicalOperatorsRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixPhysicalOperatorsRule.java
index 31de7ee..e662737 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixPhysicalOperatorsRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixPhysicalOperatorsRule.java
@@ -34,6 +34,7 @@ import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.asterix.optimizer.base.AnalysisUtil;
import org.apache.asterix.optimizer.rules.am.AccessMethodJobGenParams;
import org.apache.asterix.optimizer.rules.am.BTreeJobGenParams;
+import org.apache.asterix.optimizer.rules.util.AsterixJoinUtils;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.commons.lang3.mutable.MutableObject;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -53,6 +54,8 @@ import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogi
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractUnnestMapOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestMapOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.WindowOperator;
@@ -79,6 +82,26 @@ public final class SetAsterixPhysicalOperatorsRule extends SetAlgebricksPhysical
}
@Override
+ public IPhysicalOperator visitInnerJoinOperator(InnerJoinOperator op, Boolean topLevelOp)
+ throws AlgebricksException {
+ AsterixJoinUtils.setJoinAlgorithmAndExchangeAlgo(op, topLevelOp, context);
+ if (op.getPhysicalOperator() != null) {
+ return op.getPhysicalOperator();
+ }
+ return super.visitInnerJoinOperator(op, topLevelOp);
+ }
+
+ @Override
+ public IPhysicalOperator visitLeftOuterJoinOperator(LeftOuterJoinOperator op, Boolean topLevelOp)
+ throws AlgebricksException {
+ AsterixJoinUtils.setJoinAlgorithmAndExchangeAlgo(op, topLevelOp, context);
+ if (op.getPhysicalOperator() != null) {
+ return op.getPhysicalOperator();
+ }
+ return super.visitLeftOuterJoinOperator(op, topLevelOp);
+ }
+
+ @Override
public ExternalGroupByPOperator createExternalGroupByPOperator(GroupByOperator gby) throws AlgebricksException {
Mutable<ILogicalOperator> r0 = gby.getNestedPlans().get(0).getRoots().get(0);
if (!r0.getValue().getOperatorTag().equals(LogicalOperatorTag.AGGREGATE)) {
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/AsterixJoinUtils.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/AsterixJoinUtils.java
new file mode 100644
index 0000000..45b8b07
--- /dev/null
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/AsterixJoinUtils.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.optimizer.rules.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.asterix.common.annotations.RangeAnnotation;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator;
+import org.apache.hyracks.api.exceptions.ErrorCode;
+import org.apache.hyracks.api.exceptions.IWarningCollector;
+import org.apache.hyracks.api.exceptions.Warning;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public class AsterixJoinUtils {
+
+ private static final int LEFT = 0;
+ private static final int RIGHT = 1;
+
+ private AsterixJoinUtils() {
+ }
+
+ public static void setJoinAlgorithmAndExchangeAlgo(AbstractBinaryJoinOperator op, Boolean topLevelOp,
+ IOptimizationContext context) throws AlgebricksException {
+ if (!topLevelOp) {
+ return;
+ }
+ ILogicalExpression conditionLE = op.getCondition().getValue();
+ if (conditionLE.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
+ return;
+ }
+ List<LogicalVariable> sideLeft = new ArrayList<>(1);
+ List<LogicalVariable> sideRight = new ArrayList<>(1);
+ List<LogicalVariable> varsLeft = op.getInputs().get(LEFT).getValue().getSchema();
+ List<LogicalVariable> varsRight = op.getInputs().get(RIGHT).getValue().getSchema();
+ AbstractFunctionCallExpression fexp = (AbstractFunctionCallExpression) conditionLE;
+ FunctionIdentifier fi =
+ IntervalJoinUtils.isIntervalJoinCondition(fexp, varsLeft, varsRight, sideLeft, sideRight, LEFT, RIGHT);
+ if (fi == null) {
+ return;
+ }
+ RangeAnnotation rangeAnnotation = IntervalJoinUtils.findRangeAnnotation(fexp);
+ if (rangeAnnotation == null) {
+ return;
+ }
+ //Check RangeMap type
+ RangeMap rangeMap = (RangeMap) rangeAnnotation.getObject();
+ if (rangeMap.getTag(0, 0) != ATypeTag.DATETIME.serialize() && rangeMap.getTag(0, 0) != ATypeTag.DATE.serialize()
+ && rangeMap.getTag(0, 0) != ATypeTag.TIME.serialize()) {
+ IWarningCollector warningCollector = context.getWarningCollector();
+ warningCollector.warn(Warning.forHyracks(op.getSourceLocation(), ErrorCode.INAPPLICABLE_HINT,
+ "Date, DateTime, and Time are only range hints types supported for interval joins"));
+ return;
+ }
+ IntervalPartitions intervalPartitions =
+ IntervalJoinUtils.createIntervalPartitions(op, fi, sideLeft, sideRight, rangeMap, context, LEFT, RIGHT);
+ IntervalJoinUtils.setSortMergeIntervalJoinOp(op, fi, sideLeft, sideRight, context, intervalPartitions);
+ }
+}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/IntervalJoinUtils.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/IntervalJoinUtils.java
new file mode 100644
index 0000000..d887914
--- /dev/null
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/IntervalJoinUtils.java
@@ -0,0 +1,251 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.optimizer.rules.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.asterix.algebra.operators.physical.IntervalMergeJoinPOperator;
+import org.apache.asterix.common.annotations.RangeAnnotation;
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.lang.common.util.FunctionUtil;
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.runtime.operators.joins.interval.utils.AfterIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.BeforeIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.CoveredByIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.CoversIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.IIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.OverlappedByIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.OverlappingIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.OverlapsIntervalJoinUtilFactory;
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionAnnotation;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.AbstractJoinPOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.AssignPOperator;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty.PartitioningType;
+import org.apache.hyracks.algebricks.core.algebra.properties.IntervalColumn;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public class IntervalJoinUtils {
+
+ private static final Map<FunctionIdentifier, FunctionIdentifier> INTERVAL_JOIN_CONDITIONS = new HashMap<>();
+
+ static {
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_AFTER, BuiltinFunctions.INTERVAL_BEFORE);
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_BEFORE, BuiltinFunctions.INTERVAL_AFTER);
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_COVERED_BY, BuiltinFunctions.INTERVAL_COVERS);
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_COVERS, BuiltinFunctions.INTERVAL_COVERED_BY);
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_OVERLAPPED_BY, BuiltinFunctions.INTERVAL_OVERLAPS);
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_OVERLAPPING, BuiltinFunctions.INTERVAL_OVERLAPPING);
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_OVERLAPS, BuiltinFunctions.INTERVAL_OVERLAPPED_BY);
+ }
+
+ protected static RangeAnnotation findRangeAnnotation(AbstractFunctionCallExpression fexp) {
+ Iterator<IExpressionAnnotation> annotationIter = fexp.getAnnotations().values().iterator();
+ while (annotationIter.hasNext()) {
+ IExpressionAnnotation annotation = annotationIter.next();
+ if (annotation instanceof RangeAnnotation) {
+ return (RangeAnnotation) annotation;
+ }
+ }
+ return null;
+ }
+
+ protected static void setSortMergeIntervalJoinOp(AbstractBinaryJoinOperator op, FunctionIdentifier fi,
+ List<LogicalVariable> sideLeft, List<LogicalVariable> sideRight, IOptimizationContext context,
+ IntervalPartitions intervalPartitions) throws CompilationException {
+ IIntervalJoinUtilFactory mjcf = createIntervalJoinCheckerFactory(fi, intervalPartitions.getRangeMap());
+ op.setPhysicalOperator(new IntervalMergeJoinPOperator(op.getJoinKind(),
+ AbstractJoinPOperator.JoinPartitioningType.BROADCAST, sideLeft, sideRight,
+ context.getPhysicalOptimizationConfig().getMaxFramesForJoin(), mjcf, intervalPartitions));
+ }
+
+ /**
+ * Certain Relations not yet supported as seen below. Will default to regular join.
+ * Inserts partition sort key.
+ */
+ protected static IntervalPartitions createIntervalPartitions(AbstractBinaryJoinOperator op, FunctionIdentifier fi,
+ List<LogicalVariable> sideLeft, List<LogicalVariable> sideRight, RangeMap rangeMap,
+ IOptimizationContext context, int left, int right) throws AlgebricksException {
+
+ List<LogicalVariable> leftPartitionVar = new ArrayList<>(2);
+ leftPartitionVar.add(context.newVar());
+ leftPartitionVar.add(context.newVar());
+ List<LogicalVariable> rightPartitionVar = new ArrayList<>(2);
+ rightPartitionVar.add(context.newVar());
+ rightPartitionVar.add(context.newVar());
+
+ insertPartitionSortKey(op, left, leftPartitionVar, sideLeft.get(0), context);
+ insertPartitionSortKey(op, right, rightPartitionVar, sideRight.get(0), context);
+
+ List<IntervalColumn> leftIC = Collections.singletonList(new IntervalColumn(leftPartitionVar.get(0),
+ leftPartitionVar.get(1), OrderOperator.IOrder.OrderKind.ASC));
+ List<IntervalColumn> rightIC = Collections.singletonList(new IntervalColumn(rightPartitionVar.get(0),
+ rightPartitionVar.get(1), OrderOperator.IOrder.OrderKind.ASC));
+
+ //Set Partitioning Types
+ PartitioningType leftPartitioningType = PartitioningType.ORDERED_PARTITIONED;
+ PartitioningType rightPartitioningType = PartitioningType.ORDERED_PARTITIONED;
+ if (fi.equals(BuiltinFunctions.INTERVAL_OVERLAPPED_BY)) {
+ rightPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_OVERLAPS)) {
+ leftPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_OVERLAPPING)) {
+ leftPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ rightPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_COVERS)) {
+ leftPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_COVERED_BY)) {
+ rightPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_BEFORE)) {
+ leftPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_FOLLOWING;
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_AFTER)) {
+ rightPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_FOLLOWING;
+ } else {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, fi.getName());
+ }
+ return new IntervalPartitions(rangeMap, leftIC, rightIC, leftPartitioningType, rightPartitioningType);
+ }
+
+ protected static FunctionIdentifier isIntervalJoinCondition(ILogicalExpression e,
+ Collection<LogicalVariable> inLeftAll, Collection<LogicalVariable> inRightAll,
+ Collection<LogicalVariable> outLeftFields, Collection<LogicalVariable> outRightFields, int left,
+ int right) {
+ FunctionIdentifier fiReturn;
+ boolean switchArguments = false;
+ if (e.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
+ return null;
+ }
+ AbstractFunctionCallExpression fexp = (AbstractFunctionCallExpression) e;
+ FunctionIdentifier fi = fexp.getFunctionIdentifier();
+ if (isIntervalFunction(fi)) {
+ fiReturn = fi;
+ } else {
+ return null;
+ }
+ ILogicalExpression opLeft = fexp.getArguments().get(left).getValue();
+ ILogicalExpression opRight = fexp.getArguments().get(right).getValue();
+ if (opLeft.getExpressionTag() != LogicalExpressionTag.VARIABLE
+ || opRight.getExpressionTag() != LogicalExpressionTag.VARIABLE) {
+ return null;
+ }
+ LogicalVariable var1 = ((VariableReferenceExpression) opLeft).getVariableReference();
+ if (inLeftAll.contains(var1) && !outLeftFields.contains(var1)) {
+ outLeftFields.add(var1);
+ } else if (inRightAll.contains(var1) && !outRightFields.contains(var1)) {
+ outRightFields.add(var1);
+ fiReturn = getInverseIntervalFunction(fi);
+ switchArguments = true;
+ } else {
+ return null;
+ }
+ LogicalVariable var2 = ((VariableReferenceExpression) opRight).getVariableReference();
+ if (inLeftAll.contains(var2) && !outLeftFields.contains(var2) && switchArguments) {
+ outLeftFields.add(var2);
+ } else if (inRightAll.contains(var2) && !outRightFields.contains(var2) && !switchArguments) {
+ outRightFields.add(var2);
+ } else {
+ return null;
+ }
+ return fiReturn;
+ }
+
+ /**
+ * Certain Relations not yet supported as seen below. Will default to regular join.
+ */
+ private static IIntervalJoinUtilFactory createIntervalJoinCheckerFactory(FunctionIdentifier fi, RangeMap rangeMap)
+ throws CompilationException {
+ IIntervalJoinUtilFactory mjcf;
+ if (fi.equals(BuiltinFunctions.INTERVAL_OVERLAPPED_BY)) {
+ mjcf = new OverlappedByIntervalJoinUtilFactory();
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_OVERLAPS)) {
+ mjcf = new OverlapsIntervalJoinUtilFactory();
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_COVERS)) {
+ mjcf = new CoversIntervalJoinUtilFactory();
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_COVERED_BY)) {
+ mjcf = new CoveredByIntervalJoinUtilFactory();
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_BEFORE)) {
+ mjcf = new BeforeIntervalJoinUtilFactory();
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_AFTER)) {
+ mjcf = new AfterIntervalJoinUtilFactory();
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_OVERLAPPING)) {
+ mjcf = new OverlappingIntervalJoinUtilFactory(rangeMap);
+ } else {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, fi.getName());
+ }
+ return mjcf;
+ }
+
+ private static boolean isIntervalFunction(FunctionIdentifier fi) {
+ return INTERVAL_JOIN_CONDITIONS.containsKey(fi);
+ }
+
+ private static FunctionIdentifier getInverseIntervalFunction(FunctionIdentifier fi) {
+ return INTERVAL_JOIN_CONDITIONS.get(fi);
+ }
+
+ private static void insertPartitionSortKey(AbstractBinaryJoinOperator op, int branch,
+ List<LogicalVariable> partitionVars, LogicalVariable intervalVar, IOptimizationContext context)
+ throws AlgebricksException {
+ Mutable<ILogicalExpression> intervalExp = new MutableObject<>(new VariableReferenceExpression(intervalVar));
+
+ List<Mutable<ILogicalExpression>> assignExps = new ArrayList<>();
+ // Start partition
+ IFunctionInfo startFi = FunctionUtil.getFunctionInfo(BuiltinFunctions.ACCESSOR_TEMPORAL_INTERVAL_START);
+ ScalarFunctionCallExpression startPartitionExp = new ScalarFunctionCallExpression(startFi, intervalExp);
+ assignExps.add(new MutableObject<>(startPartitionExp));
+ // End partition
+ IFunctionInfo endFi = FunctionUtil.getFunctionInfo(BuiltinFunctions.ACCESSOR_TEMPORAL_INTERVAL_END);
+ ScalarFunctionCallExpression endPartitionExp = new ScalarFunctionCallExpression(endFi, intervalExp);
+ assignExps.add(new MutableObject<>(endPartitionExp));
+
+ AssignOperator ao = new AssignOperator(partitionVars, assignExps);
+ ao.setSourceLocation(op.getSourceLocation());
+ ao.setExecutionMode(op.getExecutionMode());
+ AssignPOperator apo = new AssignPOperator();
+ ao.setPhysicalOperator(apo);
+ Mutable<ILogicalOperator> aoRef = new MutableObject<>(ao);
+ ao.getInputs().add(op.getInputs().get(branch));
+ op.getInputs().set(branch, aoRef);
+
+ context.computeAndSetTypeEnvironmentForOperator(ao);
+ }
+}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/IntervalPartitions.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/IntervalPartitions.java
new file mode 100644
index 0000000..bc78017
--- /dev/null
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/IntervalPartitions.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.optimizer.rules.util;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty.PartitioningType;
+import org.apache.hyracks.algebricks.core.algebra.properties.IntervalColumn;
+import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public class IntervalPartitions {
+
+ private final RangeMap rangeMap;
+ private final List<IntervalColumn> leftIntervalColumn;
+ private final List<IntervalColumn> rightIntervalColumn;
+ private final PartitioningType leftPartitioningType;
+ private final PartitioningType rightPartitioningType;
+
+ IntervalPartitions(RangeMap rangeMap, List<IntervalColumn> leftIntervalColumn,
+ List<IntervalColumn> rightIntervalColumn, PartitioningType leftPartitioningType,
+ PartitioningType rightPartitioningType) {
+ this.rangeMap = rangeMap;
+ this.leftIntervalColumn = leftIntervalColumn;
+ this.rightIntervalColumn = rightIntervalColumn;
+ this.leftPartitioningType = leftPartitioningType;
+ this.rightPartitioningType = rightPartitioningType;
+ }
+
+ public RangeMap getRangeMap() {
+ return rangeMap;
+ }
+
+ public PartitioningType getLeftPartitioningType() {
+ return leftPartitioningType;
+ }
+
+ public PartitioningType getRightPartitioningType() {
+ return rightPartitioningType;
+ }
+
+ public List<IntervalColumn> getLeftIntervalColumn() {
+ return leftIntervalColumn;
+ }
+
+ public List<IntervalColumn> getRightIntervalColumn() {
+ return rightIntervalColumn;
+ }
+
+ public List<OrderColumn> getLeftStartColumn() {
+ LogicalVariable leftStartLogicalVariable = leftIntervalColumn.get(0).getStartColumn();
+ List<OrderColumn> leftOrderColumn =
+ Arrays.asList(new OrderColumn(leftStartLogicalVariable, leftIntervalColumn.get(0).getOrder()));
+ return leftOrderColumn;
+ }
+
+ public List<OrderColumn> getRightStartColumn() {
+ LogicalVariable rightStartLogicalVariable = rightIntervalColumn.get(0).getStartColumn();
+ List<OrderColumn> rightOrderColumn =
+ Arrays.asList(new OrderColumn(rightStartLogicalVariable, rightIntervalColumn.get(0).getOrder()));
+ return rightOrderColumn;
+ }
+}
diff --git a/asterixdb/asterix-app/data/tinycollege/staff.adm b/asterixdb/asterix-app/data/tinycollege/staff.adm
index 4bfdd4b..d24bd87 100644
--- a/asterixdb/asterix-app/data/tinycollege/staff.adm
+++ b/asterixdb/asterix-app/data/tinycollege/staff.adm
@@ -1,7 +1,8 @@
-{ "id": 14, "name": "Alex", "office": "A", "employment": interval(date("2003-01-01"), date("2008-01-01")) }
-{ "id": 13, "name": "Elisabeth", "office": "B", "employment": interval(date("2002-01-01"), date("2010-01-01")) }
-{ "id": 16, "name": "Franklin", "office": "A", "employment": interval(date("2004-01-01"), date("2009-01-01")) }
-{ "id": 15, "name": "Henry", "office": "C", "employment": interval(date("2003-01-01"), date("2008-01-01")) }
-{ "id": 17, "name": "Maryann", "office": "B", "employment": interval(date("2006-01-01"), date("2010-01-01")) }
-{ "id": 11, "name": "Vicky", "office": "D", "employment": interval(date("2001-01-01"), date("2010-01-01")) }
-{ "id": 12, "name": "Zack", "office": "A", "employment": interval(date("2002-01-01"), date("2003-01-01")) }
+{ "id": 14, "name": "Alex", "office": "A", "employment": interval(date("2003-01-01"), date("2008-01-01")), "vacation": interval(datetime("2003-01-01T00:00:00.0"), datetime("2008-01-01T00:00:00.0")), "office_hours": interval(time("03:00:00.0+00:00"), time("08:00:00.0+00:00"))}
+{ "id": 13, "name": "Elisabeth", "office": "B", "employment": interval(date("2002-01-01"), date("2010-01-01")), "vacation": interval(datetime("2002-01-01T00:00:00.0"), datetime("2010-01-01T00:00:00.0")), "office_hours": interval(time("02:00:00.0+00:00"), time("10:00:00.0+00:00"))}
+{ "id": 16, "name": "Franklin", "office": "A", "employment": interval(date("2004-01-01"), date("2009-01-01")), "vacation": interval(datetime("2004-01-01T00:00:00.0"), datetime("2009-01-01T00:00:00.0")), "office_hours": interval(time("04:00:00.0+00:00"), time("09:00:00.0+00:00"))}
+{ "id": 15, "name": "Henry", "office": "C", "employment": interval(date("2003-01-01"), date("2008-01-01")), "vacation": interval(datetime("2003-01-01T00:00:00.0"), datetime("2008-01-01T00:00:00.0")), "office_hours": interval(time("03:00:00.0+00:00"), time("08:00:00.0+00:00"))}
+{ "id": 17, "name": "MaryAnn", "office": "B", "employment": interval(date("2006-01-01"), date("2010-01-01")), "vacation": interval(datetime("2006-01-01T00:00:00.0"), datetime("2010-01-01T00:00:00.0")), "office_hours": interval(time("06:00:00.0+00:00"), time("10:00:00.0+00:00"))}
+{ "id": 11, "name": "Vicky", "office": "D", "employment": interval(date("2001-01-01"), date("2010-01-01")), "vacation": interval(datetime("2001-01-01T00:00:00.0"), datetime("2010-01-01T00:00:00.0")), "office_hours": interval(time("01:00:00.0+00:00"), time("10:00:00.0+00:00"))}
+{ "id": 12, "name": "Zack", "office": "A", "employment": interval(date("2002-01-01"), date("2003-01-01")), "vacation": interval(datetime("2002-01-01T00:00:00.0"), datetime("2003-01-01T00:00:00.0")), "office_hours": interval(time("02:00:00.0+00:00"), time("03:00:00.0+00:00"))}
+{ "id": 18, "name": "Jake", "office": "C", "employment": interval(date("2006-01-01"), date("2008-01-01")), "vacation": interval(datetime("2006-01-01T00:00:00.0"), datetime("2008-01-01T00:00:00.0")), "office_hours": interval(time("06:00:00.0+00:00"), time("08:00:00.0+00:00"))}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/data/tinycollege/students.adm b/asterixdb/asterix-app/data/tinycollege/students.adm
index b869075..d9447d2 100644
--- a/asterixdb/asterix-app/data/tinycollege/students.adm
+++ b/asterixdb/asterix-app/data/tinycollege/students.adm
@@ -1,7 +1,7 @@
-{ "id": 22, "name": "Charles", "office": "X", "attendance": interval(date("2001-01-01"), date("2004-01-01")) }
-{ "id": 23, "name": "Frank", "office": "Y", "attendance": interval(date("2001-01-01"), date("2004-01-01")) }
-{ "id": 25, "name": "Karen", "office": "Y", "attendance": interval(date("2007-01-01"), date("2009-01-01")) }
-{ "id": 24, "name": "Mary", "office": "Y", "attendance": interval(date("2002-01-01"), date("2005-01-01")) }
-{ "id": 21, "name": "Olga", "office": "Z", "attendance": interval(date("2001-01-01"), date("2003-01-01")) }
-{ "id": 26, "name": "Steve", "office": "Z", "attendance": interval(date("2007-01-01"), date("2010-01-01")) }
-{ "id": 27, "name": "Tess", "office": "X", "attendance": interval(date("2008-01-01"), date("2010-01-01")) }
+{ "id": 22, "name": "Charles", "office": "X", "attendance": interval(date("2001-01-01"), date("2004-01-01")), "break": interval(datetime("2001-01-01T00:00:00.0"), datetime("2004-01-01T00:00:00.0")), "work_hours": interval(time("01:00:00.0+00:00"), time("04:00:00.0+00:00"))}
+{ "id": 23, "name": "Frank", "office": "Y", "attendance": interval(date("2001-01-01"), date("2004-01-01")), "break": interval(datetime("2001-01-01T00:00:00.0"), datetime("2004-01-01T00:00:00.0")), "work_hours": interval(time("01:00:00.0+00:00"), time("04:00:00.0+00:00"))}
+{ "id": 25, "name": "Karen", "office": "Y", "attendance": interval(date("2007-01-01"), date("2009-01-01")), "break": interval(datetime("2007-01-01T00:00:00.0"), datetime("2009-01-01T00:00:00.0")), "work_hours": interval(time("07:00:00.0+00:00"), time("09:00:00.0+00:00"))}
+{ "id": 24, "name": "Mary", "office": "Y", "attendance": interval(date("2002-01-01"), date("2005-01-01")), "break": interval(datetime("2002-01-01T00:00:00.0"), datetime("2005-01-01T00:00:00.0")), "work_hours": interval(time("02:00:00.0+00:00"), time("05:00:00.0+00:00"))}
+{ "id": 21, "name": "Olga", "office": "Z", "attendance": interval(date("2001-01-01"), date("2003-01-01")), "break": interval(datetime("2001-01-01T00:00:00.0"), datetime("2003-01-01T00:00:00.0")), "work_hours": interval(time("01:00:00.0+00:00"), time("03:00:00.0+00:00"))}
+{ "id": 26, "name": "Steve", "office": "Z", "attendance": interval(date("2007-01-01"), date("2010-01-01")), "break": interval(datetime("2007-01-01T00:00:00.0"), datetime("2010-01-01T00:00:00.0")), "work_hours": interval(time("07:00:00.0+00:00"), time("10:00:00.0+00:00"))}
+{ "id": 27, "name": "Tess", "office": "X", "attendance": interval(date("2008-01-01"), date("2010-01-01")), "break": interval(datetime("2008-01-01T00:00:00.0"), datetime("2010-01-01T00:00:00.0")), "work_hours": interval(time("08:00:00.0+00:00"), time("10:00:00.0+00:00"))}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
index a33e6dd..bd35c4b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval after
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +43,8 @@ create type StudentType as open {
create dataset Students(StudentType)
primary key name;
-select element { "staff": f.employment, "student" : d.attendance }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_after(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
index e8ebb86..acea862 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval before
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -45,4 +45,6 @@ primary key name;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_before(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp
index 854cd59..bc4ec80 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval covered_by
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +43,8 @@ create type StudentType as open {
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-covered-by`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covered_by(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp
index 1fa198d..a054f13 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval covers
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +43,8 @@ create type StudentType as open {
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-covers`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covers(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp
index 1d48700..d683999 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp
@@ -17,9 +17,11 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval ended_by
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
+ * Note : Range hint is not used in ended_by because it is not implemented.
+ * This test will default to Hybrid Hash Join
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +45,8 @@ create type StudentType as open {
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-ended-by`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ended_by(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp
index 14346f6..946edbc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp
@@ -17,9 +17,11 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval ends
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
+ * Note : Range hint is not used in ends because it is not implemented.
+ * This test will default to Hybrid Hash Join
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +45,8 @@ create type StudentType as open {
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-ends`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ends(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp
index 7bce341..9dc0710 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp
@@ -17,9 +17,11 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval meets
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
+ * Note : Range hint is not used in meets because it is not implemented.
+ * This test will default to Hybrid Hash Join
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +45,8 @@ create type StudentType as open {
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-meets`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_meets(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp
index 19f206d..720daf1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp
@@ -17,9 +17,11 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval met_by
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
+ * Note : Range hint is not used in met_by because it is not implemented.
+ * This test will default to Hybrid Hash Join
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +45,8 @@ create type StudentType as open {
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-met-by`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_met_by(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
index 72a1f50..38a5149 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval overlapped_by
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +43,8 @@ create type StudentType as open {
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlapped-by`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapped_by(f.employment, d.attendance);
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp
index f1c3a68..71b43e7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval overlapping
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +43,8 @@ create type StudentType as open {
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlapping`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapping(f.employment, d.attendance);
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp
index efb224f..2bf3fd4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval overlaps
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +43,8 @@ create type StudentType as open {
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlaps`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlaps(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp
index 410504d..b19044a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp
@@ -17,9 +17,11 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval started_by
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
+ * Note : Range hint is not used in started_by because it is not implemented.
+ * This test will default to Hybrid Hash Join
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +45,8 @@ create type StudentType as open {
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-started-by`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_started_by(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp
index 87ec386..38d855d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp
@@ -17,9 +17,11 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval starts
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
+ * Note : Range hint is not used in ended_by because it is not implemented.
+ * This test will default to Hybrid Hash Join
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +45,8 @@ create type StudentType as open {
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-starts`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_starts(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_after/interval_after.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_after/interval_after.3.query.plan
index 6ac3ccc..1aab448 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_after/interval_after.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_after/interval_after.3.query.plan
@@ -2,21 +2,30 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$34(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_FOLLOWING_EXCHANGE [$$36(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_before/interval_before.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_before/interval_before.3.query.plan
index 757511d..883bfed 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_before/interval_before.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_before/interval_before.3.query.plan
@@ -4,18 +4,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_FOLLOWING_EXCHANGE [$$34(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$36(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.plan
index 757511d..a9f6d74 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.plan
@@ -4,18 +4,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$34(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE [{$$36,$$37,ASC}] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covers/interval_covers.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covers/interval_covers.3.query.plan
index 757511d..d67dc29 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covers/interval_covers.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covers/interval_covers.3.query.plan
@@ -4,18 +4,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE [{$$34,$$35,ASC}] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$36(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.plan
index 757511d..a9f6d74 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.plan
@@ -4,18 +4,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$34(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE [{$$36,$$37,ASC}] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.plan
index 757511d..9f4a00d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.plan
@@ -4,18 +4,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE [{$$34,$$35,ASC}] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE [{$$36,$$37,ASC}] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.plan
index 757511d..d67dc29 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.plan
@@ -4,18 +4,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE [{$$34,$$35,ASC}] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$36(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
index fdef960..9ea732a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,10 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.10.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.10.query.sqlpp
index 39e3372..3504834 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.10.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_after(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.11.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.11.query.sqlpp
index 4644367..45406b1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.11.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_after(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.12.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.12.query.sqlpp
index 4644367..3baabf1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.12.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_after(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.13.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.13.query.sqlpp
index 39e3372..6b91ac9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.13.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_after(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.14.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.14.query.sqlpp
index 39e3372..c5f2280 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.14.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_after(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
index a303827..6668205 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_after(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.4.query.sqlpp
index fa439c1..31ba5aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_after(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
index 39e3372..c9308fd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_after(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.6.query.sqlpp
index eb2797b..48118d4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_after(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.7.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.7.query.sqlpp
index 4644367..a013ac9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.7.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_after(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.8.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.8.query.sqlpp
index 4644367..690e5b5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.8.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_after(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.9.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.9.query.sqlpp
index 39e3372..c57cfc7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.9.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_after(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.1.ddl.sqlpp
index fdef960..ae840c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,9 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.10.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.10.query.sqlpp
index 39e3372..9e22e04 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.10.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_before(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.11.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.11.query.sqlpp
index 4644367..b93f969 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.11.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_before(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.12.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.12.query.sqlpp
index 4644367..6ffb1cb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.12.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_before(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.13.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.13.query.sqlpp
index 39e3372..295f895 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.13.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_before(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.14.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.14.query.sqlpp
index 39e3372..6d0e028 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.14.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_before(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
index 4644367..faf9e7e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_before(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.4.query.sqlpp
index 8db7596..6c1f734 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_before(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.5.query.sqlpp
index 3769ff3..c7e34d8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_before(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.6.query.sqlpp
index 70ab1ea..27185d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-before`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_before(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.7.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.7.query.sqlpp
index 4644367..c184704 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.7.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_before(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.8.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.8.query.sqlpp
index 4644367..7425bce 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.8.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_before(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.9.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.9.query.sqlpp
index 39e3372..5089141 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.9.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_before(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.1.ddl.sqlpp
index fdef960..ae840c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,9 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.10.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.10.query.sqlpp
index 39e3372..d71029a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.10.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covered_by(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.11.query.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.11.query.sqlpp
index 4644367..e635228 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.11.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covered_by(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.12.query.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.12.query.sqlpp
index 4644367..25d22d5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.12.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covered_by(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.13.query.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.13.query.sqlpp
index 39e3372..1f287ef 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.13.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covered_by(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.14.query.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.14.query.sqlpp
index 39e3372..881f62e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.14.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covered_by(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp
index cdd6744..3458df9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-covered-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covered_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.4.query.sqlpp
index 2209a6a..2deb6e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-covered-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covered_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.5.query.sqlpp
index 69ac8d5..fa931af 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-covered-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covered_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.6.query.sqlpp
index 467200a..0010b26 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-covered-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covered_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.7.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.7.query.sqlpp
index 4644367..5bf5d4a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.7.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covered_by(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.8.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.8.query.sqlpp
index 4644367..83f7beb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.8.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covered_by(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.9.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.9.query.sqlpp
index 39e3372..46ba991 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.9.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covered_by(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.1.ddl.sqlpp
index fdef960..ae840c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,9 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.10.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.10.query.sqlpp
index 39e3372..16f53dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.10.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covers(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.11.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.11.query.sqlpp
index 4644367..94db651 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.11.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covers(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.12.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.12.query.sqlpp
index 4644367..fbc64ab 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.12.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covers(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.13.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.13.query.sqlpp
index 39e3372..bdd439e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.13.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covers(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.14.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.14.query.sqlpp
index 39e3372..dddf7bd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.14.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covers(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp
index 2816cfb..bc2e0b5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-covers`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covers(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.4.query.sqlpp
index 0241040..c22cc60 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-covers`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covers(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.5.query.sqlpp
index 8e600d0..9a2c572 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-covers`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covers(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.6.query.sqlpp
index d4a3760..89d9ada 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-covers`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covers(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.7.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.7.query.sqlpp
index 4644367..ba156f1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.7.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covers(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.8.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.8.query.sqlpp
index 4644367..051620d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.8.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covers(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.9.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.9.query.sqlpp
index 39e3372..dbd1fba 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.9.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covers(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.1.ddl.sqlpp
index fdef960..07166ca 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.1.ddl.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +31,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +42,9 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.10.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.10.query.sqlpp
index 39e3372..390daaa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.10.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ended_by(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.11.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.11.query.sqlpp
index a303827..2986aa9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.11.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ended_by(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.12.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.12.query.sqlpp
index a303827..0520104 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.12.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ended_by(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.13.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.13.query.sqlpp
index 39e3372..62f72b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.13.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ended_by(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.14.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.14.query.sqlpp
index 39e3372..09ff8b4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.14.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ended_by(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.2.update.sqlpp
index 4334476..49648a4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.2.update.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp
index 96b63c5..5d410ae 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-ended-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ended_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.4.query.sqlpp
index 74929b2..ef30f3e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.4.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-ended-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ended_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.5.query.sqlpp
index 08f33a5..f4aae13 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.5.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-ended-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ended_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.6.query.sqlpp
index bb4e8b2..bd4dc8d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.6.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-ended-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ended_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.7.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.7.query.sqlpp
index a303827..5d0e86d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.7.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ended_by(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.8.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.8.query.sqlpp
index a303827..053535b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.8.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ended_by(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.9.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.9.query.sqlpp
index 39e3372..c7d21f2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.9.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ended_by(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.1.ddl.sqlpp
index fdef960..e3c2e76 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.1.ddl.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +31,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +42,9 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.10.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.10.query.sqlpp
index 39e3372..80f1641 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.10.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ends(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.11.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.11.query.sqlpp
index a303827..a12b527 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.11.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ends(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.12.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.12.query.sqlpp
index a303827..fd758e0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.12.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ends(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.13.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.13.query.sqlpp
index 39e3372..0f8a057 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.13.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ends(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.14.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.14.query.sqlpp
index 39e3372..010c04e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.14.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ends(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.2.update.sqlpp
index 4334476..881d227 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.2.update.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp
index 50ae865..42e9380 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-ends`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ends(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.4.query.sqlpp
index 86d9ff4..7ad2449 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.4.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-ends`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ends(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.5.query.sqlpp
index cf316a3..6751fc1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.5.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-ends`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ends(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.6.query.sqlpp
index c9faeda..61856be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.6.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-ends`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ends(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.7.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.7.query.sqlpp
index a303827..7b05616 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.7.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ends(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.8.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.8.query.sqlpp
index a303827..a0d6a58 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.8.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ends(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.9.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.9.query.sqlpp
index 39e3372..e1b5aa0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.9.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ends(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.1.ddl.sqlpp
index fdef960..107e651 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.1.ddl.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +31,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +42,9 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.10.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.10.query.sqlpp
index 39e3372..2998ed3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.10.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_meets(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.11.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.11.query.sqlpp
index a303827..31d89ba 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.11.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_meets(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.12.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.12.query.sqlpp
index a303827..b79583f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.12.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_meets(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.13.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.13.query.sqlpp
index 39e3372..1f1083b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.13.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_meets(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.14.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.14.query.sqlpp
index 39e3372..8d8ad81 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.14.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_meets(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.2.update.sqlpp
index 4334476..95937ec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.2.update.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp
index 244cd62..80dd09c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-meets`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_meets(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.4.query.sqlpp
index ac9dd33..24dc50f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.4.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-meets`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_meets(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.5.query.sqlpp
index 8fd6a60..5c06894 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.5.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-meets`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_meets(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.6.query.sqlpp
index 34c9a12..f438e6a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.6.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-meets`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_meets(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.7.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.7.query.sqlpp
index a303827..b2723f0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.7.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_meets(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.8.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.8.query.sqlpp
index a303827..6a99fbe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.8.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_meets(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.9.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.9.query.sqlpp
index 39e3372..53f6a41 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.9.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_meets(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.1.ddl.sqlpp
index fdef960..2d76f34 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.1.ddl.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +31,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +42,9 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.10.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.10.query.sqlpp
index 39e3372..9b0113a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.10.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_met_by(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.11.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.11.query.sqlpp
index a303827..d2aa20b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.11.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_met_by(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.12.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.12.query.sqlpp
index a303827..c8156dc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.12.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_met_by(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.13.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.13.query.sqlpp
index 39e3372..2d18ea3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.13.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_met_by(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.14.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.14.query.sqlpp
index 39e3372..7105983 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.14.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_met_by(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.2.update.sqlpp
index 4334476..c260fec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.2.update.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp
index f1f39a9..0aaf497 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-met-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_met_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.4.query.sqlpp
index fa2e9ed..57aa56f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.4.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-met-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_met_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.5.query.sqlpp
index 2755407..1bff1e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.5.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-met-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_met_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.6.query.sqlpp
index 319cb32..a601324 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.6.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-met-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_met_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.7.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.7.query.sqlpp
index a303827..fdf140c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.7.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_met_by(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.8.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.8.query.sqlpp
index a303827..9929fe8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.8.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_met_by(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.9.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.9.query.sqlpp
index 39e3372..5a0a9da 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.9.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_met_by(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.1.ddl.sqlpp
index fdef960..ae840c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,9 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.10.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.10.query.sqlpp
index 39e3372..75bd6de 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.10.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapped_by(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.11.query.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.11.query.sqlpp
index 4644367..0d78bf9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.11.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapped_by(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.12.query.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.12.query.sqlpp
index 4644367..4b0761b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.12.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapped_by(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.13.query.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.13.query.sqlpp
index 39e3372..e8bfd5c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.13.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapped_by(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.14.query.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.14.query.sqlpp
index 39e3372..6e95625 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.14.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapped_by(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
index 2fc8575..9033c40 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlapped-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapped_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.query.sqlpp
index 1f80cd0..5389119 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlapped-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapped_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.5.query.sqlpp
index e32af46..1ff426f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-overlapped-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapped_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.query.sqlpp
index c8b77f3..422ce76 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-overlapped-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapped_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.7.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.7.query.sqlpp
index 4644367..89f8a60 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.7.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapped_by(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.8.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.8.query.sqlpp
index 4644367..02845b5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.8.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapped_by(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.9.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.9.query.sqlpp
index 39e3372..08d2c04 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.9.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapped_by(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.1.ddl.sqlpp
index fdef960..ae840c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,9 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.10.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.10.query.sqlpp
index 39e3372..e1ce7ce 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.10.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapping(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.11.query.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.11.query.sqlpp
index 4644367..e30bf20 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.11.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapping(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.12.query.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.12.query.sqlpp
index 4644367..a994ebf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.12.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapping(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.13.query.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.13.query.sqlpp
index 39e3372..0e30efb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.13.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapping(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.14.query.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.14.query.sqlpp
index 39e3372..bcd2606 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.14.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapping(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp
index 91589f2..ddcae39 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlapping`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapping(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.4.query.sqlpp
index 12b5daf..e7f62d4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlapping`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapping(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.5.query.sqlpp
index b0f4423..eaba9a5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-overlapping`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapping(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.6.query.sqlpp
index 94a690e..5e601e0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-overlapping`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapping(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.7.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.7.query.sqlpp
index 4644367..ba64ef0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.7.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapping(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.8.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.8.query.sqlpp
index 4644367..3656661 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.8.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapping(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.9.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.9.query.sqlpp
index 39e3372..84b6252 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.9.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapping(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.1.ddl.sqlpp
index fdef960..ae840c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,9 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.10.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.10.query.sqlpp
index 39e3372..bd7fc86 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.10.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlaps(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.11.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.11.query.sqlpp
index 4644367..dc51559 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.11.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlaps(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.12.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.12.query.sqlpp
index 4644367..50e1fbb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.12.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlaps(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.13.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.13.query.sqlpp
index 39e3372..bd750f4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.13.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlaps(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.14.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.14.query.sqlpp
index 39e3372..91f42a1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.14.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlaps(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp
index 579eda5..717f7e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlaps`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlaps(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.4.query.sqlpp
index 1327d67..bdb8ec4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlaps`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlaps(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.5.query.sqlpp
index ac40622..f5bbac4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-overlaps`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlaps(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.6.query.sqlpp
index 65f43c5..03d8da5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-overlaps`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlaps(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.7.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.7.query.sqlpp
index 4644367..c4ff119 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.7.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlaps(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.8.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.8.query.sqlpp
index 4644367..8e4eca8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.8.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlaps(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.9.query.sqlpp
similarity index 83%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.9.query.sqlpp
index 39e3372..4de8f1c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.9.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlaps(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.1.ddl.sqlpp
index fdef960..5fcd96e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.1.ddl.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +31,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +42,9 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.10.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.10.query.sqlpp
index 39e3372..319efac 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.10.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_started_by(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.11.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.11.query.sqlpp
index a303827..d39164d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.11.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_started_by(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.12.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.12.query.sqlpp
index a303827..70efc7b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.12.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_started_by(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.13.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.13.query.sqlpp
index 39e3372..c6b20ed 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.13.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_started_by(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.14.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.14.query.sqlpp
index 39e3372..76dd651 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.14.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_started_by(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.2.update.sqlpp
index 4334476..5fbdf7d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.2.update.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp
index ca93d0e..f3f805d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-started-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_started_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.4.query.sqlpp
index 5c5ae25..af5b059 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.4.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-started-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_started_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.5.query.sqlpp
index 91436cc..e414153 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.5.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-started-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_started_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.6.query.sqlpp
index d3ea093..3867b87 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.6.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-started-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_started_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.7.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.7.query.sqlpp
index a303827..2b3a26f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.7.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_started_by(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.8.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.8.query.sqlpp
index a303827..b4de8e8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.8.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_started_by(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.9.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.9.query.sqlpp
index 39e3372..ab02067 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.9.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_started_by(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.1.ddl.sqlpp
index fdef960..3326abb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.1.ddl.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +31,9 @@ use TinyCollege;
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +42,9 @@ primary key name;
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.10.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.10.query.sqlpp
index 39e3372..71a89a8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.10.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_starts(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.11.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.11.query.sqlpp
index a303827..4e567c2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.11.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_starts(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.12.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.12.query.sqlpp
index a303827..cd7cf4a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.12.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_starts(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.13.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.13.query.sqlpp
index 39e3372..8146936 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.13.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_starts(f.office_hours, d.work_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.14.query.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.14.query.sqlpp
index 39e3372..1fea371 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.14.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_starts(d.work_hours, f.office_hours)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.2.update.sqlpp
index 4334476..552dbc7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.2.update.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp
index 915a717..51788b7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-starts`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_starts(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.4.query.sqlpp
index 2e8b27e..cf9d660 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.4.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-starts`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_starts(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.5.query.sqlpp
index f5aa575..fe13a01 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.5.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-starts`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_starts(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.6.query.sqlpp
index 146ecd1..4621f50 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.6.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-starts`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_starts(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.7.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.7.query.sqlpp
index a303827..49490f0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.7.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_starts(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.8.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.8.query.sqlpp
index a303827..5430332 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.8.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_starts(d.break, f.vacation)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.9.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.9.query.sqlpp
index 39e3372..e97dafa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.9.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_starts(f.vacation, d.break)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.10.adm
similarity index 67%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.10.adm
index 509693a..c15304d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.10.adm
@@ -1,3 +1,3 @@
{ "staff": "Zack", "student": "Karen" }
{ "staff": "Zack", "student": "Steve" }
-{ "staff": "Zack", "student": "Tess" }
\ No newline at end of file
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.11.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.11.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.12.adm
similarity index 67%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.12.adm
index 509693a..c15304d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.12.adm
@@ -1,3 +1,3 @@
{ "staff": "Zack", "student": "Karen" }
{ "staff": "Zack", "student": "Steve" }
-{ "staff": "Zack", "student": "Tess" }
\ No newline at end of file
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.13.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.13.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.14.adm
similarity index 67%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.14.adm
index 509693a..c15304d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.14.adm
@@ -1,3 +1,3 @@
{ "staff": "Zack", "student": "Karen" }
{ "staff": "Zack", "student": "Steve" }
-{ "staff": "Zack", "student": "Tess" }
\ No newline at end of file
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.3.adm
index f38e40b..93c0eb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.3.adm
@@ -1,5 +1,9 @@
{ "staff": "Franklin", "student": "Olga" }
-{ "staff": "Maryann", "student": "Charles" }
-{ "staff": "Maryann", "student": "Frank" }
-{ "staff": "Maryann", "student": "Mary" }
-{ "staff": "Maryann", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.5.adm
index f38e40b..93c0eb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.5.adm
@@ -1,5 +1,9 @@
{ "staff": "Franklin", "student": "Olga" }
-{ "staff": "Maryann", "student": "Charles" }
-{ "staff": "Maryann", "student": "Frank" }
-{ "staff": "Maryann", "student": "Mary" }
-{ "staff": "Maryann", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.7.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.7.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.8.adm
similarity index 67%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.8.adm
index 509693a..c15304d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.8.adm
@@ -1,3 +1,3 @@
{ "staff": "Zack", "student": "Karen" }
{ "staff": "Zack", "student": "Steve" }
-{ "staff": "Zack", "student": "Tess" }
\ No newline at end of file
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.9.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.9.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.10.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.10.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.11.adm
similarity index 67%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.11.adm
index 509693a..c15304d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.11.adm
@@ -1,3 +1,3 @@
{ "staff": "Zack", "student": "Karen" }
{ "staff": "Zack", "student": "Steve" }
-{ "staff": "Zack", "student": "Tess" }
\ No newline at end of file
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.12.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.12.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.13.adm
similarity index 67%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.13.adm
index 509693a..c15304d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.13.adm
@@ -1,3 +1,3 @@
{ "staff": "Zack", "student": "Karen" }
{ "staff": "Zack", "student": "Steve" }
-{ "staff": "Zack", "student": "Tess" }
\ No newline at end of file
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.14.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.14.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
index 509693a..c15304d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
@@ -1,3 +1,3 @@
{ "staff": "Zack", "student": "Karen" }
{ "staff": "Zack", "student": "Steve" }
-{ "staff": "Zack", "student": "Tess" }
\ No newline at end of file
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.4.adm
index f38e40b..93c0eb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.4.adm
@@ -1,5 +1,9 @@
{ "staff": "Franklin", "student": "Olga" }
-{ "staff": "Maryann", "student": "Charles" }
-{ "staff": "Maryann", "student": "Frank" }
-{ "staff": "Maryann", "student": "Mary" }
-{ "staff": "Maryann", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.5.adm
index 509693a..c15304d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.5.adm
@@ -1,3 +1,3 @@
{ "staff": "Zack", "student": "Karen" }
{ "staff": "Zack", "student": "Steve" }
-{ "staff": "Zack", "student": "Tess" }
\ No newline at end of file
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.6.adm
index f38e40b..93c0eb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.6.adm
@@ -1,5 +1,9 @@
{ "staff": "Franklin", "student": "Olga" }
-{ "staff": "Maryann", "student": "Charles" }
-{ "staff": "Maryann", "student": "Frank" }
-{ "staff": "Maryann", "student": "Mary" }
-{ "staff": "Maryann", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.7.adm
similarity index 67%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.7.adm
index 509693a..c15304d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.7.adm
@@ -1,3 +1,3 @@
{ "staff": "Zack", "student": "Karen" }
{ "staff": "Zack", "student": "Steve" }
-{ "staff": "Zack", "student": "Tess" }
\ No newline at end of file
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.8.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.8.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.9.adm
similarity index 67%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.9.adm
index 509693a..c15304d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.9.adm
@@ -1,3 +1,3 @@
{ "staff": "Zack", "student": "Karen" }
{ "staff": "Zack", "student": "Steve" }
-{ "staff": "Zack", "student": "Tess" }
\ No newline at end of file
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.10.adm
similarity index 79%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.10.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.10.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.11.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.11.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.12.adm
similarity index 79%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.12.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.12.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.13.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.13.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.14.adm
similarity index 79%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.14.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.14.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.6.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.6.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.7.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.7.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.8.adm
similarity index 79%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.8.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.8.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.9.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.9.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.10.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.10.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.11.adm
similarity index 79%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.11.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.11.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.12.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.12.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.13.adm
similarity index 79%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.13.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.13.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.14.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.14.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.3.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.3.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.5.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.5.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.7.adm
similarity index 79%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.7.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.7.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.8.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.8.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.9.adm
similarity index 79%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.9.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.9.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.10.adm
similarity index 71%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.10.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.10.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.11.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.11.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.12.adm
similarity index 71%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.12.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.12.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.13.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.13.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.14.adm
similarity index 71%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.14.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.14.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.6.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.6.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.7.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.7.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.8.adm
similarity index 71%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.8.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.8.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.9.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.9.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.10.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.10.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.11.adm
similarity index 71%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.11.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.11.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.12.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.12.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.13.adm
similarity index 71%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.13.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.13.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.14.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.14.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.3.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.3.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.5.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.5.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.7.adm
similarity index 71%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.7.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.7.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.8.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.8.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.9.adm
similarity index 71%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.9.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.9.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.10.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.10.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.11.adm
similarity index 66%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.11.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.11.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.12.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.12.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.13.adm
similarity index 66%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.13.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.13.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.14.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.14.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.5.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.5.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.7.adm
similarity index 66%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.7.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.7.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.8.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.8.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.9.adm
similarity index 66%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.9.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.9.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.10.adm
similarity index 66%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.10.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.10.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.11.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.11.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.12.adm
similarity index 66%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.12.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.12.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.13.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.13.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.14.adm
similarity index 66%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.14.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.14.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.4.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.4.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.6.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.6.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.7.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.7.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.8.adm
similarity index 66%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.8.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.8.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.9.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.9.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.10.adm
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.10.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.10.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.11.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.11.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.12.adm
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.12.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.12.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.13.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.13.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.14.adm
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.14.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.14.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.7.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.7.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.8.adm
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.8.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.8.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.9.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.9.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.10.adm
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.10.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.10.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.11.adm
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.11.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.11.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.12.adm
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.12.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.12.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.13.adm
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.13.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.13.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.14.adm
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.14.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.14.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.4.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.4.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.5.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.5.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.6.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.6.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.7.adm
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.7.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.7.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.8.adm
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.8.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.8.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.9.adm
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.9.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.9.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.10.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.10.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.11.adm
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.11.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.11.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.12.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.12.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.13.adm
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.13.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.13.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.14.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.14.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.5.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.5.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.7.adm
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.7.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.7.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.8.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.8.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.9.adm
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.9.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.9.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.10.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.10.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.11.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.11.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.12.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.12.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.13.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.13.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.14.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.14.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.7.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.7.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.8.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.8.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.9.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.9.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.10.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.10.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.11.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.11.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.12.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.12.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.13.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.13.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.14.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.14.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.7.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.7.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.8.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.8.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.9.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.9.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 19f5614..58af775 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -13812,7 +13812,7 @@
<expected-warn>ASX1107: Unexpected hint: indexnl. "hash" expected at this location</expected-warn>
<expected-warn>ASX1107: Unexpected hint: hash. "indexnl", "skip-index", "hash-bcast" expected at this location</expected-warn>
<expected-warn>ASX1107: Unexpected hint: auto. "indexnl", "skip-index" expected at this location</expected-warn>
- <expected-warn>ASX1107: Unexpected hint: hash. "indexnl", "skip-index" expected at this location</expected-warn>
+ <expected-warn>ASX1107: Unexpected hint: hash. "indexnl", "skip-index", "range" expected at this location</expected-warn>
<expected-warn>ASX1107: Unexpected hint: hash. None expected at this location</expected-warn>
</compilation-unit>
</test-case>
@@ -13835,7 +13835,7 @@
<expected-warn>ASX1107: Unexpected hint: unknown_hint_groupby. "hash" expected at this location</expected-warn>
<expected-warn>ASX1107: Unexpected hint: unknown_hint_relexpr. "indexnl", "skip-index", "hash-bcast" expected at this location</expected-warn>
<expected-warn>ASX1107: Unexpected hint: unknown_hint_between. "indexnl", "skip-index" expected at this location</expected-warn>
- <expected-warn>ASX1107: Unexpected hint: unknown_hint_funcall. "indexnl", "skip-index" expected at this location</expected-warn>
+ <expected-warn>ASX1107: Unexpected hint: unknown_hint_funcall. "indexnl", "skip-index", "range" expected at this location</expected-warn>
<expected-warn>ASX1107: Unexpected hint: unknown_hint_elsewhere. None expected at this location</expected-warn>
</compilation-unit>
</test-case>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/annotations/RangeAnnotation.java
similarity index 55%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
copy to asterixdb/asterix-common/src/main/java/org/apache/asterix/common/annotations/RangeAnnotation.java
index fdef960..4465167 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/annotations/RangeAnnotation.java
@@ -16,29 +16,30 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Description : Check temporal join functionality for interval
- * Expected Result : Success
- * Date : 26th Jun, 2015
- */
+package org.apache.asterix.common.annotations;
+
+import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionAnnotation;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public class RangeAnnotation implements IExpressionAnnotation {
+
+ private RangeMap map;
-drop dataverse TinyCollege if exists;
-create dataverse TinyCollege;
-use TinyCollege;
+ @Override
+ public Object getObject() {
+ return map;
+ }
-create type StaffType as open {
- name: string,
- office: string,
- employment: interval
-};
-create dataset Staff(StaffType)
-primary key name;
+ @Override
+ public void setObject(Object side) {
+ this.map = (RangeMap) side;
+ }
+ @Override
+ public IExpressionAnnotation copy() {
+ RangeAnnotation rangAnn = new RangeAnnotation();
+ rangAnn.map = map;
+ return rangAnn;
+ }
-create type StudentType as open {
- name: string,
- office: string,
- attendance: interval
-};
-create dataset Students(StudentType)
-primary key name;
+}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
index d2c851f..e23ea59 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
+++ b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
@@ -59,6 +59,7 @@ import org.apache.asterix.common.annotations.IRecordFieldDataGen;
import org.apache.asterix.common.annotations.InsertRandIntDataGen;
import org.apache.asterix.common.annotations.ListDataGen;
import org.apache.asterix.common.annotations.ListValFileDataGen;
+import org.apache.asterix.common.annotations.RangeAnnotation;
import org.apache.asterix.common.annotations.SkipSecondaryIndexSearchExpressionAnnotation;
import org.apache.asterix.common.annotations.TypeDataGen;
import org.apache.asterix.common.annotations.UndeclaredFieldsDataGen;
@@ -263,7 +264,7 @@ class SQLPPParser extends ScopeChecker implements IParser {
public DataverseName dataverse;
public String library;
public String function;
- public SqlppHint hint;
+ public Token hintToken;
public SourceLocation sourceLoc;
}
@@ -2286,19 +2287,19 @@ UnorderedListTypeDefinition UnorderedListTypeDef(boolean allowRecordTypeDef) thr
FunctionName FunctionName() throws ParseException:
{
- Triple<List<String>, SourceLocation, SqlppHint> prefix = null;
+ Triple<List<String>, SourceLocation, Token> prefix = null;
String suffix = null;
}
{
// Note: there's a copy of this production in PrimaryExpr() (LOOKAHEAD for FunctionCallExpr())
// that copy must be kept in sync with this code
prefix = MultipartIdentifierWithHints(SqlppHint.INDEXED_NESTED_LOOP_JOIN_HINT,
- SqlppHint.SKIP_SECONDARY_INDEX_SEARCH_HINT)
+ SqlppHint.SKIP_SECONDARY_INDEX_SEARCH_HINT, SqlppHint.RANGE_HINT)
(<SHARP> suffix = Identifier())?
{
FunctionName result = new FunctionName();
result.sourceLoc = prefix.second;
- result.hint = prefix.third;
+ result.hintToken = prefix.third;
List<String> list = prefix.first;
int ln = list.size();
String last = list.get(ln - 1);
@@ -2442,7 +2443,7 @@ String StringLiteral() throws ParseException:
List<String> MultipartIdentifier() throws ParseException:
{
- Triple<List<String>, SourceLocation, SqlppHint> result = null;
+ Triple<List<String>, SourceLocation, Token> result = null;
}
{
result = MultipartIdentifierWithHints(null)
@@ -2451,12 +2452,12 @@ List<String> MultipartIdentifier() throws ParseException:
}
}
-Triple<List<String>, SourceLocation, SqlppHint> MultipartIdentifierWithHints(SqlppHint... expectedHints)
+Triple<List<String>, SourceLocation, Token> MultipartIdentifierWithHints(SqlppHint... expectedHints)
throws ParseException:
{
List<String> list = new ArrayList<String>();
SourceLocation sourceLoc = null;
- SqlppHint hint = null;
+ Token hint = null;
String item = null;
}
{
@@ -2465,15 +2466,12 @@ Triple<List<String>, SourceLocation, SqlppHint> MultipartIdentifierWithHints(Sql
list.add(item);
sourceLoc = getSourceLocation(token);
if (expectedHints != null && expectedHints.length > 0) {
- Token hintToken = fetchHint(token, expectedHints);
- if (hintToken != null) {
- hint = hintToken.hint;
- }
+ hint = fetchHint(token, expectedHints);
}
}
(<DOT> item = Identifier() { list.add(item); } )*
{
- return new Triple<List<String>, SourceLocation, SqlppHint>(list, sourceLoc, hint);
+ return new Triple<List<String>, SourceLocation, Token>(list, sourceLoc, hint);
}
}
@@ -3442,14 +3440,27 @@ Expression FunctionCallExpr() throws ParseException:
return windowExpr;
} else {
CallExpr callExpr = new CallExpr(signature, argList, filterExpr);
- if (funcName.hint != null) {
- switch (funcName.hint) {
+ if (funcName.hintToken != null) {
+ switch (funcName.hintToken.hint) {
case INDEXED_NESTED_LOOP_JOIN_HINT:
callExpr.addHint(IndexedNLJoinExpressionAnnotation.INSTANCE);
break;
case SKIP_SECONDARY_INDEX_SEARCH_HINT:
callExpr.addHint(SkipSecondaryIndexSearchExpressionAnnotation.INSTANCE);
break;
+ case RANGE_HINT:
+ try {
+ RangeAnnotation rangeAnn = new RangeAnnotation();
+ rangeAnn.setObject((Object) RangeMapBuilder.parseHint(parseExpression(funcName.hintToken.hintParams)));
+ callExpr.addHint(rangeAnn);
+ } catch (CompilationException e) {
+ {
+ SqlppParseException e2 = new SqlppParseException(getSourceLocation(funcName.hintToken), e.getMessage());
+ e2.initCause(e);
+ throw e2;
+ }
+ }
+ break;
}
}
FunctionMapUtil.normalizedListInputFunctions(callExpr);
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java
index 2178b48..58495e8 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java
@@ -25,7 +25,7 @@ import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-class IntervalLogic {
+public class IntervalLogic {
private final IBinaryComparator comp;
private final ArrayBackedValueStorage s1 = new ArrayBackedValueStorage();
@@ -33,7 +33,7 @@ class IntervalLogic {
private final ArrayBackedValueStorage s2 = new ArrayBackedValueStorage();
private final ArrayBackedValueStorage e2 = new ArrayBackedValueStorage();
- IntervalLogic() {
+ public IntervalLogic() {
comp = BinaryComparatorFactoryProvider.INSTANCE
.getBinaryComparatorFactory(BuiltinType.ANY, BuiltinType.ANY, true).createBinaryComparator();
}
@@ -47,7 +47,7 @@ class IntervalLogic {
* @throws HyracksDataException IOException
* @see #after(AIntervalPointable, AIntervalPointable)
*/
- boolean before(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean before(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
e1.reset();
s2.reset();
ip1.getTaggedEnd(e1.getDataOutput());
@@ -56,7 +56,7 @@ class IntervalLogic {
s2.getStartOffset(), s2.getLength()) < 0;
}
- boolean after(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean after(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
return before(ip2, ip1);
}
@@ -69,7 +69,7 @@ class IntervalLogic {
* @throws HyracksDataException IOException
* @see #metBy(AIntervalPointable, AIntervalPointable)
*/
- boolean meets(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean meets(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
e1.reset();
s2.reset();
ip1.getTaggedEnd(e1.getDataOutput());
@@ -78,7 +78,7 @@ class IntervalLogic {
s2.getStartOffset(), s2.getLength()) == 0;
}
- boolean metBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean metBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
return meets(ip2, ip1);
}
@@ -91,7 +91,7 @@ class IntervalLogic {
* @throws HyracksDataException IOException
* @see #overlappedBy(AIntervalPointable, AIntervalPointable)
*/
- boolean overlaps(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean overlaps(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
s1.reset();
e1.reset();
s2.reset();
@@ -108,7 +108,7 @@ class IntervalLogic {
e2.getStartOffset(), e2.getLength()) < 0;
}
- boolean overlappedBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean overlappedBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
return overlaps(ip2, ip1);
}
@@ -120,7 +120,7 @@ class IntervalLogic {
* @throws HyracksDataException IOException
* @return boolean
*/
- boolean overlapping(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean overlapping(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
s1.reset();
e1.reset();
s2.reset();
@@ -144,7 +144,7 @@ class IntervalLogic {
* @throws HyracksDataException IOException
* @see #startedBy(AIntervalPointable, AIntervalPointable)
*/
- boolean starts(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean starts(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
s1.reset();
e1.reset();
s2.reset();
@@ -159,7 +159,7 @@ class IntervalLogic {
e2.getStartOffset(), e2.getLength()) <= 0;
}
- boolean startedBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean startedBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
return starts(ip2, ip1);
}
@@ -172,7 +172,7 @@ class IntervalLogic {
* @throws HyracksDataException IOException
* @see #coveredBy(AIntervalPointable, AIntervalPointable)
*/
- boolean covers(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean covers(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
s1.reset();
e1.reset();
s2.reset();
@@ -187,7 +187,7 @@ class IntervalLogic {
e2.getStartOffset(), e2.getLength()) >= 0;
}
- boolean coveredBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean coveredBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
return covers(ip2, ip1);
}
@@ -200,7 +200,7 @@ class IntervalLogic {
* @throws HyracksDataException IOException
* @see #endedBy(AIntervalPointable, AIntervalPointable)
*/
- boolean ends(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean ends(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
s1.reset();
e1.reset();
s2.reset();
@@ -215,7 +215,7 @@ class IntervalLogic {
e2.getStartOffset(), e2.getLength()) == 0;
}
- boolean endedBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean endedBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
return ends(ip2, ip1);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/IntervalMergeJoinOperatorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/IntervalMergeJoinOperatorDescriptor.java
new file mode 100644
index 0000000..f28faf1
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/IntervalMergeJoinOperatorDescriptor.java
@@ -0,0 +1,186 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.operators.joins.interval;
+
+import java.nio.ByteBuffer;
+
+import org.apache.asterix.runtime.operators.joins.interval.utils.IIntervalJoinUtil;
+import org.apache.asterix.runtime.operators.joins.interval.utils.IIntervalJoinUtilFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.ActivityId;
+import org.apache.hyracks.api.dataflow.IActivity;
+import org.apache.hyracks.api.dataflow.IActivityGraphBuilder;
+import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
+import org.apache.hyracks.api.dataflow.TaskId;
+import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
+import org.apache.hyracks.api.job.JobId;
+import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
+import org.apache.hyracks.dataflow.std.base.AbstractActivityNode;
+import org.apache.hyracks.dataflow.std.base.AbstractOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.base.AbstractStateObject;
+import org.apache.hyracks.dataflow.std.base.AbstractUnaryInputSinkOperatorNodePushable;
+import org.apache.hyracks.dataflow.std.base.AbstractUnaryInputUnaryOutputOperatorNodePushable;
+
+public class IntervalMergeJoinOperatorDescriptor extends AbstractOperatorDescriptor {
+ private static final long serialVersionUID = 1L;
+
+ private static final int JOIN_BUILD_ACTIVITY_ID = 0;
+ private static final int JOIN_PROBE_ACTIVITY_ID = 1;
+ private final int[] leftKeys;
+ private final int[] rightKeys;
+ private final int memoryForJoin;
+ private final IIntervalJoinUtilFactory imjcf;
+
+ private final int probeKey;
+ private final int buildKey;
+
+ public IntervalMergeJoinOperatorDescriptor(IOperatorDescriptorRegistry spec, int memoryForJoin, int[] leftKeys,
+ int[] rightKeys, RecordDescriptor recordDescriptor, IIntervalJoinUtilFactory imjcf) {
+ super(spec, 2, 1);
+ outRecDescs[0] = recordDescriptor;
+ this.buildKey = leftKeys[0];
+ this.probeKey = rightKeys[0];
+ this.leftKeys = leftKeys;
+ this.rightKeys = rightKeys;
+ this.memoryForJoin = memoryForJoin;
+ this.imjcf = imjcf;
+ }
+
+ @Override
+ public void contributeActivities(IActivityGraphBuilder builder) {
+ ActivityId buildAid = new ActivityId(odId, JOIN_BUILD_ACTIVITY_ID);
+ ActivityId probeAid = new ActivityId(odId, JOIN_PROBE_ACTIVITY_ID);
+
+ IActivity probeAN = new JoinProbeActivityNode(probeAid);
+ IActivity buildAN = new JoinBuildActivityNode(buildAid, probeAid);
+
+ builder.addActivity(this, buildAN);
+ builder.addSourceEdge(0, buildAN, 0);
+
+ builder.addActivity(this, probeAN);
+ builder.addSourceEdge(1, probeAN, 0);
+ builder.addTargetEdge(0, probeAN, 0);
+ builder.addBlockingEdge(buildAN, probeAN);
+ }
+
+ public static class JoinCacheTaskState extends AbstractStateObject {
+ private IntervalMergeJoiner joiner;
+
+ private JoinCacheTaskState(JobId jobId, TaskId taskId) {
+ super(jobId, taskId);
+ }
+ }
+
+ private class JoinBuildActivityNode extends AbstractActivityNode {
+ private static final long serialVersionUID = 1L;
+
+ private final ActivityId nljAid;
+
+ public JoinBuildActivityNode(ActivityId id, ActivityId nljAid) {
+ super(id);
+ this.nljAid = nljAid;
+ }
+
+ @Override
+ public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
+ IRecordDescriptorProvider recordDescProvider, final int partition, int nPartitions) {
+ final RecordDescriptor rd0 = recordDescProvider.getInputRecordDescriptor(nljAid, 0);
+ final RecordDescriptor rd1 = recordDescProvider.getInputRecordDescriptor(getActivityId(), 0);
+
+ return new AbstractUnaryInputSinkOperatorNodePushable() {
+ private JoinCacheTaskState state;
+
+ @Override
+ public void open() throws HyracksDataException {
+ state = new JoinCacheTaskState(ctx.getJobletContext().getJobId(),
+ new TaskId(getActivityId(), partition));
+
+ IIntervalJoinUtil imjc =
+ imjcf.createIntervalMergeJoinChecker(leftKeys, rightKeys, ctx, nPartitions);
+
+ state.joiner = new IntervalMergeJoiner(ctx, memoryForJoin, imjc, buildKey, probeKey, rd0, rd1);
+ }
+
+ @Override
+ public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+ ByteBuffer copyBuffer = ctx.allocateFrame(buffer.capacity());
+ FrameUtils.copyAndFlip(buffer, copyBuffer);
+ state.joiner.processBuildFrame(copyBuffer);
+ }
+
+ @Override
+ public void close() throws HyracksDataException {
+ state.joiner.processBuildClose();
+ ctx.setStateObject(state);
+ }
+
+ @Override
+ public void fail() {
+ // No variables to update.
+ }
+ };
+ }
+ }
+
+ private class JoinProbeActivityNode extends AbstractActivityNode {
+ private static final long serialVersionUID = 1L;
+
+ public JoinProbeActivityNode(ActivityId id) {
+ super(id);
+ }
+
+ @Override
+ public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
+ IRecordDescriptorProvider recordDescProvider, final int partition, int nPartitions) {
+ return new AbstractUnaryInputUnaryOutputOperatorNodePushable() {
+ private JoinCacheTaskState state;
+
+ @Override
+ public void open() throws HyracksDataException {
+ writer.open();
+ state = (JoinCacheTaskState) ctx.getStateObject(
+ new TaskId(new ActivityId(getOperatorId(), JOIN_BUILD_ACTIVITY_ID), partition));
+ }
+
+ @Override
+ public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+ state.joiner.processProbeFrame(buffer, writer);
+ }
+
+ @Override
+ public void close() throws HyracksDataException {
+ try {
+ state.joiner.processProbeClose(writer);
+ } finally {
+ writer.close();
+ }
+ }
+
+ @Override
+ public void fail() throws HyracksDataException {
+ writer.fail();
+ }
+ };
+ }
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/IntervalMergeJoiner.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/IntervalMergeJoiner.java
new file mode 100644
index 0000000..13d8c25
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/IntervalMergeJoiner.java
@@ -0,0 +1,264 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.operators.joins.interval;
+
+import java.nio.ByteBuffer;
+import java.util.Iterator;
+import java.util.LinkedList;
+
+import org.apache.asterix.runtime.operators.joins.interval.utils.IIntervalJoinUtil;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.ITupleAccessor;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalSideTuple;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalVariableDeletableTupleMemoryManager;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.RunFilePointer;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.RunFileStream;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.TupleAccessor;
+import org.apache.hyracks.api.comm.IFrame;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.comm.VSizeFrame;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
+import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
+import org.apache.hyracks.dataflow.std.buffermanager.DeallocatableFramePool;
+import org.apache.hyracks.dataflow.std.buffermanager.IDeallocatableFramePool;
+import org.apache.hyracks.dataflow.std.buffermanager.IDeletableTupleBufferManager;
+import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+
+/**
+ * Merge Joiner takes two sorted streams of input and joins.
+ * The two sorted streams must be in a logical order and the comparator must
+ * support keeping that order so the join will work.
+ * The left stream will spill to disk when memory is full.
+ * The right stream spills to memory and pause when memory is full.
+ */
+public class IntervalMergeJoiner {
+
+ public enum TupleStatus {
+ LOADED,
+ EMPTY;
+
+ public boolean isLoaded() {
+ return this.equals(LOADED);
+ }
+
+ public boolean isEmpty() {
+ return this.equals(EMPTY);
+ }
+ }
+
+ private final IDeallocatableFramePool framePool;
+ private final IDeletableTupleBufferManager bufferManager;
+ private final ITupleAccessor memoryAccessor;
+ private final LinkedList<TuplePointer> memoryBuffer = new LinkedList<>();
+
+ private final RunFileStream runFileStream;
+ private final RunFilePointer runFilePointer;
+
+ private IntervalSideTuple memoryTuple;
+ private IntervalSideTuple[] inputTuple;
+
+ private final IIntervalJoinUtil mjc;
+
+ protected static final int JOIN_PARTITIONS = 2;
+ protected static final int BUILD_PARTITION = 0;
+ protected static final int PROBE_PARTITION = 1;
+
+ protected final IFrame[] inputBuffer;
+ protected final FrameTupleAppender resultAppender;
+ protected final ITupleAccessor[] inputAccessor;
+
+ protected long[] frameCounts = { 0, 0 };
+ protected long[] tupleCounts = { 0, 0 };
+
+ public IntervalMergeJoiner(IHyracksTaskContext ctx, int memorySize, IIntervalJoinUtil mjc, int buildKeys,
+ int probeKeys, RecordDescriptor buildRd, RecordDescriptor probeRd) throws HyracksDataException {
+ this.mjc = mjc;
+
+ // Memory (probe buffer)
+ if (memorySize < 1) {
+ throw new HyracksDataException(
+ "MergeJoiner does not have enough memory (needs > 0, got " + memorySize + ").");
+ }
+
+ inputAccessor = new TupleAccessor[JOIN_PARTITIONS];
+ inputAccessor[BUILD_PARTITION] = new TupleAccessor(buildRd);
+ inputAccessor[PROBE_PARTITION] = new TupleAccessor(probeRd);
+
+ inputBuffer = new IFrame[JOIN_PARTITIONS];
+ inputBuffer[BUILD_PARTITION] = new VSizeFrame(ctx);
+ inputBuffer[PROBE_PARTITION] = new VSizeFrame(ctx);
+
+ framePool = new DeallocatableFramePool(ctx, (memorySize) * ctx.getInitialFrameSize());
+ bufferManager = new IntervalVariableDeletableTupleMemoryManager(framePool, probeRd);
+ memoryAccessor = ((IntervalVariableDeletableTupleMemoryManager) bufferManager).createTupleAccessor();
+
+ // Run File and frame cache (build buffer)
+ runFileStream = new RunFileStream(ctx, "ismj-left");
+ runFilePointer = new RunFilePointer();
+ runFileStream.createRunFileWriting();
+ runFileStream.startRunFileWriting();
+
+ memoryTuple = new IntervalSideTuple(mjc, memoryAccessor, probeKeys);
+
+ inputTuple = new IntervalSideTuple[JOIN_PARTITIONS];
+ inputTuple[PROBE_PARTITION] = new IntervalSideTuple(mjc, inputAccessor[PROBE_PARTITION], probeKeys);
+ inputTuple[BUILD_PARTITION] = new IntervalSideTuple(mjc, inputAccessor[BUILD_PARTITION], buildKeys);
+
+ // Result
+ this.resultAppender = new FrameTupleAppender(new VSizeFrame(ctx));
+ }
+
+ public void processBuildFrame(ByteBuffer buffer) throws HyracksDataException {
+ inputAccessor[BUILD_PARTITION].reset(buffer);
+ for (int x = 0; x < inputAccessor[BUILD_PARTITION].getTupleCount(); x++) {
+ runFileStream.addToRunFile(inputAccessor[BUILD_PARTITION], x);
+ }
+ }
+
+ public void processBuildClose() throws HyracksDataException {
+ runFileStream.flushRunFile();
+ runFileStream.startReadingRunFile(inputAccessor[BUILD_PARTITION]);
+ }
+
+ public void processProbeFrame(ByteBuffer buffer, IFrameWriter writer) throws HyracksDataException {
+ inputAccessor[PROBE_PARTITION].reset(buffer);
+ inputAccessor[PROBE_PARTITION].next();
+
+ TupleStatus buildTs = loadBuildTuple();
+ TupleStatus probeTs = loadProbeTuple();
+ while (buildTs.isLoaded() && (probeTs.isLoaded() || memoryHasTuples())) {
+ if (probeTs.isLoaded()) {
+ // Right side from stream
+ processProbeTuple(writer);
+ probeTs = loadProbeTuple();
+ } else {
+ // Left side from stream
+ processBuildTuple(writer);
+ buildTs = loadBuildTuple();
+ }
+ }
+ }
+
+ public void processProbeClose(IFrameWriter writer) throws HyracksDataException {
+ resultAppender.write(writer, true);
+ runFileStream.close();
+ runFileStream.removeRunFile();
+ }
+
+ private TupleStatus loadProbeTuple() {
+ TupleStatus loaded;
+ if (inputAccessor[PROBE_PARTITION] != null && inputAccessor[PROBE_PARTITION].exists()) {
+ // Still processing frame.
+ loaded = TupleStatus.LOADED;
+ } else {
+ // No more frames or tuples to process.
+ loaded = TupleStatus.EMPTY;
+ }
+ return loaded;
+ }
+
+ private TupleStatus loadBuildTuple() throws HyracksDataException {
+ if (!inputAccessor[BUILD_PARTITION].exists()) {
+ // Must keep condition in a separate if due to actions applied in loadNextBuffer.
+ if (!runFileStream.loadNextBuffer(inputAccessor[BUILD_PARTITION])) {
+ return TupleStatus.EMPTY;
+ }
+ }
+ return TupleStatus.LOADED;
+ }
+
+ private void processBuildTuple(IFrameWriter writer) throws HyracksDataException {
+ // Check against memory
+ if (memoryHasTuples()) {
+ inputTuple[BUILD_PARTITION].loadTuple();
+ Iterator<TuplePointer> memoryIterator = memoryBuffer.iterator();
+ while (memoryIterator.hasNext()) {
+ TuplePointer tp = memoryIterator.next();
+ memoryTuple.setTuple(tp);
+ if (inputTuple[BUILD_PARTITION].removeFromMemory(memoryTuple)) {
+ // remove from memory
+ bufferManager.deleteTuple(tp);
+ memoryIterator.remove();
+ continue;
+ } else if (inputTuple[BUILD_PARTITION].checkForEarlyExit(memoryTuple)) {
+ // No more possible comparisons
+ break;
+ } else if (inputTuple[BUILD_PARTITION].compareJoin(memoryTuple)) {
+ // add to result
+ addToResult(inputAccessor[BUILD_PARTITION], inputAccessor[BUILD_PARTITION].getTupleId(),
+ memoryAccessor, tp.getTupleIndex(), writer);
+ }
+ }
+ }
+ inputAccessor[BUILD_PARTITION].next();
+ }
+
+ private void processProbeTuple(IFrameWriter writer) throws HyracksDataException {
+ // append to memory
+ if (mjc.checkToSaveInMemory(inputAccessor[BUILD_PARTITION], inputAccessor[BUILD_PARTITION].getTupleId(),
+ inputAccessor[PROBE_PARTITION], inputAccessor[PROBE_PARTITION].getTupleId())) {
+ if (!addToMemory(inputAccessor[PROBE_PARTITION])) {
+ unfreezeAndClearMemory(writer, inputAccessor[BUILD_PARTITION]);
+ return;
+ }
+ }
+ inputAccessor[PROBE_PARTITION].next();
+ }
+
+ private void unfreezeAndClearMemory(IFrameWriter writer, ITupleAccessor accessor) throws HyracksDataException {
+ runFilePointer.reset(runFileStream.getReadPointer(), inputAccessor[BUILD_PARTITION].getTupleId());
+ TupleStatus buildTs = loadBuildTuple();
+ while (buildTs.isLoaded() && memoryHasTuples()) {
+ // Left side from stream
+ processBuildTuple(writer);
+ buildTs = loadBuildTuple();
+ }
+ // Finish writing
+ runFileStream.flushRunFile();
+ // Clear memory
+ memoryBuffer.clear();
+ bufferManager.reset();
+ // Start reading
+ runFileStream.startReadingRunFile(accessor, runFilePointer.getFileOffset());
+ accessor.setTupleId(runFilePointer.getTupleIndex());
+ runFilePointer.reset(-1, -1);
+ }
+
+ private boolean addToMemory(ITupleAccessor accessor) throws HyracksDataException {
+ TuplePointer tp = new TuplePointer();
+ if (bufferManager.insertTuple(accessor, accessor.getTupleId(), tp)) {
+ memoryBuffer.add(tp);
+ return true;
+ }
+ return false;
+ }
+
+ private void addToResult(IFrameTupleAccessor accessorLeft, int leftTupleIndex, IFrameTupleAccessor accessorRight,
+ int rightTupleIndex, IFrameWriter writer) throws HyracksDataException {
+ FrameUtils.appendConcatToWriter(writer, resultAppender, accessorLeft, leftTupleIndex, accessorRight,
+ rightTupleIndex);
+ }
+
+ private boolean memoryHasTuples() {
+ return bufferManager.getNumTuples() > 0;
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AbstractIntervalInverseJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AbstractIntervalInverseJoinUtil.java
new file mode 100644
index 0000000..7830b0c
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AbstractIntervalInverseJoinUtil.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
+
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalJoinUtil;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+
+public abstract class AbstractIntervalInverseJoinUtil extends AbstractIntervalJoinUtil {
+
+ public AbstractIntervalInverseJoinUtil(int idLeft, int idRight) {
+ super(idLeft, idRight);
+ }
+
+ /**
+ * Right (second argument) interval starts before left (first argument) interval ends.
+ */
+ @Override
+ public boolean checkToSaveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ long start0 = IntervalJoinUtil.getIntervalStart(accessorLeft, leftTupleIndex, idLeft);
+ long end1 = IntervalJoinUtil.getIntervalEnd(accessorRight, rightTupleIndex, idRight);
+ return start0 < end1;
+ }
+
+ /**
+ * Left (first argument) interval starts after the Right (second argument) interval ends.
+ */
+ @Override
+ public boolean checkToRemoveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ long start0 = IntervalJoinUtil.getIntervalStart(accessorLeft, leftTupleIndex, idLeft);
+ long end1 = IntervalJoinUtil.getIntervalEnd(accessorRight, rightTupleIndex, idRight);
+ return start0 >= end1;
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AbstractIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AbstractIntervalJoinUtil.java
new file mode 100644
index 0000000..da50ab2
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AbstractIntervalJoinUtil.java
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
+
+import org.apache.asterix.formats.nontagged.BinaryComparatorFactoryProvider;
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.runtime.evaluators.functions.temporal.IntervalLogic;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalJoinUtil;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.TaggedValuePointable;
+import org.apache.hyracks.data.std.primitive.VoidPointable;
+
+public abstract class AbstractIntervalJoinUtil implements IIntervalJoinUtil {
+
+ protected final int idLeft;
+ protected final int idRight;
+
+ protected final IntervalLogic il = new IntervalLogic();
+
+ protected final TaggedValuePointable tvp = TaggedValuePointable.FACTORY.createPointable();
+ protected final AIntervalPointable ipLeft = (AIntervalPointable) AIntervalPointable.FACTORY.createPointable();
+ protected final AIntervalPointable ipRight = (AIntervalPointable) AIntervalPointable.FACTORY.createPointable();
+
+ protected final IBinaryComparator ch = BinaryComparatorFactoryProvider.INSTANCE
+ .getBinaryComparatorFactory(BuiltinType.ANY, BuiltinType.ANY, true).createBinaryComparator();
+ protected final IPointable startLeft = VoidPointable.FACTORY.createPointable();
+ protected final IPointable startRight = VoidPointable.FACTORY.createPointable();
+
+ public AbstractIntervalJoinUtil(int idLeft, int idRight) {
+ this.idLeft = idLeft;
+ this.idRight = idRight;
+ }
+
+ /**
+ * Right (second argument) interval starts before left (first argument) interval ends.
+ */
+ @Override
+ public boolean checkToSaveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ long start1 = IntervalJoinUtil.getIntervalStart(accessorRight, rightTupleIndex, idRight);
+ long start0 = IntervalJoinUtil.getIntervalStart(accessorLeft, leftTupleIndex, idLeft);
+ return start0 <= start1;
+ }
+
+ /**
+ * Left (first argument) interval starts after the Right (second argument) interval ends.
+ */
+ @Override
+ public boolean checkToRemoveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ long start0 = IntervalJoinUtil.getIntervalStart(accessorLeft, leftTupleIndex, idLeft);
+ long start1 = IntervalJoinUtil.getIntervalStart(accessorRight, rightTupleIndex, idRight);
+ return start0 > start1;
+ }
+
+ /**
+ * Left (first argument) interval starts after the Right (second argument) interval ends.
+ */
+ @Override
+ public boolean checkIfMoreMatches(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ long start1 = IntervalJoinUtil.getIntervalStart(accessorRight, rightTupleIndex, idRight);
+ long end0 = IntervalJoinUtil.getIntervalEnd(accessorLeft, leftTupleIndex, idLeft);
+ return end0 > start1;
+ }
+
+ @Override
+ public boolean checkToSaveInResult(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex, boolean reversed) throws HyracksDataException {
+ if (reversed) {
+ IntervalJoinUtil.getIntervalPointable(accessorLeft, leftTupleIndex, idLeft, ipRight);
+ IntervalJoinUtil.getIntervalPointable(accessorRight, rightTupleIndex, idRight, ipLeft);
+ } else {
+ IntervalJoinUtil.getIntervalPointable(accessorLeft, leftTupleIndex, idLeft, ipLeft);
+ IntervalJoinUtil.getIntervalPointable(accessorRight, rightTupleIndex, idRight, ipRight);
+ }
+ return compareInterval(ipLeft, ipRight);
+ }
+
+ /**
+ * Right (second argument) interval starts before left (first argument) interval ends.
+ */
+ @Override
+ public boolean checkForEarlyExit(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ long start1 = IntervalJoinUtil.getIntervalStart(accessorRight, rightTupleIndex, idRight);
+ long end0 = IntervalJoinUtil.getIntervalEnd(accessorLeft, leftTupleIndex, idLeft);
+ return end0 < start1;
+ }
+
+ @Override
+ public abstract boolean compareInterval(AIntervalPointable ipLeft, AIntervalPointable ipRight)
+ throws HyracksDataException;
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AfterIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AfterIntervalJoinUtil.java
new file mode 100644
index 0000000..e192943
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AfterIntervalJoinUtil.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalJoinUtil;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class AfterIntervalJoinUtil extends AbstractIntervalJoinUtil {
+
+ public AfterIntervalJoinUtil(int[] keysLeft, int[] keysRight) {
+ super(keysLeft[0], keysRight[0]);
+ }
+
+ @Override
+ public boolean checkToSaveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleID,
+ IFrameTupleAccessor accessorRight, int rightTupleID) {
+ long start0 = IntervalJoinUtil.getIntervalStart(accessorLeft, leftTupleID, idRight);
+ long start1 = IntervalJoinUtil.getIntervalStart(accessorRight, rightTupleID, idRight);
+ return start0 >= start1;
+ }
+
+ @Override
+ public boolean checkToRemoveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ return false;
+ }
+
+ @Override
+ public boolean checkForEarlyExit(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ return false;
+ }
+
+ @Override
+ public boolean checkIfMoreMatches(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ return true;
+ }
+
+ @Override
+ public boolean compareInterval(AIntervalPointable ipLeft, AIntervalPointable ipRight) throws HyracksDataException {
+ return il.after(ipLeft, ipRight);
+ }
+}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AfterIntervalJoinUtilFactory.java
similarity index 62%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
copy to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AfterIntervalJoinUtilFactory.java
index 4334476..b54edf8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AfterIntervalJoinUtilFactory.java
@@ -16,16 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Description : Check temporal join functionality for interval
- * Expected Result : Success
- * Date : 26th Jun, 2015
- */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
-use TinyCollege;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
-load dataset Staff using localfs
-(("path"="asterix_nc1://data/tinycollege/staff.adm"),("format"="adm"));
+public class AfterIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
-load dataset Students using localfs
-(("path"="asterix_nc1://data/tinycollege/students.adm"),("format"="adm"));
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinChecker(int[] keys0, int[] keys1, IHyracksTaskContext ctx,
+ int nPartitions) {
+ return new AfterIntervalJoinUtil(keys0, keys1);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/BeforeIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/BeforeIntervalJoinUtil.java
new file mode 100644
index 0000000..304775c
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/BeforeIntervalJoinUtil.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalJoinUtil;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class BeforeIntervalJoinUtil extends AbstractIntervalJoinUtil {
+
+ public BeforeIntervalJoinUtil(int[] keysLeft, int[] keysRight) {
+ super(keysLeft[0], keysRight[0]);
+ }
+
+ @Override
+ public boolean checkToSaveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleID,
+ IFrameTupleAccessor accessorRight, int rightTupleID) {
+ long start0 = IntervalJoinUtil.getIntervalStart(accessorLeft, leftTupleID, idRight);
+ long start1 = IntervalJoinUtil.getIntervalStart(accessorRight, rightTupleID, idRight);
+ return start0 <= start1;
+ }
+
+ @Override
+ public boolean checkToRemoveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ return false;
+ }
+
+ @Override
+ public boolean checkForEarlyExit(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ return false;
+ }
+
+ @Override
+ public boolean checkIfMoreMatches(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ return true;
+ }
+
+ @Override
+ public boolean compareInterval(AIntervalPointable ipLeft, AIntervalPointable ipRight) throws HyracksDataException {
+ return il.before(ipLeft, ipRight);
+ }
+}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/BeforeIntervalJoinUtilFactory.java
similarity index 62%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
copy to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/BeforeIntervalJoinUtilFactory.java
index 4334476..a653ff9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/BeforeIntervalJoinUtilFactory.java
@@ -16,16 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Description : Check temporal join functionality for interval
- * Expected Result : Success
- * Date : 26th Jun, 2015
- */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
-use TinyCollege;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
-load dataset Staff using localfs
-(("path"="asterix_nc1://data/tinycollege/staff.adm"),("format"="adm"));
+public class BeforeIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
-load dataset Students using localfs
-(("path"="asterix_nc1://data/tinycollege/students.adm"),("format"="adm"));
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinChecker(int[] keys0, int[] keys1, IHyracksTaskContext ctx,
+ int nPartitions) {
+ return new BeforeIntervalJoinUtil(keys0, keys1);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoveredByIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoveredByIntervalJoinUtil.java
new file mode 100644
index 0000000..a8e8177
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoveredByIntervalJoinUtil.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalJoinUtil;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class CoveredByIntervalJoinUtil extends AbstractIntervalInverseJoinUtil {
+
+ public CoveredByIntervalJoinUtil(int[] keysLeft, int[] keysRight) {
+ super(keysLeft[0], keysRight[0]);
+ }
+
+ /**
+ * Right (second argument) interval starts before left (first argument) interval ends.
+ */
+ @Override
+ public boolean checkToSaveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ long start0 = IntervalJoinUtil.getIntervalStart(accessorLeft, leftTupleIndex, idLeft);
+ long end1 = IntervalJoinUtil.getIntervalEnd(accessorRight, rightTupleIndex, idRight);
+ return start0 <= end1;
+ }
+
+ /**
+ * Left (first argument) interval starts after the Right (second argument) interval ends.
+ */
+ @Override
+ public boolean checkToRemoveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ long start0 = IntervalJoinUtil.getIntervalStart(accessorLeft, leftTupleIndex, idLeft);
+ long end1 = IntervalJoinUtil.getIntervalEnd(accessorRight, rightTupleIndex, idRight);
+ return start0 > end1;
+
+ }
+
+ @Override
+ public boolean compareInterval(AIntervalPointable ipLeft, AIntervalPointable ipRight) throws HyracksDataException {
+ return il.coveredBy(ipLeft, ipRight);
+ }
+}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoveredByIntervalJoinUtilFactory.java
similarity index 62%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
copy to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoveredByIntervalJoinUtilFactory.java
index 4334476..7f52c11 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoveredByIntervalJoinUtilFactory.java
@@ -16,16 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Description : Check temporal join functionality for interval
- * Expected Result : Success
- * Date : 26th Jun, 2015
- */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
-use TinyCollege;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
-load dataset Staff using localfs
-(("path"="asterix_nc1://data/tinycollege/staff.adm"),("format"="adm"));
+public class CoveredByIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
-load dataset Students using localfs
-(("path"="asterix_nc1://data/tinycollege/students.adm"),("format"="adm"));
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinChecker(int[] keys0, int[] keys1, IHyracksTaskContext ctx,
+ int nPartitions) {
+ return new CoveredByIntervalJoinUtil(keys0, keys1);
+ }
+}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoversIntervalJoinUtil.java
similarity index 58%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
copy to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoversIntervalJoinUtil.java
index fdef960..cdfaafd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoversIntervalJoinUtil.java
@@ -16,29 +16,19 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Description : Check temporal join functionality for interval
- * Expected Result : Success
- * Date : 26th Jun, 2015
- */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
-drop dataverse TinyCollege if exists;
-create dataverse TinyCollege;
-use TinyCollege;
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
-create type StaffType as open {
- name: string,
- office: string,
- employment: interval
-};
-create dataset Staff(StaffType)
-primary key name;
+public class CoversIntervalJoinUtil extends AbstractIntervalJoinUtil {
+ public CoversIntervalJoinUtil(int[] keysLeft, int[] keysRight) {
+ super(keysLeft[0], keysRight[0]);
+ }
-create type StudentType as open {
- name: string,
- office: string,
- attendance: interval
-};
-create dataset Students(StudentType)
-primary key name;
+ @Override
+ public boolean compareInterval(AIntervalPointable ipLeft, AIntervalPointable ipRight) throws HyracksDataException {
+ return il.covers(ipLeft, ipRight);
+ }
+}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoversIntervalJoinUtilFactory.java
similarity index 62%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
copy to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoversIntervalJoinUtilFactory.java
index 4334476..9b7481e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoversIntervalJoinUtilFactory.java
@@ -16,16 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Description : Check temporal join functionality for interval
- * Expected Result : Success
- * Date : 26th Jun, 2015
- */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
-use TinyCollege;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
-load dataset Staff using localfs
-(("path"="asterix_nc1://data/tinycollege/staff.adm"),("format"="adm"));
+public class CoversIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
-load dataset Students using localfs
-(("path"="asterix_nc1://data/tinycollege/students.adm"),("format"="adm"));
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinChecker(int[] keys0, int[] keys1, IHyracksTaskContext ctx,
+ int nPartitions) {
+ return new CoversIntervalJoinUtil(keys0, keys1);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/IIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/IIntervalJoinUtil.java
new file mode 100644
index 0000000..91c14b0
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/IIntervalJoinUtil.java
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public interface IIntervalJoinUtil {
+
+ /**
+ * Check to see if the right tuple should be added to memory during the merge join.
+ * The memory is used to check the right tuple with the remaining left tuples.
+ * The check is true if the next left tuple could still match with this right tuple.
+ *
+ * @param accessorLeft
+ * @param accessorRight
+ * @return boolean
+ * @throws HyracksDataException
+ */
+ boolean checkToSaveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleIndex, IFrameTupleAccessor accessorRight,
+ int rightTupleIndex) throws HyracksDataException;
+
+ /**
+ * Check to see if the right tuple should be removed from memory during the merge join.
+ * The memory is used to check the right tuple with the remaining left tuples.
+ * The check is true if the next left tuple is NOT able match with this right tuple.
+ *
+ * @param accessorLeft
+ * @param accessorRight
+ * @return boolean
+ * @throws HyracksDataException
+ */
+ boolean checkToRemoveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) throws HyracksDataException;
+
+ /**
+ * Check to see if the left tuple should continue checking for matches.
+ * The check is true if the next left tuple is NOT able match with this right tuple.
+ *
+ * @param accessorLeft
+ * @param accessorRight
+ * @return boolean
+ * @throws HyracksDataException
+ */
+ boolean checkIfMoreMatches(IFrameTupleAccessor accessorLeft, int leftTupleIndex, IFrameTupleAccessor accessorRight,
+ int rightTupleIndex) throws HyracksDataException;
+
+ /**
+ * Check to see if tuples match join condition
+ * The check is true if they match.
+ *
+ * @param accessorLeft
+ * @param leftTupleIndex
+ * @param accessorRight
+ * @param rightTupleIndex
+ * @return boolean
+ * @throws HyracksDataException
+ */
+ boolean checkToSaveInResult(IFrameTupleAccessor accessorLeft, int leftTupleIndex, IFrameTupleAccessor accessorRight,
+ int rightTupleIndex, boolean reversed) throws HyracksDataException;
+
+ /**
+ * Check to see if the interval matches the join condition.
+ * The check is true if it matches.
+ *
+ * @param ipLeft
+ * @param ipRight
+ * @return boolean
+ * @throws HyracksDataException
+ */
+ boolean compareInterval(AIntervalPointable ipLeft, AIntervalPointable ipRight) throws HyracksDataException;
+
+ /**
+ * Check to see if the left tuple should stop checking for matches.
+ * The check is true if there can be no more matches
+ *
+ * @param accessorLeft
+ * @param accessorRight
+ * @return boolean
+ * @throws HyracksDataException
+ */
+ boolean checkForEarlyExit(IFrameTupleAccessor accessorLeft, int leftTupleIndex, IFrameTupleAccessor accessorRight,
+ int rightTupleIndex) throws HyracksDataException;
+
+}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/IIntervalJoinUtilFactory.java
similarity index 64%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
copy to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/IIntervalJoinUtilFactory.java
index 4334476..b5f0bba 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/IIntervalJoinUtilFactory.java
@@ -16,16 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Description : Check temporal join functionality for interval
- * Expected Result : Success
- * Date : 26th Jun, 2015
- */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
+
+import java.io.Serializable;
-use TinyCollege;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
-load dataset Staff using localfs
-(("path"="asterix_nc1://data/tinycollege/staff.adm"),("format"="adm"));
+public interface IIntervalJoinUtilFactory extends Serializable {
-load dataset Students using localfs
-(("path"="asterix_nc1://data/tinycollege/students.adm"),("format"="adm"));
+ IIntervalJoinUtil createIntervalMergeJoinChecker(int[] keys0, int[] keys1, IHyracksTaskContext ctx, int nPartitions)
+ throws HyracksDataException;
+}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappedByIntervalJoinUtil.java
similarity index 57%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
copy to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappedByIntervalJoinUtil.java
index fdef960..e2e79f9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappedByIntervalJoinUtil.java
@@ -16,29 +16,19 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Description : Check temporal join functionality for interval
- * Expected Result : Success
- * Date : 26th Jun, 2015
- */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
-drop dataverse TinyCollege if exists;
-create dataverse TinyCollege;
-use TinyCollege;
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
-create type StaffType as open {
- name: string,
- office: string,
- employment: interval
-};
-create dataset Staff(StaffType)
-primary key name;
+public class OverlappedByIntervalJoinUtil extends AbstractIntervalInverseJoinUtil {
+ public OverlappedByIntervalJoinUtil(int[] keysLeft, int[] keysRight) {
+ super(keysLeft[0], keysRight[0]);
+ }
-create type StudentType as open {
- name: string,
- office: string,
- attendance: interval
-};
-create dataset Students(StudentType)
-primary key name;
+ @Override
+ public boolean compareInterval(AIntervalPointable ipLeft, AIntervalPointable ipRight) throws HyracksDataException {
+ return il.overlappedBy(ipLeft, ipRight);
+ }
+}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappedByIntervalJoinUtilFactory.java
similarity index 62%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
copy to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappedByIntervalJoinUtilFactory.java
index 4334476..74de359 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappedByIntervalJoinUtilFactory.java
@@ -16,16 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Description : Check temporal join functionality for interval
- * Expected Result : Success
- * Date : 26th Jun, 2015
- */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
-use TinyCollege;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
-load dataset Staff using localfs
-(("path"="asterix_nc1://data/tinycollege/staff.adm"),("format"="adm"));
+public class OverlappedByIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
-load dataset Students using localfs
-(("path"="asterix_nc1://data/tinycollege/students.adm"),("format"="adm"));
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinChecker(int[] keys0, int[] keys1, IHyracksTaskContext ctx,
+ int nPartitions) {
+ return new OverlappedByIntervalJoinUtil(keys0, keys1);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappingIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappingIntervalJoinUtil.java
new file mode 100644
index 0000000..10a182c
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappingIntervalJoinUtil.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalJoinUtil;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class OverlappingIntervalJoinUtil extends AbstractIntervalJoinUtil {
+ private final long partitionStart;
+
+ public OverlappingIntervalJoinUtil(int[] keysLeft, int[] keysRight, long partitionStart) {
+ super(keysLeft[0], keysRight[0]);
+ this.partitionStart = partitionStart;
+ }
+
+ /**
+ * Right (second argument) interval starts before left (first argument) interval ends.
+ */
+ @Override
+ public boolean checkToSaveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ long start0 = IntervalJoinUtil.getIntervalStart(accessorLeft, leftTupleIndex, idLeft);
+ long end1 = IntervalJoinUtil.getIntervalEnd(accessorRight, rightTupleIndex, idRight);
+ return start0 < end1;
+ }
+
+ /**
+ * Right (second argument) interval starts before left (first argument) interval ends.
+ */
+ @Override
+ public boolean checkForEarlyExit(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ long start1 = IntervalJoinUtil.getIntervalStart(accessorRight, rightTupleIndex, idRight);
+ long end0 = IntervalJoinUtil.getIntervalEnd(accessorLeft, leftTupleIndex, idLeft);
+ return end0 <= start1;
+ }
+
+ /**
+ * Left (first argument) interval starts after the Right (second argument) interval ends.
+ */
+ @Override
+ public boolean checkToRemoveInMemory(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex) {
+ long start0 = IntervalJoinUtil.getIntervalStart(accessorLeft, leftTupleIndex, idLeft);
+ long end1 = IntervalJoinUtil.getIntervalEnd(accessorRight, rightTupleIndex, idRight);
+ return start0 >= end1;
+ }
+
+ @Override
+ public boolean checkToSaveInResult(IFrameTupleAccessor accessorLeft, int leftTupleIndex,
+ IFrameTupleAccessor accessorRight, int rightTupleIndex, boolean reversed) throws HyracksDataException {
+ if (reversed) {
+ IntervalJoinUtil.getIntervalPointable(accessorLeft, leftTupleIndex, idLeft, ipRight);
+ IntervalJoinUtil.getIntervalPointable(accessorRight, rightTupleIndex, idRight, ipLeft);
+ } else {
+ IntervalJoinUtil.getIntervalPointable(accessorLeft, leftTupleIndex, idLeft, ipLeft);
+ IntervalJoinUtil.getIntervalPointable(accessorRight, rightTupleIndex, idRight, ipRight);
+ }
+ if (ipLeft.getStartValue() < partitionStart && ipRight.getStartValue() < partitionStart) {
+ // These tuples match in a different partition
+ return false;
+ }
+ return compareInterval(ipLeft, ipRight);
+ }
+
+ @Override
+ public boolean compareInterval(AIntervalPointable ipLeft, AIntervalPointable ipRight) throws HyracksDataException {
+ return il.overlapping(ipLeft, ipRight);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappingIntervalJoinUtilFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappingIntervalJoinUtilFactory.java
new file mode 100644
index 0000000..a1f3203
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappingIntervalJoinUtilFactory.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
+
+import org.apache.asterix.dataflow.data.nontagged.serde.ADateSerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.ADateTimeSerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.ATimeSerializerDeserializer;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public class OverlappingIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
+ private final RangeMap rangeMap;
+
+ public OverlappingIntervalJoinUtilFactory(RangeMap rangeMap) {
+ this.rangeMap = rangeMap;
+ }
+
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinChecker(int[] keys0, int[] keys1, IHyracksTaskContext ctx,
+ int nPartitions) throws HyracksDataException {
+ int fieldIndex = 0;
+ int partition = ctx.getTaskAttemptId().getTaskId().getPartition();
+ //Calculate Partitions slot
+ int nRanges = rangeMap.getSplitCount() + 1;
+ double rangesPerPart = 1.0;
+ if (nRanges > nPartitions) {
+ rangesPerPart = ((double) nRanges) / nPartitions;
+ }
+ int slot = ((int) Math.ceil(partition * rangesPerPart) % nRanges) - 1;
+ //Find Partitions Start Value based on slot
+ long partitionStart = Long.MIN_VALUE;
+ if (slot >= 0) {
+ switch (ATypeTag.VALUE_TYPE_MAPPING[rangeMap.getTag(fieldIndex, slot)]) {
+ case DATETIME:
+ partitionStart = ADateTimeSerializerDeserializer.getChronon(rangeMap.getByteArray(),
+ rangeMap.getStartOffset(fieldIndex, slot) + 1);
+ break;
+ case DATE:
+ partitionStart = ADateSerializerDeserializer.getChronon(rangeMap.getByteArray(),
+ rangeMap.getStartOffset(fieldIndex, slot) + 1);
+ break;
+ case TIME:
+ partitionStart = ATimeSerializerDeserializer.getChronon(rangeMap.getByteArray(),
+ rangeMap.getStartOffset(fieldIndex, slot) + 1);
+ break;
+ default:
+ throw new HyracksDataException("RangeMap type is not supported");
+ }
+ }
+ return new OverlappingIntervalJoinUtil(keys0, keys1, partitionStart);
+ }
+}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlapsIntervalJoinUtil.java
similarity index 58%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
copy to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlapsIntervalJoinUtil.java
index fdef960..392c0cf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlapsIntervalJoinUtil.java
@@ -16,29 +16,19 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Description : Check temporal join functionality for interval
- * Expected Result : Success
- * Date : 26th Jun, 2015
- */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
-drop dataverse TinyCollege if exists;
-create dataverse TinyCollege;
-use TinyCollege;
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
-create type StaffType as open {
- name: string,
- office: string,
- employment: interval
-};
-create dataset Staff(StaffType)
-primary key name;
+public class OverlapsIntervalJoinUtil extends AbstractIntervalJoinUtil {
+ public OverlapsIntervalJoinUtil(int[] keysLeft, int[] keysRight) {
+ super(keysLeft[0], keysRight[0]);
+ }
-create type StudentType as open {
- name: string,
- office: string,
- attendance: interval
-};
-create dataset Students(StudentType)
-primary key name;
+ @Override
+ public boolean compareInterval(AIntervalPointable ipLeft, AIntervalPointable ipRight) throws HyracksDataException {
+ return il.overlaps(ipLeft, ipRight);
+ }
+}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlapsIntervalJoinUtilFactory.java
similarity index 62%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
copy to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlapsIntervalJoinUtilFactory.java
index 4334476..fb8be0b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlapsIntervalJoinUtilFactory.java
@@ -16,16 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Description : Check temporal join functionality for interval
- * Expected Result : Success
- * Date : 26th Jun, 2015
- */
+package org.apache.asterix.runtime.operators.joins.interval.utils;
-use TinyCollege;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
-load dataset Staff using localfs
-(("path"="asterix_nc1://data/tinycollege/staff.adm"),("format"="adm"));
+public class OverlapsIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
-load dataset Students using localfs
-(("path"="asterix_nc1://data/tinycollege/students.adm"),("format"="adm"));
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinChecker(int[] keys0, int[] keys1, IHyracksTaskContext ctx,
+ int nPartitions) {
+ return new OverlapsIntervalJoinUtil(keys0, keys1);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/AbstractTupleAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/AbstractTupleAccessor.java
new file mode 100644
index 0000000..397f959
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/AbstractTupleAccessor.java
@@ -0,0 +1,194 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.operators.joins.interval.utils.memory;
+
+import java.nio.ByteBuffer;
+
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+
+public abstract class AbstractTupleAccessor implements ITupleAccessor {
+ public static final int UNSET = -2;
+ public static final int INITIALIZED = -1;
+
+ protected int tupleId = UNSET;
+
+ protected int frameId;
+
+ protected abstract IFrameTupleAccessor getInnerAccessor();
+
+ protected abstract void resetInnerAccessor(int frameId);
+
+ protected abstract void resetInnerAccessor(TuplePointer tp);
+
+ protected abstract int getFrameCount();
+
+ @Override
+ public int getTupleStartOffset() {
+ return getTupleStartOffset(tupleId);
+ }
+
+ @Override
+ public int getTupleLength() {
+ return getTupleLength(tupleId);
+ }
+
+ @Override
+ public int getAbsFieldStartOffset(int fieldId) {
+ return getAbsoluteFieldStartOffset(tupleId, fieldId);
+ }
+
+ @Override
+ public int getFieldLength(int fieldId) {
+ return getFieldLength(tupleId, fieldId);
+ }
+
+ @Override
+ public ByteBuffer getBuffer() {
+ return getInnerAccessor().getBuffer();
+ }
+
+ @Override
+ public int getFieldCount() {
+ return getInnerAccessor().getFieldCount();
+ }
+
+ @Override
+ public int getFieldSlotsLength() {
+ return getInnerAccessor().getFieldSlotsLength();
+ }
+
+ @Override
+ public int getFieldEndOffset(int tupleIndex, int fIdx) {
+ return getInnerAccessor().getFieldEndOffset(tupleId, fIdx);
+ }
+
+ @Override
+ public int getFieldStartOffset(int tupleIndex, int fIdx) {
+ return getInnerAccessor().getFieldStartOffset(tupleIndex, fIdx);
+ }
+
+ @Override
+ public int getFieldLength(int tupleIndex, int fIdx) {
+ return getInnerAccessor().getFieldLength(tupleIndex, fIdx);
+ }
+
+ @Override
+ public int getTupleLength(int tupleIndex) {
+ return getInnerAccessor().getTupleLength(tupleIndex);
+ }
+
+ @Override
+ public int getTupleEndOffset(int tupleIndex) {
+ return getInnerAccessor().getTupleEndOffset(tupleIndex);
+ }
+
+ @Override
+ public int getTupleStartOffset(int tupleIndex) {
+ return getInnerAccessor().getTupleStartOffset(tupleIndex);
+ }
+
+ @Override
+ public int getAbsoluteFieldStartOffset(int tupleIndex, int fIdx) {
+ return getInnerAccessor().getAbsoluteFieldStartOffset(tupleIndex, fIdx);
+ }
+
+ @Override
+ public int getTupleCount() {
+ return getInnerAccessor().getTupleCount();
+ }
+
+ @Override
+ public void reset(TuplePointer tuplePointer) {
+ resetInnerAccessor(tuplePointer.getFrameIndex());
+ }
+
+ @Override
+ public void reset(ByteBuffer buffer) {
+ throw new IllegalAccessError("Should never call this reset");
+ }
+
+ @Override
+ public int getTupleEndOffset() {
+ return getInnerAccessor().getTupleEndOffset(tupleId);
+ }
+
+ @Override
+ public int getFieldEndOffset(int fieldId) {
+ return getInnerAccessor().getFieldEndOffset(tupleId, fieldId);
+ }
+
+ @Override
+ public int getFieldStartOffset(int fieldId) {
+ return getInnerAccessor().getFieldStartOffset(tupleId, fieldId);
+ }
+
+ @Override
+ public void getTuplePointer(TuplePointer tp) {
+ tp.reset(frameId, tupleId);
+ }
+
+ @Override
+ public int getTupleId() {
+ return tupleId;
+ }
+
+ @Override
+ public void setTupleId(int tupleId) {
+ this.tupleId = tupleId;
+ }
+
+ @Override
+ public void reset() {
+ tupleId = INITIALIZED;
+ frameId = 0;
+ resetInnerAccessor(frameId);
+ }
+
+ @Override
+ public boolean hasNext() {
+ if (tupleId + 1 < getTupleCount() || frameId + 1 < getFrameCount()) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean exists() {
+ return INITIALIZED < tupleId && getTupleEndOffset(tupleId) > 0 && tupleId < getTupleCount()
+ && frameId < getFrameCount();
+ }
... 2321 lines suppressed ...