You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by rv...@apache.org on 2013/10/16 17:01:28 UTC

svn commit: r1532787 - in /jena/trunk/jena-arq/src: main/java/com/hp/hpl/jena/query/ARQ.java main/java/com/hp/hpl/jena/sparql/algebra/optimize/Optimize.java test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java

Author: rvesse
Date: Wed Oct 16 15:01:27 2013
New Revision: 1532787

URL: http://svn.apache.org/r1532787
Log:
Enable new optimization which promotes table empty up the algebra where possible allowing the query engine to avoid as much work as possible

Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/Optimize.java
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java?rev=1532787&r1=1532786&r2=1532787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java Wed Oct 16 15:01:27 2013
@@ -347,6 +347,11 @@ public class ARQ
     public static final Symbol optFilterDisjunction = ARQConstants.allocSymbol("optFilterDisjunction") ;
     
     /**
+     * Context key controlling whether the standard optimizer applies table empty promotion
+     */
+    public static final Symbol optPromoteTableEmpty = ARQConstants.allocSymbol("optPromoteTableEmpty") ;
+    
+    /**
      * Context key controlling whether the standard optimizer applies optimizations to the evaluation
      * of joins to favour index joins wherever possible
      */

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/Optimize.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/Optimize.java?rev=1532787&r1=1532786&r2=1532787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/Optimize.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/Optimize.java Wed Oct 16 15:01:27 2013
@@ -166,9 +166,7 @@ public class Optimize implements Rewrite
 
         // Either, do filter placement and other sequence generating transformations.
         // or improve to place in a sequence (latter is better?)
-        
-        // Currently implicit join optimizations must be explicitly enabled
-        
+                
         if ( context.isTrueOrUndef(ARQ.optFilterImplicitJoin) )
             op = apply("Filter Implicit Join", new TransformFilterImplicitJoin(), op);
         
@@ -181,6 +179,11 @@ public class Optimize implements Rewrite
             op = apply("Filter Equality", new TransformFilterEquality(), op) ;
         }
         
+        // Can promote table empty at this point since only the implicit join optimizations 
+        // are currently capable of introducing it
+        if ( context.isTrueOrUndef(ARQ.optPromoteTableEmpty) )
+            op = apply("Table Empty Promotion", new TransformPromoteTableEmpty(), op) ;
+        
         if ( context.isTrueOrUndef(ARQ.optFilterDisjunction) )
             op = apply("Filter Disjunction", new TransformFilterDisjunction(), op) ;
         

Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java?rev=1532787&r1=1532786&r2=1532787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java Wed Oct 16 15:01:27 2013
@@ -23,6 +23,7 @@ import com.hp.hpl.jena.sparql.algebra.op
 import com.hp.hpl.jena.sparql.algebra.optimize.TestTransformFilters ;
 import com.hp.hpl.jena.sparql.algebra.optimize.TestOptimizer ;
 import com.hp.hpl.jena.sparql.algebra.optimize.TestTransformMergeBGPs ;
+import com.hp.hpl.jena.sparql.algebra.optimize.TestTransformPromoteTableEmpty;
 import com.hp.hpl.jena.sparql.algebra.optimize.TestVarRename ;
 
 import junit.framework.TestSuite ;
@@ -41,6 +42,7 @@ import org.junit.runners.Suite ;
     , TestVarRename.class
     , TestOptimizer.class
     , TestTransformMergeBGPs.class
+    , TestTransformPromoteTableEmpty.class
     , TestPattern2Join.class
     
 //    , TestUnionGraph.class