/** Place expressions around an Op */ private static Op buildFilter(Placement placement) { if ( placement == null ) return null ; if ( placement.unplaced.isEmpty() ) return placement.op ; return buildFilter(placement.unplaced, placement.op) ; }
private static Op buildFilter(ExprList exprs, Op op) { if ( exprs == null || exprs.isEmpty() ) return op ; for (Iterator<Expr> iter = exprs.iterator(); iter.hasNext();) { Expr expr = iter.next() ; if ( op == null ) op = OpTable.unit() ; op = OpFilter.filter(expr, op) ; iter.remove() ; } return op ; } }
/** Place expressions around an Op */ private static Op buildFilter(ExprList exprs, Op op) { if ( exprs.isEmpty() ) return op ; for ( Iterator<Expr> iter = exprs.iterator() ; iter.hasNext() ; ) { Expr expr = iter.next() ; if ( op == null ) op = OpTable.unit() ; op = OpFilter.filter(expr, op) ; iter.remove(); } return op ; } }
/** Place expressions around an Op */ private static Op buildFilter(ExprList exprs, Op op) { if ( exprs.isEmpty() ) return op ; for ( Iterator<Expr> iter = exprs.iterator() ; iter.hasNext() ; ) { Expr expr = iter.next() ; if ( op == null ) op = OpTable.unit() ; op = OpFilter.filter(expr, op) ; iter.remove(); } return op ; } }
public static Op filter(ExprList exprs, Op op) { if ( exprs.isEmpty() ) return op ; OpFilter f = filter(op) ; f.getExprs().addAll(exprs) ; return f ; }
public static Aggregator createGroupConcat(boolean distinct, Expr expr, String separator, ExprList orderedBy) { if ( orderedBy != null && ! orderedBy.isEmpty()) throw new NotImplemented("GROUP_CONCAT / ORDER BY not implemented yet") ; return distinct ? new AggGroupConcatDistinct(expr, separator) : new AggGroupConcat(expr, separator) ; }
public static Op filter(ExprList exprs, Op op) { if ( exprs.isEmpty() ) return op ; OpFilter f = filter(op) ; f.getExprs().addAll(exprs) ; return f ; }
if ( exprList2.isEmpty() ) return newOp ;
private Placement placeProject(ExprList exprs, OpProject input) { Collection<Var> varsProject = input.getVars() ; ExprList pushed = new ExprList() ; ExprList unpushed = new ExprList() ; for ( Expr expr : exprs ) { Set<Var> exprVars = expr.getVarsMentioned() ; if ( varsProject.containsAll(exprVars) ) pushed.add(expr); else unpushed.add(expr) ; } if ( pushed.isEmpty() ) return resultNoChange(input) ; // (filter (project ...)) ===> (project (filter ...)) Op opSub = input.getSubOp() ; Placement p = transform(pushed, opSub) ; if ( p == null ) { Op op1 = OpFilter.filter(pushed, opSub) ; Op op2 = input.copy(op1) ; return result(op2, unpushed) ; } Op op1 = OpFilter.filter(p.unplaced, p.op) ; Op op2 = input.copy(op1) ; return result(op2, unpushed) ; }
if ( exprList2.isEmpty() ) return newOp ;