@Override public Op1 copy(Op subOp) { return new OpProject(subOp, vars) ; }
public static Op project(Op op, Iterable<Var> vars) { List<Var> varList = Lists.newArrayList(vars); // new // ArrayList<Var>(vars); Op result = new OpProject(op, varList); return result; }
public static Op project(Op op, Iterable<Var> vars) { List<Var> varList = Lists.newArrayList(vars); // new // ArrayList<Var>(vars); Op result = new OpProject(op, varList); return result; }
@Override public Op transform(OpProject opProject, Op subOp) { if (!opProject.getVars().contains(this.var)) return super.transform(opProject, subOp); List<Var> newVars = new ArrayList<>(opProject.getVars()); newVars.remove(this.var); if (this.topmostOnly) { if (this.aboveExtend) { return new OpProject(subOp, newVars); } else { return opProject; } } else { return new OpProject(subOp, newVars); } } }
/** * rewrites the subop of project. */ @Override public void visit(final OpProject opProject) { if (LOG.isDebugEnabled()) { LOG.debug("Starting visiting OpProject"); } addOp(new OpProject(rewriteOp1(opProject), opProject.getVars())); }
public Op toOp() { Op result = qfpc.toOp(); // Create the projection result = new OpProject(result, new ArrayList<>(projection.getProjectVars())); if(projection.getDistinctLevel() > 0) { result = new OpDistinct(result); } return result; }
public Op toOp() { Op result = qfpc.toOp(); // Create the projection result = new OpProject(result, new ArrayList<>(projection.getProjectVars())); if(projection.getDistinctLevel() > 0) { result = new OpDistinct(result); } return result; }
@Override public Op transform(OpProject opProject, Op subOp) { List<Var> x = opProject.getVars(); List<Var> x2 = NodeTransformLib.transformVars(transform, x); if ( x == x2 ) return super.transform(opProject, subOp); return new OpProject(subOp, x2); }
public Op _optimize(OpProject op, RestrictionManagerImpl cnf) { Op subOp = optimize(op.getSubOp(), cnf); Op result = new OpProject(subOp, op.getVars()); return result; }
public static Op _optimize(OpProject op, Set<Set<Expr>> cnf) { return new OpProject(optimize(op.getSubOp(), cnf), op.getVars()); }
public Op getApplicableViews(OpProject op, RestrictionManagerImpl restrictions) { return new OpProject(_getApplicableViews(op.getSubOp(), restrictions), op.getVars()); }
public static Op _replace(OpProject op) { return new OpProject(replace(op.getSubOp()), op.getVars()); }
public Op getApplicableViews(OpProject op, RestrictionManagerImpl restrictions) { return new OpProject(_getApplicableViews(op.getSubOp(), restrictions), op.getVars()); }
/** * Low level function that simply turns a var-map into an project(extend()) * expression. * * It is recommended to use wrapWithProjection which deals with variable * name clashes in the renaming. * * @param subOp * @param oldToNew * @return */ public static Op extendWithVarMap(Op subOp, Map<Var, Var> oldToNew) { VarExprList vel = VarExprListUtils.createFromVarMap(oldToNew); OpExtend opExtend = OpExtend.create(subOp, vel); OpProject result = new OpProject(opExtend, vel.getVars()); return result; }
/** * Low level function that simply turns a var-map into an project(extend()) * expression. * * It is recommended to use wrapWithProjection which deals with variable * name clashes in the renaming. * * @param subOp * @param oldToNew * @return */ public static Op extendWithVarMap(Op subOp, Map<Var, Var> oldToNew) { VarExprList vel = VarExprListUtils.createFromVarMap(oldToNew); OpExtend opExtend = OpExtend.create(subOp, vel); OpProject result = new OpProject(opExtend, vel.getVars()); return result; }
@Override public void visit(OpProject opProject) { opProject.getSubOp().visit(this); List<Var> vars = new ArrayList<>(); for (Var v : opProject.getVars()) { Node n = changeNode(v); vars.add(Var.alloc(n)); } push(new OpProject(pop(), vars)); }
@Override public void visit(OpProject opProject) { opProject.getSubOp().visit(this); List<Var> vars = new ArrayList<>(); for (Var v : opProject.getVars()) { Node n = changeNode(v); vars.add(Var.alloc(n)); } push(new OpProject(pop(), vars)); }
@Override public Op transform(OpSlice opSlice, Op subOp) { // (slice (project...)) ==> (project (slice ...)) if ( subOp instanceof OpProject ) { OpProject p = (OpProject)subOp ; Op sub = p.getSubOp() ; Op x = new OpSlice(sub, opSlice.getStart(), opSlice.getLength()) ; x = new OpProject(x, p.getVars()) ; return x ; } return super.transform(opSlice, subOp) ; } }
@Override public Op make(ItemList list) { BuilderLib.checkLength(3, list, "project") ; Item item1 = list.get(1); List<Var> x = null; if ( item1.isList() ) { x = BuilderNode.buildVars(list.get(1).getList()) ; } else if ( list.get(1).isVar() ) { Var var = BuilderNode.buildVar(item1); x = Collections.singletonList(var); } else BuilderLib.broken("Not a list of variable for project: "+list.get(1)) ; Op sub = build(list, 2) ; return new OpProject(sub, x) ; } } ;
public Op transformSliceProject(OpSlice opSlice, OpProject opProject) { // (slice (project X)) Op subOp = opProject.getSubOp() ; if ( ! SDB_QC.isOpSQL(subOp) ) // Can't cope - just pass the slice to the general superclass. return super.transform(opSlice, opProject) ; OpSQL opSQL = (OpSQL)subOp ; SqlNode sqlSubOp = opSQL.getSqlNode() ; List<Var> pv = opProject.getVars() ; // Do as (slice X) SqlNode n = SqlSelectBlock.slice(request, sqlSubOp, opSlice.getStart(), opSlice.getLength()) ; // Put back project - as an OpProject to leave for the bridge. OpSQL x = new OpSQL(n, opProject, request) ; x.setBridge(opSQL.getBridge()) ; // Bridge will be set later. // Is OpProject needed? return new OpProject(x, pv) ; }