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