public static Evaluator create(ExecutionContext context) { return new EvaluatorSimple(context) ; }
@Override public Table diff(Table tableLeft, Table tableRight) { if ( debug ) { System.out.println("Diff") ; dump(tableLeft) ; dump(tableRight) ; } return diffWorker(tableLeft, tableRight) ; }
@Override public Table join(Table tableLeft, Table tableRight) { if ( debug ) { System.out.println("Join") ; dump(tableLeft) ; dump(tableRight) ; } return joinWorker(tableLeft, tableRight, false, null) ; }
@Override public Table minus(Table tableLeft, Table tableRight) { if ( debug ) { System.out.println("Minus") ; dump(tableLeft) ; dump(tableRight) ; } return minusWorker(tableLeft, tableRight) ; }
@Override public Table groupBy(Table table, VarExprList groupVars, List<ExprAggregator> aggregators) { QueryIterator qIter = table.iterator(getExecContext()) ; qIter = new QueryIterGroup(qIter, groupVars, aggregators, getExecContext()) ; return new TableN(qIter) ; }
@Override public Table union(Table tableLeft, Table tableRight) { if ( debug ) { System.out.println("Union") ; dump(tableLeft) ; dump(tableRight) ; } QueryIterConcat output = new QueryIterConcat(execCxt) ; output.add(tableLeft.iterator(execCxt)) ; output.add(tableRight.iterator(execCxt)) ; return new TableN(output) ; }
@Override public Table reduced(Table table) { QueryIterator qIter = table.iterator(getExecContext()) ; qIter = new QueryIterReduced(qIter, getExecContext()) ; return new TableN(qIter) ; }
@Override public Table filter(ExprList expressions, Table table) { if ( debug ) { System.out.println("Restriction") ; System.out.println(expressions) ; dump(table) ; } QueryIterator iter = table.iterator(execCxt) ; List<Binding> output = new ArrayList<>() ; for ( ; iter.hasNext() ; ) { Binding b = iter.nextBinding() ; if ( expressions.isSatisfied(b, execCxt) ) output.add(b) ; } return new TableN(new QueryIterPlainWrapper(output.iterator(), execCxt)) ; }
@Override public Table leftJoin(Table tableLeft, Table tableRight, ExprList exprs) { if ( debug ) { System.out.println("Left Join") ; dump(tableLeft) ; dump(tableRight) ; if ( exprs != null ) System.out.println(exprs) ; } return joinWorker(tableLeft, tableRight, true, exprs) ; }
@Override public Table project(Table table, List<Var> projectVars) { QueryIterator qIter = table.iterator(getExecContext()) ; qIter = new QueryIterProject(qIter, projectVars, getExecContext()) ; return new TableN(qIter) ; }
@Override public Table extend(Table table, VarExprList exprs) { QueryIterator qIter = table.iterator(getExecContext()) ; qIter = new QueryIterAssign(qIter, exprs, getExecContext(), true) ; return new TableN(qIter) ; }
@Override public Table distinct(Table table) { QueryIterator qIter = table.iterator(getExecContext()) ; qIter = new QueryIterDistinct(qIter, getExecContext()) ; return new TableN(qIter) ; }
@Override public Table order(Table table, List<SortCondition> conditions) { QueryIterator qIter = table.iterator(getExecContext()) ; qIter = new QueryIterSort(qIter, conditions, getExecContext()) ; return new TableN(qIter) ; }
@Override public Table slice(Table table, long start, long length) { QueryIterator qIter = table.iterator(getExecContext()) ; qIter = new QueryIterSlice(qIter, start, length, getExecContext()) ; return new TableN(qIter) ; }
@Override public Table assign(Table table, VarExprList exprs) { QueryIterator qIter = table.iterator(getExecContext()) ; qIter = new QueryIterAssign(qIter, exprs, getExecContext(), false) ; return new TableN(qIter) ; }