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


Reply via email to