/** * Pipeline joins * * @return */ public Operator pipeline() { EqualJoin firstJoin = joinList.get(0); TimeCalc.begin(firstJoin.toString()); OperatorHashJoin hashJoin = decideWhichToCreate(firstJoin, operMap); TimeCalc.end(firstJoin.toString() + " Finish create the first hash join."); joinedHistory.add(firstJoin.getLeftTableName()); joinedHistory.add(firstJoin.getRightTableName()); for (int i = 1; i < joinList.size(); i++) { EqualJoin ej = joinList.get(i); Operator leftOper = operMap.get(ej.getLeftTableName()); Operator rightOper = operMap.get(ej.getRightTableName()); Operator neverJoinedOper; if (joinedHistory.contains(ej.getLeftTableName())) neverJoinedOper = rightOper; else neverJoinedOper = leftOper; TimeCalc.begin(ej.toString()); hashJoin = decideWhichToCreate(ej, hashJoin, neverJoinedOper); TimeCalc.end(ej.toString() + " Finish pipeline one hash join " + ej); joinedHistory.add(ej.getLeftTableName()); joinedHistory.add(ej.getRightTableName()); } return hashJoin; }