/*
 * Description    : Self-joins a dataset on the intersection of its point attribute.
 *                  The dataset has an RTree index, and we expect the 
 *                  join to be transformed into an indexed nested-loop join.
 * Success        : Yes
 */

drop dataverse test if exists;
create dataverse test;
use dataverse test;

create type MyRecord as closed {
  id: int32,
  point: point,
  kwds: string,
  line1: line,
  line2: line,
  poly1: polygon,
  poly2: polygon,
  rec: rectangle
}

create dataset MyData(MyRecord) partitioned by key id;

create index rtree_index on MyData(point) type rtree;

write output to nc1:"rttest/rtree-index-join_spatial-intersect-point_03.adm";

for $a in dataset('MyData')
for $b in dataset('MyData')
where spatial-intersect($a.point, $b.point)
return {"a": $a, "b": $b}
