FIRST WORKING
This commit is contained in:
parent
d11251da4b
commit
a8351b98f4
185
p3/formatted_solution.txt
Normal file
185
p3/formatted_solution.txt
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
Projection - Pipelining IndexScan
|
||||||
|
DriverId Age
|
||||||
|
--------------------
|
||||||
|
3 18.0
|
||||||
|
9 19.0
|
||||||
|
2 20.0
|
||||||
|
8 20.0
|
||||||
|
4 22.0
|
||||||
|
6 23.0
|
||||||
|
7 24.0
|
||||||
|
1 25.0
|
||||||
|
5 26.0
|
||||||
|
Projection - Pipelining KeyScan
|
||||||
|
DriverId Age
|
||||||
|
--------------------
|
||||||
|
2 20.0
|
||||||
|
8 20.0
|
||||||
|
Projection - Pipelining Selection
|
||||||
|
DriverId Age
|
||||||
|
--------------------
|
||||||
|
2 20.0
|
||||||
|
8 20.0
|
||||||
|
Projection - Pipelining Projection
|
||||||
|
DriverId Age
|
||||||
|
--------------------
|
||||||
|
1 25.0
|
||||||
|
2 20.0
|
||||||
|
3 18.0
|
||||||
|
4 22.0
|
||||||
|
5 26.0
|
||||||
|
6 23.0
|
||||||
|
7 24.0
|
||||||
|
8 20.0
|
||||||
|
9 19.0
|
||||||
|
Projection - Pipelining Simple Join
|
||||||
|
DriverId Age
|
||||||
|
--------------------
|
||||||
|
1 25.0
|
||||||
|
1 25.0
|
||||||
|
2 20.0
|
||||||
|
2 20.0
|
||||||
|
3 18.0
|
||||||
|
3 18.0
|
||||||
|
3 18.0
|
||||||
|
4 22.0
|
||||||
|
5 26.0
|
||||||
|
6 23.0
|
||||||
|
8 20.0
|
||||||
|
9 19.0
|
||||||
|
Projection - Pipelining Hash Join
|
||||||
|
DriverId Age
|
||||||
|
--------------------
|
||||||
|
3 18.0
|
||||||
|
1 25.0
|
||||||
|
9 19.0
|
||||||
|
5 26.0
|
||||||
|
1 25.0
|
||||||
|
2 20.0
|
||||||
|
3 18.0
|
||||||
|
4 22.0
|
||||||
|
2 20.0
|
||||||
|
8 20.0
|
||||||
|
3 18.0
|
||||||
|
6 23.0
|
||||||
|
KeyScan
|
||||||
|
DriverId FirstName LastName Age NumSeats
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
2 Walid Aref 20.0 13
|
||||||
|
8 Arif Ghafoor 20.0 5
|
||||||
|
Selection
|
||||||
|
DriverId FirstName LastName Age NumSeats
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
1 Ahmed Elmagarmid 25.0 5
|
||||||
|
4 Sunil Prabhakar 22.0 7
|
||||||
|
5 Elisa Bertino 26.0 5
|
||||||
|
6 Susanne Hambrusch 23.0 3
|
||||||
|
7 David Eberts 24.0 8
|
||||||
|
IndexScan
|
||||||
|
DriverId FirstName LastName Age NumSeats
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
3 Christopher Clifton 18.0 4
|
||||||
|
9 Jeff Vitter 19.0 10
|
||||||
|
2 Walid Aref 20.0 13
|
||||||
|
8 Arif Ghafoor 20.0 5
|
||||||
|
4 Sunil Prabhakar 22.0 7
|
||||||
|
6 Susanne Hambrusch 23.0 3
|
||||||
|
7 David Eberts 24.0 8
|
||||||
|
1 Ahmed Elmagarmid 25.0 5
|
||||||
|
5 Elisa Bertino 26.0 5
|
||||||
|
Filescan
|
||||||
|
DriverId FirstName LastName Age NumSeats
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
1 Ahmed Elmagarmid 25.0 5
|
||||||
|
2 Walid Aref 20.0 13
|
||||||
|
3 Christopher Clifton 18.0 4
|
||||||
|
4 Sunil Prabhakar 22.0 7
|
||||||
|
5 Elisa Bertino 26.0 5
|
||||||
|
6 Susanne Hambrusch 23.0 3
|
||||||
|
7 David Eberts 24.0 8
|
||||||
|
8 Arif Ghafoor 20.0 5
|
||||||
|
9 Jeff Vitter 19.0 10
|
||||||
|
Selection - Pipelining IndexScan
|
||||||
|
DriverId FirstName LastName Age NumSeats
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
2 Walid Aref 20.0 13
|
||||||
|
Selection - Pipelining Keyscan
|
||||||
|
DriverId FirstName LastName Age NumSeats
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
2 Walid Aref 20.0 13
|
||||||
|
Selection - Pipelining Selection
|
||||||
|
DriverId FirstName LastName Age NumSeats
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
2 Walid Aref 20.0 13
|
||||||
|
Selection - Pipelining Projection
|
||||||
|
DriverId FirstName
|
||||||
|
------------------------------
|
||||||
|
2 Walid
|
||||||
|
Selection - Pipelining Simple Join
|
||||||
|
DriverId FirstName LastName Age NumSeats DriverId GroupId FromDate ToDate
|
||||||
|
--------------------------------------------------------------------------------------------------------------
|
||||||
|
2 Walid Aref 20.0 13 2 6 2/17/2006 2/20/2006
|
||||||
|
2 Walid Aref 20.0 13 2 7 2/18/2006 2/23/2006
|
||||||
|
Selection - Pipelining Hash Join
|
||||||
|
DriverId FirstName LastName Age NumSeats DriverId GroupId FromDate ToDate
|
||||||
|
--------------------------------------------------------------------------------------------------------------
|
||||||
|
2 Walid Aref 20.0 13 2 6 2/17/2006 2/20/2006
|
||||||
|
2 Walid Aref 20.0 13 2 7 2/18/2006 2/23/2006
|
||||||
|
Selection Multipled Predicates
|
||||||
|
DriverId FirstName LastName Age NumSeats
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
1 Ahmed Elmagarmid 25.0 5
|
||||||
|
3 Christopher Clifton 18.0 4
|
||||||
|
5 Elisa Bertino 26.0 5
|
||||||
|
7 David Eberts 24.0 8
|
||||||
|
Hash Join - Pipelining Selection/Simple Join
|
||||||
|
DriverId FirstName LastName Age NumSeats DriverId GroupId FromDate ToDate GroupId GroupName
|
||||||
|
----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
6 Susanne Hambrusch 23.0 3 6 6 2/25/2006 2/26/2006 1 Purdue1
|
||||||
|
Hash Join - Pipelining Projection/Hash Join
|
||||||
|
DriverId Age DriverId GroupId FromDate ToDate GroupId GroupName
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
9 19.0 9 1 2/15/2006 2/15/2006 1 Purdue1
|
||||||
|
4 22.0 4 1 2/19/2006 2/19/2006 1 Purdue1
|
||||||
|
1 25.0 1 2 2/12/2006 2/14/2006 2 Purdue2
|
||||||
|
3 18.0 3 2 2/24/2006 2/26/2006 2 Purdue2
|
||||||
|
1 25.0 1 3 2/15/2006 2/16/2006 3 Purdue3
|
||||||
|
3 18.0 3 4 2/18/2006 2/19/2006 4 Purdue4
|
||||||
|
3 18.0 3 5 2/10/2006 2/13/2006 5 Purdue5
|
||||||
|
8 20.0 8 5 2/20/2006 2/22/2006 5 Purdue5
|
||||||
|
2 20.0 2 6 2/17/2006 2/20/2006 6 Purdue6
|
||||||
|
6 23.0 6 6 2/25/2006 2/26/2006 6 Purdue6
|
||||||
|
5 26.0 5 7 2/14/2006 2/18/2006 7 Purdue7
|
||||||
|
2 20.0 2 7 2/18/2006 2/23/2006 7 Purdue7
|
||||||
|
Hash Join - Pipelining IndexScan/KeyScan
|
||||||
|
DriverId FirstName LastName Age NumSeats DriverId GroupId FromDate ToDate
|
||||||
|
--------------------------------------------------------------------------------------------------------------
|
||||||
|
9 Jeff Vitter 19.0 10 9 1 2/15/2006 2/15/2006
|
||||||
|
4 Sunil Prabhakar 22.0 7 4 1 2/19/2006 2/19/2006
|
||||||
|
Hash Join
|
||||||
|
DriverId FirstName LastName Age NumSeats DriverId GroupId FromDate ToDate
|
||||||
|
--------------------------------------------------------------------------------------------------------------
|
||||||
|
3 Christopher Clifton 18.0 4 3 5 2/10/2006 2/13/2006
|
||||||
|
1 Ahmed Elmagarmid 25.0 5 1 2 2/12/2006 2/14/2006
|
||||||
|
9 Jeff Vitter 19.0 10 9 1 2/15/2006 2/15/2006
|
||||||
|
5 Elisa Bertino 26.0 5 5 7 2/14/2006 2/18/2006
|
||||||
|
1 Ahmed Elmagarmid 25.0 5 1 3 2/15/2006 2/16/2006
|
||||||
|
2 Walid Aref 20.0 13 2 6 2/17/2006 2/20/2006
|
||||||
|
3 Christopher Clifton 18.0 4 3 4 2/18/2006 2/19/2006
|
||||||
|
4 Sunil Prabhakar 22.0 7 4 1 2/19/2006 2/19/2006
|
||||||
|
2 Walid Aref 20.0 13 2 7 2/18/2006 2/23/2006
|
||||||
|
8 Arif Ghafoor 20.0 5 8 5 2/20/2006 2/22/2006
|
||||||
|
3 Christopher Clifton 18.0 4 3 2 2/24/2006 2/26/2006
|
||||||
|
6 Susanne Hambrusch 23.0 3 6 6 2/25/2006 2/26/2006
|
||||||
|
Projection
|
||||||
|
FirstName NumSeats
|
||||||
|
------------------------------
|
||||||
|
Ahmed 5
|
||||||
|
Walid 13
|
||||||
|
Christopher 4
|
||||||
|
Sunil 7
|
||||||
|
Elisa 5
|
||||||
|
Susanne 3
|
||||||
|
David 8
|
||||||
|
Arif 5
|
||||||
|
Jeff 10
|
BIN
p3/max.minibase
BIN
p3/max.minibase
Binary file not shown.
@ -6,6 +6,8 @@ import global.SearchKey;
|
|||||||
import global.RID;
|
import global.RID;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Queue;
|
||||||
|
import java.util.ArrayDeque;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -30,7 +32,7 @@ public class HashJoin extends Iterator {
|
|||||||
// private boolean nextTupleIsConsumed;
|
// private boolean nextTupleIsConsumed;
|
||||||
|
|
||||||
// pre-fetched tuple
|
// pre-fetched tuple
|
||||||
private List<Tuple> nextTupleBatch;
|
private Queue<Tuple> nextTupleBatch;
|
||||||
// private Tuple nextTuple = null;
|
// private Tuple nextTuple = null;
|
||||||
|
|
||||||
public HashJoin(Iterator aIter1, Iterator aIter2, int aJoinCol1, int aJoinCol2) {
|
public HashJoin(Iterator aIter1, Iterator aIter2, int aJoinCol1, int aJoinCol2) {
|
||||||
@ -40,7 +42,10 @@ public class HashJoin extends Iterator {
|
|||||||
this.smallerJoinCol = aJoinCol1;
|
this.smallerJoinCol = aJoinCol1;
|
||||||
this.largerJoinCol = aJoinCol2;
|
this.largerJoinCol = aJoinCol2;
|
||||||
this.schema = Schema.join(this.smaller.schema, this.larger.schema);
|
this.schema = Schema.join(this.smaller.schema, this.larger.schema);
|
||||||
this.equijoinPredicate = new Predicate(AttrOperator.EQ, AttrType.FIELDNO, aJoinCol1, AttrType.FIELDNO, aJoinCol2);
|
this.equijoinPredicate = new Predicate(AttrOperator.EQ, AttrType.FIELDNO,
|
||||||
|
aJoinCol1, AttrType.FIELDNO, aJoinCol2);
|
||||||
|
|
||||||
|
this.nextTupleBatch = new ArrayDeque<Tuple>();
|
||||||
|
|
||||||
// Build the lookup table.
|
// Build the lookup table.
|
||||||
this.hashTable = new HashTableDup();
|
this.hashTable = new HashTableDup();
|
||||||
@ -50,7 +55,7 @@ public class HashJoin extends Iterator {
|
|||||||
|
|
||||||
this.hashTable.add(searchKey, smallerTuple);
|
this.hashTable.add(searchKey, smallerTuple);
|
||||||
}
|
}
|
||||||
this.smaller.restart();
|
this.smaller.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -97,74 +102,40 @@ public class HashJoin extends Iterator {
|
|||||||
* Returns true if there are more tuples, false otherwise.
|
* Returns true if there are more tuples, false otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean hasNext() {
|
public boolean hasNext() {
|
||||||
System.out.println("> HashJoin.hasNext");
|
// System.out.println("> HashJoin.hasNext");
|
||||||
if (this.nextTupleBatch != null && this.nextTupleBatch.iterator().hasNext()) {
|
// if (this.nextTupleBatch != null && this.nextTupleBatch.iterator().hasNext()) {
|
||||||
|
// System.out.System.out.print("> HashJoin.hasNext : ");
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (this.nextTupleBatch.size() > 0) {
|
||||||
|
System.out.print("> HashJoin.hasNext : Queue has entries");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! this.larger.hasNext()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (this.larger.hasNext()) {
|
while (this.larger.hasNext()) {
|
||||||
|
// System.out.println("> HashJoin.hasNext : larger has next");
|
||||||
Tuple rightTuple = this.larger.getNext();
|
Tuple rightTuple = this.larger.getNext();
|
||||||
|
|
||||||
SearchKey key = new SearchKey(rightTuple.getField(this.largerJoinCol));
|
SearchKey key = new SearchKey(rightTuple.getField(this.largerJoinCol));
|
||||||
List<Tuple> smallerMatches = Arrays.asList(this.hashTable.getAll(key));
|
List<Tuple> smallerMatches = Arrays.asList(this.hashTable.getAll(key));
|
||||||
|
|
||||||
for (Tuple small : smallerMatches) {
|
for (Tuple small : smallerMatches) {
|
||||||
|
// System.out.println("> HashJoin.hasNext : enter for loop with " + small + " " + rightTuple + " " + this.schema);
|
||||||
Tuple nextTuple = Tuple.join(small, rightTuple, this.schema);
|
Tuple nextTuple = Tuple.join(small, rightTuple, this.schema);
|
||||||
if (this.equijoinPredicate.evaluate(nextTuple)) {
|
// System.out.println("> HashJoin.hasNext : joined into " + nextTuple);
|
||||||
this.nextTupleBatch.add(nextTuple);
|
this.nextTupleBatch.add(nextTuple);
|
||||||
}
|
// System.out.println("> HashJoin.hasNext : added " + nextTuple + "; batch length is now " + this.nextTupleBatch.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.nextTupleBatch.iterator().hasNext()) {
|
if (this.nextTupleBatch.iterator().hasNext()) {
|
||||||
|
// System.out.println("> HashJoin.hasNext : New item discovered, exiting");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// System.out.println("> HashJoin.hasNext : Iterator emptied");
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// if (! this.nextTupleIsConsumed)
|
|
||||||
// return true;
|
|
||||||
//
|
|
||||||
// if (! this.smaller.hasNext())
|
|
||||||
// // if(!inner.hasNext() && !outer.hasNext()) // Piazza post 116
|
|
||||||
// return false;
|
|
||||||
//
|
|
||||||
// Tuple rightTuple;
|
|
||||||
//
|
|
||||||
// if (this.startJoin) {
|
|
||||||
// this.leftTuple = this.smaller.getNext();
|
|
||||||
// this.startJoin = false;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// while (true) {
|
|
||||||
// while (this.larger.hasNext()) {
|
|
||||||
// rightTuple = this.larger.getNext();
|
|
||||||
//
|
|
||||||
// SearchKey key = new SearchKey(rightTuple.getField(this.largerJoinCol));
|
|
||||||
// this.nextTupleBatch = Arrays.asList(this.hashTable.getAll(key));
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// // try to match
|
|
||||||
// this.nextTuple = Tuple.join(this.leftTuple, rightTuple, this.schema);
|
|
||||||
// if (this.equijoinPredicate.evaluate(nextTuple)) {
|
|
||||||
// this.nextTupleIsConsumed = false;
|
|
||||||
// return true;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (this.smaller.hasNext()) {
|
|
||||||
// this.leftTuple = this.smaller.getNext();
|
|
||||||
// this.larger.restart();
|
|
||||||
// } else
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -173,13 +144,16 @@ public class HashJoin extends Iterator {
|
|||||||
* @throws IllegalStateException if no more tuples
|
* @throws IllegalStateException if no more tuples
|
||||||
*/
|
*/
|
||||||
public Tuple getNext() {
|
public Tuple getNext() {
|
||||||
System.out.println("> HashJoin.getNext");
|
// System.out.println("> HashJoin.getNext");
|
||||||
// if (! this.hasNext()) {
|
// if (! this.hasNext()) {
|
||||||
// throw new IllegalStateException("Iterator has no more entries");
|
// throw new IllegalStateException("Iterator has no more entries");
|
||||||
// }
|
// }
|
||||||
|
|
||||||
Tuple result = this.nextTupleBatch.iterator().next();
|
if (this.nextTupleBatch.size() > 0) {
|
||||||
this.nextTupleBatch.iterator().remove();
|
Tuple result = this.nextTupleBatch.remove();
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new IllegalStateException("Iterator has no more entries");
|
||||||
}
|
}
|
||||||
} // end class HashJoin;
|
} // end class HashJoin;
|
||||||
|
@ -72,14 +72,19 @@ public class ROTest extends TestDriver {
|
|||||||
private static HashMap<String, String> results;
|
private static HashMap<String, String> results;
|
||||||
|
|
||||||
protected void execute_and_compare(String testDesc, String id, Iterator it) {
|
protected void execute_and_compare(String testDesc, String id, Iterator it) {
|
||||||
it.execute();
|
System.out.println("Running " + testDesc + " ...");
|
||||||
it.close();
|
try {
|
||||||
String[] sol = results.get(id).split("|");
|
it.execute();
|
||||||
Arrays.sort(sol);
|
it.close();
|
||||||
String[] res = it.getResult().split("|");
|
String[] sol = results.get(id).split("|");
|
||||||
Arrays.sort(res);
|
Arrays.sort(sol);
|
||||||
assertTrue("FAILURE: " + testDesc + " output did not match expected result, should be " + results.get(id),
|
String[] res = it.getResult().split("|");
|
||||||
Arrays.equals(sol, res));
|
Arrays.sort(res);
|
||||||
|
assertTrue("FAILURE: " + testDesc + " output did not match expected result, should be " + results.get(id),
|
||||||
|
Arrays.equals(sol, res));
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
@ -268,31 +273,31 @@ public class ROTest extends TestDriver {
|
|||||||
@Test
|
@Test
|
||||||
public void testSelectionPipelining() {
|
public void testSelectionPipelining() {
|
||||||
// Test all possible Iterator inputs to Selection
|
// Test all possible Iterator inputs to Selection
|
||||||
Iterator sel_idx = new Selection(new IndexScan(s_drivers, idx_drivers, f_drivers),
|
// Iterator sel_idx = new Selection(new IndexScan(s_drivers, idx_drivers, f_drivers),
|
||||||
new Predicate(AttrOperator.EQ, AttrType.COLNAME, "FirstName", AttrType.STRING, "Walid"));
|
|
||||||
execute_and_compare("Selection - Pipelining IndexScan", "sel_idx", sel_idx);
|
|
||||||
Iterator sel_key = new Selection(new KeyScan(s_drivers, idx_drivers, new SearchKey(20F), f_drivers),
|
|
||||||
new Predicate(AttrOperator.EQ, AttrType.COLNAME, "FirstName", AttrType.STRING, "Walid"));
|
|
||||||
execute_and_compare("Selection - Pipelining Keyscan", "sel_key", sel_key);
|
|
||||||
Iterator sel_sel = new Selection(
|
|
||||||
new Selection(new FileScan(s_drivers, f_drivers),
|
|
||||||
new Predicate(AttrOperator.EQ, AttrType.COLNAME, "Age", AttrType.FLOAT, 20F)),
|
|
||||||
new Predicate(AttrOperator.EQ, AttrType.COLNAME, "FirstName", AttrType.STRING, "Walid"));
|
|
||||||
execute_and_compare("Selection - Pipelining Selection", "sel_sel", sel_sel);
|
|
||||||
Iterator sel_proj = new Selection(
|
|
||||||
new Projection(new FileScan(s_drivers, f_drivers), s_drivers.fieldNumber("DriverId"),
|
|
||||||
s_drivers.fieldNumber("FirstName")),
|
|
||||||
new Predicate(AttrOperator.EQ, AttrType.COLNAME, "FirstName", AttrType.STRING, "Walid"));
|
|
||||||
execute_and_compare("Selection - Pipelining Projection", "sel_proj", sel_proj);
|
|
||||||
Iterator sel_sj = new Selection(
|
|
||||||
new SimpleJoin(new FileScan(s_drivers, f_drivers), new FileScan(s_rides, f_rides),
|
|
||||||
new Predicate(AttrOperator.EQ, AttrType.FIELDNO, 0, AttrType.FIELDNO, 5)),
|
|
||||||
new Predicate(AttrOperator.EQ, AttrType.COLNAME, "FirstName", AttrType.STRING, "Walid"));
|
|
||||||
execute_and_compare("Selection - Pipelining Simple Join", "sel_sj", sel_sj);
|
|
||||||
// Iterator sel_hj = new Selection(
|
|
||||||
// new HashJoin(new FileScan(s_drivers, f_drivers), new FileScan(s_rides, f_rides), 0, 0),
|
|
||||||
// new Predicate(AttrOperator.EQ, AttrType.COLNAME, "FirstName", AttrType.STRING, "Walid"));
|
// new Predicate(AttrOperator.EQ, AttrType.COLNAME, "FirstName", AttrType.STRING, "Walid"));
|
||||||
// execute_and_compare("Selection - Pipelining Hash Join", "sel_jh", sel_hj);
|
// execute_and_compare("Selection - Pipelining IndexScan", "sel_idx", sel_idx);
|
||||||
|
// Iterator sel_key = new Selection(new KeyScan(s_drivers, idx_drivers, new SearchKey(20F), f_drivers),
|
||||||
|
// new Predicate(AttrOperator.EQ, AttrType.COLNAME, "FirstName", AttrType.STRING, "Walid"));
|
||||||
|
// execute_and_compare("Selection - Pipelining Keyscan", "sel_key", sel_key);
|
||||||
|
// Iterator sel_sel = new Selection(
|
||||||
|
// new Selection(new FileScan(s_drivers, f_drivers),
|
||||||
|
// new Predicate(AttrOperator.EQ, AttrType.COLNAME, "Age", AttrType.FLOAT, 20F)),
|
||||||
|
// new Predicate(AttrOperator.EQ, AttrType.COLNAME, "FirstName", AttrType.STRING, "Walid"));
|
||||||
|
// execute_and_compare("Selection - Pipelining Selection", "sel_sel", sel_sel);
|
||||||
|
// Iterator sel_proj = new Selection(
|
||||||
|
// new Projection(new FileScan(s_drivers, f_drivers), s_drivers.fieldNumber("DriverId"),
|
||||||
|
// s_drivers.fieldNumber("FirstName")),
|
||||||
|
// new Predicate(AttrOperator.EQ, AttrType.COLNAME, "FirstName", AttrType.STRING, "Walid"));
|
||||||
|
// execute_and_compare("Selection - Pipelining Projection", "sel_proj", sel_proj);
|
||||||
|
// Iterator sel_sj = new Selection(
|
||||||
|
// new SimpleJoin(new FileScan(s_drivers, f_drivers), new FileScan(s_rides, f_rides),
|
||||||
|
// new Predicate(AttrOperator.EQ, AttrType.FIELDNO, 0, AttrType.FIELDNO, 5)),
|
||||||
|
// new Predicate(AttrOperator.EQ, AttrType.COLNAME, "FirstName", AttrType.STRING, "Walid"));
|
||||||
|
// execute_and_compare("Selection - Pipelining Simple Join", "sel_sj", sel_sj);
|
||||||
|
Iterator sel_hj = new Selection(
|
||||||
|
new HashJoin(new FileScan(s_drivers, f_drivers), new FileScan(s_rides, f_rides), 0, 0),
|
||||||
|
new Predicate(AttrOperator.EQ, AttrType.COLNAME, "FirstName", AttrType.STRING, "Walid"));
|
||||||
|
execute_and_compare("Selection - Pipelining Hash Join", "sel_jh", sel_hj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Loading…
Reference in New Issue
Block a user