/** Apply static transformations to a query to optimize it */ public static Op optimize(Op op) { return optimize(op, null) ; }
private static void outputAlgebraOpt(ServletOutputStream outStream, final Query query, boolean lineNumbers) throws IOException { outStream.println("<p>Alebgra, with general triple optimizations:</p>") ; final Op op = Algebra.optimize(Algebra.compile(query)) ; outputQueryOp(outStream, query, op, lineNumbers) ; }
private static void outputAlgebraOpt(ServletOutputStream outStream, final Query query, boolean lineNumbers) throws IOException { outStream.println("<p>Alebgra, with general triple optimizations:</p>") ; final Op op = Algebra.optimize(Algebra.compile(query)) ; outputQueryOp(outStream, query, op, lineNumbers) ; }
@Override protected Op modifyOp(Op op) { if ( context.isFalse(ARQ.optimization) ) return minimalModifyOp(op) ; return Algebra.optimize(op, super.context) ; }
private static void outputAlgebraOptQuads(ServletOutputStream outStream, final Query query, boolean lineNumbers) throws IOException { outStream.println("<p>Alebgra, with general quads optimizations:</p>") ; final Op op = Algebra.optimize(Algebra.toQuadForm(Algebra.compile(query))) ; outputQueryOp(outStream, query, op, lineNumbers) ; }
private static void outputAlgebraOptQuads(ServletOutputStream outStream, final Query query, boolean lineNumbers) throws IOException { outStream.println("<p>Alebgra, with general quads optimizations:</p>") ; final Op op = Algebra.optimize(Algebra.toQuadForm(Algebra.compile(query))) ; outputQueryOp(outStream, query, op, lineNumbers) ; }
public static void printOp(IndentedWriter out, Query query, boolean printOptimized) { Op op = Algebra.compile(query) ; if ( printOptimized ) op = Algebra.optimize(op) ; WriterSSE.out(out, op, query) ; out.flush(); }
private static void algebraOpt(JsonBuilder obj, Query query) { Op op = Algebra.compile(query) ; op = Algebra.optimize(op) ; obj.key(jAlgebraOpt).value(string(query, op)) ; }
public static void printQuad(IndentedWriter out, Query query, boolean printOptimized) { Op op = Algebra.compile(query) ; if ( printOptimized ) op = Algebra.optimize(op) ; op = Algebra.toQuadForm(op) ; WriterSSE.out(out, op, query) ; // SerializationContext sCxt = new SerializationContext(query) ; // op.output(out, sCxt) ; out.flush() ; } }
private static void algebraOpt(JsonBuilder obj, Query query) { Op op = Algebra.compile(query) ; op = Algebra.optimize(op) ; obj.key(jAlgebraOpt).value(string(query, op)) ; }
private static void algebraOptQuads(JsonBuilder obj, Query query) { Op op = Algebra.compile(query) ; op = Algebra.toQuadForm(op) ; op = Algebra.optimize(op) ; obj.key(jAlgebraOptQuads).value(string(query, op)) ; }
public static void checkOp(Query query, boolean optimizeAlgebra) { IndentedLineBuffer buff = new IndentedLineBuffer() ; Op op = Algebra.compile(query) ; if ( optimizeAlgebra ) op = Algebra.optimize(op) ; WriterSSE.out(buff, op, query) ; String str = buff.toString() ; try { Op op2 = SSE.parseOp(str) ; if ( op.hashCode() != op2.hashCode() ) { op.hashCode() ; op2.hashCode() ; dump(op, op2) ; throw new QueryCheckException("reparsed algebra expression hashCode does not equal algebra from query") ; } if ( ! op.equals(op2) ) { dump(op, op2) ; throw new QueryCheckException("reparsed algebra expression does not equal query algebra") ; } } catch (SSEParseException | BuildException ex) { System.err.println(str); throw ex ; } // Breakpoint }
private static void algebraOptQuads(JsonBuilder obj, Query query) { Op op = Algebra.compile(query) ; op = Algebra.toQuadForm(op) ; op = Algebra.optimize(op) ; obj.key(jAlgebraOptQuads).value(string(query, op)) ; }
private static void check(Op opToOptimize, String opExpectedString) { Op opOptimize = Algebra.optimize(opToOptimize) ; Op opExpected = SSE.parseOp(opExpectedString) ; if ( false ) { // Hook for more detail during development. boolean b = Objects.equals(opExpected, opOptimize) ; if ( ! b ) { System.err.println("** Input:"); System.err.print(opToOptimize) ; System.err.println("** Expected:"); System.err.print(opExpected) ; System.err.println("** Actual:"); System.err.print(opOptimize) ; System.err.println("-------------------") ; } } assertEquals(opExpected, opOptimize) ; }
public static void check(Op opToOptimize, Transform additionalOptimizer, String opExpectedString) { Op opOptimize = Algebra.optimize(opToOptimize) ; opOptimize = Transformer.transform(additionalOptimizer, opOptimize) ; Op opExpected = SSE.parseOp(opExpectedString) ; assertEquals(opExpected, opOptimize) ; }
public static void checkAlgebra(String algString, Transform additionalOptimizer, String opExpectedString) { Op algebra = SSE.parseOp(algString) ; Op algebra1 = SSE.parseOp(algString) ; // Safe copy Op optimized = Algebra.optimize(algebra) ; if ( additionalOptimizer != null ) optimized = Transformer.transform(additionalOptimizer, optimized); Op opExpected = SSE.parseOp(opExpectedString != null ? opExpectedString : algString); assertEquals(opExpected, optimized) ; assertEquals("Modification of input during optimization", algebra1, algebra) ; }
private static void test(String patternString, boolean optimize, String... strExpected) { Query q = QueryFactory.create("SELECT * WHERE "+patternString) ; Op op = Algebra.compile(q) ; if ( optimize ) op = Algebra.optimize(op) ; op = Algebra.toQuadForm(op) ; Op op2 = SSE.parseOp(StrUtils.strjoinNL(strExpected)) ; assertEquals(op2, op) ; } }