use of org.bboxdb.storage.entity.JoinedTuple in project bboxdb by jnidzwetzki.
the class TestQueryProcessing method testBBoxQuery1.
/**
* Simple BBox query
* @throws StorageManagerException
* @throws RejectedException
* @throws IOException
*/
@Test(timeout = 60000)
public void testBBoxQuery1() throws StorageManagerException, RejectedException, IOException {
final TupleStoreManager storageManager = storageRegistry.getTupleStoreManager(TABLE_1);
final Tuple tuple1 = new Tuple("1", new BoundingBox(1.0, 2.0, 1.0, 2.0), "value".getBytes());
final Tuple tuple2 = new Tuple("2", new BoundingBox(1.5, 2.5, 1.5, 2.5), "value2".getBytes());
final Tuple tuple3 = new Tuple("1", new BoundingBox(1.0, 2.0, 1.0, 2.0), "value1".getBytes());
storageManager.put(tuple1);
storageManager.put(tuple2);
storageManager.put(tuple3);
final BoundingBox queryBoundingBox = new BoundingBox(0.0, 5.0, 0.0, 5.0);
final Operator spatialIndexReadOperator = new FullTablescanOperator(storageManager);
final Operator queryPlan = new BoundingBoxSelectOperator(queryBoundingBox, spatialIndexReadOperator);
final Iterator<JoinedTuple> iterator = queryPlan.iterator();
final List<JoinedTuple> resultList = Lists.newArrayList(iterator);
final List<Tuple> resultTupleList = resultList.stream().map(t -> t.convertToSingleTupleIfPossible()).collect(Collectors.toList());
queryPlan.close();
Assert.assertEquals(2, resultList.size());
Assert.assertFalse(resultTupleList.contains(tuple1));
Assert.assertTrue(resultTupleList.contains(tuple2));
Assert.assertTrue(resultTupleList.contains(tuple3));
// Reopen
final Iterator<JoinedTuple> iterator2 = queryPlan.iterator();
final List<JoinedTuple> resultList2 = Lists.newArrayList(iterator2);
final List<Tuple> resultTupleList2 = resultList2.stream().map(t -> t.convertToSingleTupleIfPossible()).collect(Collectors.toList());
queryPlan.close();
Assert.assertEquals(2, resultList2.size());
Assert.assertFalse(resultTupleList2.contains(tuple1));
Assert.assertTrue(resultTupleList2.contains(tuple2));
Assert.assertTrue(resultTupleList2.contains(tuple3));
}
use of org.bboxdb.storage.entity.JoinedTuple in project bboxdb by jnidzwetzki.
the class TestQueryProcessing method testBBoxQuery2.
/**
* Simple BBox query - across multiple tables
* @throws StorageManagerException
* @throws RejectedException
* @throws IOException
*/
@Test(timeout = 60000)
public void testBBoxQuery2() throws StorageManagerException, RejectedException, IOException {
final TupleStoreManager storageManager = storageRegistry.getTupleStoreManager(TABLE_1);
final Tuple tuple1 = new Tuple("1", new BoundingBox(1.0, 2.0, 1.0, 2.0), "value".getBytes());
final Tuple tuple2 = new Tuple("2", new BoundingBox(1.5, 2.5, 1.5, 2.5), "value2".getBytes());
final Tuple tuple3 = new Tuple("1", new BoundingBox(1.0, 2.0, 1.0, 2.0), "value1".getBytes());
storageManager.put(tuple1);
storageManager.initNewMemtable();
storageManager.put(tuple2);
storageManager.initNewMemtable();
storageManager.put(tuple3);
storageManager.initNewMemtable();
final BoundingBox queryBoundingBox = new BoundingBox(0.0, 5.0, 0.0, 5.0);
final Operator spatialIndexReadOperator = new FullTablescanOperator(storageManager);
final Operator queryPlan = new BoundingBoxSelectOperator(queryBoundingBox, spatialIndexReadOperator);
final Iterator<JoinedTuple> iterator = queryPlan.iterator();
final List<JoinedTuple> resultList = Lists.newArrayList(iterator);
final List<Tuple> resultTupleList = resultList.stream().map(t -> t.convertToSingleTupleIfPossible()).collect(Collectors.toList());
queryPlan.close();
Assert.assertEquals(2, resultList.size());
Assert.assertFalse(resultTupleList.contains(tuple1));
Assert.assertTrue(resultTupleList.contains(tuple2));
Assert.assertTrue(resultTupleList.contains(tuple3));
}
use of org.bboxdb.storage.entity.JoinedTuple in project bboxdb by jnidzwetzki.
the class TestQueryProcessing method testJoinWithChangedTuple1.
/**
* Simple Join
* @throws StorageManagerException
* @throws RejectedException
*/
@Test(timeout = 60000)
public void testJoinWithChangedTuple1() throws StorageManagerException, RejectedException {
final TupleStoreManager storageManager1 = storageRegistry.getTupleStoreManager(TABLE_1);
final TupleStoreManager storageManager2 = storageRegistry.getTupleStoreManager(TABLE_2);
final Tuple tuple1 = new Tuple("1a", new BoundingBox(1.0, 2.0, 1.0, 2.0), "value1".getBytes());
final Tuple tuple2 = new Tuple("2a", new BoundingBox(4.0, 5.0, 4.0, 5.0), "value2".getBytes());
// Tuple 3 and tuple 4 have the same key
final Tuple tuple3 = new Tuple("1b", new BoundingBox(1.5, 2.5, 1.5, 2.5), "value3".getBytes());
final Tuple tuple4 = new Tuple("1b", new BoundingBox(2.5, 5.5, 2.5, 5.5), "value4".getBytes());
// Table1
storageManager1.put(tuple1);
storageManager1.put(tuple2);
// Table2
storageManager2.put(tuple3);
storageManager2.put(tuple4);
final SpatialIndexReadOperator operator1 = new SpatialIndexReadOperator(storageManager1, BoundingBox.FULL_SPACE);
final SpatialIndexReadOperator operator2 = new SpatialIndexReadOperator(storageManager2, BoundingBox.FULL_SPACE);
final IndexedSpatialJoinOperator joinQueryProcessor1 = new IndexedSpatialJoinOperator(operator1, operator2);
final Iterator<JoinedTuple> iterator = joinQueryProcessor1.iterator();
final List<JoinedTuple> resultList = Lists.newArrayList(iterator);
joinQueryProcessor1.close();
Assert.assertEquals(1, resultList.size());
Assert.assertEquals(2, resultList.get(0).getNumberOfTuples());
Assert.assertEquals(2, resultList.get(0).getBoundingBox().getDimension());
Assert.assertEquals(new BoundingBox(4.0d, 5.0d, 4.0d, 5.0d), resultList.get(0).getBoundingBox());
}
use of org.bboxdb.storage.entity.JoinedTuple in project bboxdb by jnidzwetzki.
the class NetworkQueryHelper method executeJoinQuery.
/**
* Execute a join
* @param bboxDBConnection
* @throws InterruptedException
* @throws BBoxDBException
*/
public static void executeJoinQuery(final BBoxDB bboxDBClient, final String distributionGroup) throws InterruptedException, BBoxDBException {
System.out.println("=== Execute join");
final String table1 = distributionGroup + "_table1";
final String table2 = distributionGroup + "_table2";
// Create table1
System.out.println("Create table 1");
final EmptyResultFuture resultCreateTable1 = bboxDBClient.createTable(table1, new TupleStoreConfiguration());
resultCreateTable1.waitForAll();
Assert.assertFalse(resultCreateTable1.isFailed());
System.out.println("Create table 2");
final EmptyResultFuture resultCreateTable2 = bboxDBClient.createTable(table2, new TupleStoreConfiguration());
resultCreateTable2.waitForAll();
Assert.assertFalse(resultCreateTable2.isFailed());
// Insert tuples
System.out.println("Insert tuple 1");
final Tuple tuple1 = new Tuple("abc", new BoundingBox(1.0, 2.0, 1.0, 2.0), "abc".getBytes());
final EmptyResultFuture insertResult1 = bboxDBClient.insertTuple(table1, tuple1);
insertResult1.waitForAll();
Assert.assertFalse(insertResult1.isFailed());
Assert.assertTrue(insertResult1.isDone());
System.out.println("Insert tuple 2");
final Tuple tuple2 = new Tuple("def", new BoundingBox(1.5, 2.5, 1.5, 2.5), "abc".getBytes());
final EmptyResultFuture insertResult2 = bboxDBClient.insertTuple(table1, tuple2);
insertResult2.waitForAll();
Assert.assertFalse(insertResult2.isFailed());
Assert.assertTrue(insertResult2.isDone());
System.out.println("Insert tuple 3");
final Tuple tuple3 = new Tuple("123", new BoundingBox(0.0, 5.0, 0.0, 5.0), "abc".getBytes());
final EmptyResultFuture insertResult3 = bboxDBClient.insertTuple(table2, tuple3);
insertResult3.waitForAll();
Assert.assertFalse(insertResult3.isFailed());
Assert.assertTrue(insertResult3.isDone());
// Execute the join
final JoinedTupleListFuture joinResult = bboxDBClient.queryJoin(Arrays.asList(table1, table2), new BoundingBox(0.0, 10.0, 0.0, 10.0));
joinResult.waitForAll();
final List<JoinedTuple> resultList = Lists.newArrayList(joinResult.iterator());
System.out.println(resultList);
Assert.assertEquals(2, resultList.size());
Assert.assertEquals(2, resultList.get(0).getNumberOfTuples());
Assert.assertEquals(table1, resultList.get(0).getTupleStoreName(0));
Assert.assertEquals(table2, resultList.get(0).getTupleStoreName(1));
Assert.assertEquals(new BoundingBox(1.0, 2.0, 1.0, 2.0), resultList.get(0).getBoundingBox());
Assert.assertEquals(2, resultList.get(1).getNumberOfTuples());
Assert.assertEquals(table1, resultList.get(1).getTupleStoreName(0));
Assert.assertEquals(table2, resultList.get(1).getTupleStoreName(1));
Assert.assertEquals(new BoundingBox(1.5, 2.5, 1.5, 2.5), resultList.get(1).getBoundingBox());
System.out.println("=== End Execute join");
}
use of org.bboxdb.storage.entity.JoinedTuple in project bboxdb by jnidzwetzki.
the class TestTupleHelper method testCreateWithDifferentSizes.
/**
* Test the creation with different sizes
*/
@Test(expected = IllegalArgumentException.class)
public void testCreateWithDifferentSizes() {
final Tuple tuple1 = new Tuple("abc", new BoundingBox(1d, 2d), "".getBytes());
final Tuple tuple2 = new Tuple("def", new BoundingBox(1d, 2d), "".getBytes());
new JoinedTuple(Arrays.asList(tuple1, tuple2), Arrays.asList("abc"));
}
Aggregations