@Override public Op transform(OpGraph opGraph, Op x) { // Remove any Quad.unionGraph - OpBGPs will be rewritten. return super.transform(opGraph, x) ; }
@Override public Op transform(OpFilter opFilter, Op op) { // Can't really do much here because we are working in node id space, and the lexicial forms etc // of nodes aren't available until the bridge is added. // See QueryCompilerMain. return super.transform(opFilter, op) ; }
@Override public Op transform(OpGraph opGraph, Op subOp) { if (isTableEmpty(subOp)) { return subOp; } return super.transform(opGraph, subOp); }
@Override public Op transform(OpAssign opAssign, Op subOp) { if (isTableEmpty(subOp)) { return subOp; } return super.transform(opAssign, subOp); }
@Override public Op transform(OpLeftJoin opLeftJoin, Op left, Op right) { // Must have associated expressions to be eligible if (opLeftJoin.getExprs() == null) return super.transform(opLeftJoin, left, right); // Try and apply this optimization Op op = apply(opLeftJoin, left, right); if (op == null) return super.transform(opLeftJoin, left, right); return op; }
@Override public Op transform(OpFilter opFilter, Op subOp) { Op op = apply(opFilter.getExprs(), subOp); if (op == null) return super.transform(opFilter, subOp); return op; }
@Override public Op transform(OpProject opProject, Op subOp) { // Need to find the right project // We already stripped outer modifier. if ( projectCount >= projectRenameDepth ) // Inner ones already done. subOp = Rename.renameVars(subOp, opProject.getVars()) ; return super.transform(opProject, subOp) ; } }
@Override public Op transform(OpDistinct opDistinct, Op subOp) { if ( ! request.DistinctTranslation ) return super.transform(opDistinct, subOp) ; if ( ! SDB_QC.isOpSQL(subOp) ) return super.transform(opDistinct, subOp) ; SqlNode sqlSubOp = ((OpSQL)subOp).getSqlNode() ; SqlNode n = SqlSelectBlock.distinct(request, sqlSubOp) ; return new OpSQL(n, opDistinct, request) ; }
@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); }
@Override public Op transform(OpLeftJoin opLeftJoin, Op left, Op right) { // If LHS is table empty return table empty // If RHS is table empty can eliminate left join and just leave LHS if (isTableEmpty(left)) { return OpTable.empty(); } else if (isTableEmpty(right)) { return left; } return super.transform(opLeftJoin, left, right); }
@Override public Op transform(OpFilter opFilter, Op subOp) { ExprList exprList = opFilter.getExprs(); ExprList exprList2 = process(exprList); if ( exprList2 == null ) return super.transform(opFilter, subOp); Op opFilter2 = OpFilter.filterBy(exprList2, subOp); return opFilter2; }
@Override public Op transform(OpGraph opGraph, Op x) { if ( opGraph.getNode().equals(oldGraphName) ) opGraph = new OpGraph(newGraphName, x) ; return super.transform(opGraph, x) ; }
@Override public Op transform(OpGraph opGraph, Op x) { if ( opGraph.getNode().equals(oldGraphName) ) opGraph = new OpGraph(newGraphName, x) ; return super.transform(opGraph, x) ; }
@Override public Op transform(OpProject opProject, Op subOp) { //request.getStore().getSQLBridgeFactory().create(request, null, null) if ( ! SDB_QC.isOpSQL(subOp) ) return super.transform(opProject, subOp) ; // Need to not do bridge elsewhere. List<Var> vars = opProject.getVars() ; return doBridge(request, (OpSQL)subOp, vars, opProject) ; }
@Override public Op transform(OpGroup opGroup, Op subOp) { VarExprList groupVars = opGroup.getGroupVars(); VarExprList groupVars2 = NodeTransformLib.transformVars(transform, groupVars); if ( groupVars2 == groupVars ) return super.transform(opGroup, subOp); return OpGroup.create(subOp, groupVars2, opGroup.getAggregators()); } }
@Override public Op transform(OpJoin opJoin, Op left, Op right) { BasicPattern p1 = asBGP(left) ; BasicPattern p2 = asBGP(right) ; if ( p1 != null && p2 != null ) { BasicPattern p = merge(p1, p2) ; return new OpBGP(p) ; } return super.transform(opJoin, left, right) ; }
@Override public Op transform(OpTriple opTriple) { Triple t2 = NodeTransformLib.transform(transform, opTriple.getTriple()); if ( t2 == opTriple.getTriple() ) return super.transform(opTriple); return new OpTriple(t2); }
@Override public Op transform(OpBGP opBGP) { BasicPattern bgp2 = NodeTransformLib.transform(transform, opBGP.getPattern()); if ( bgp2 == opBGP.getPattern() ) return super.transform(opBGP); return new OpBGP(bgp2); }
@Override public Op transform(OpQuadPattern opQuadPattern) { if ( opQuadPattern.getGraphNode().equals(oldGraphName) ) opQuadPattern = new OpQuadPattern(newGraphName, opQuadPattern.getBasicPattern()) ; return super.transform(opQuadPattern) ; } }
@Override public Op transform(OpQuadPattern opQuadPattern) { if ( opQuadPattern.getGraphNode().equals(oldGraphName) ) opQuadPattern = new OpQuadPattern(newGraphName, opQuadPattern.getBasicPattern()) ; return super.transform(opQuadPattern) ; } }