You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2013/11/22 20:27:51 UTC

svn commit: r1544655 - in /jena/trunk: jena-arq/src/main/java/com/hp/hpl/jena/query/ jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/ jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/ jena-tdb/src/main/java/com/hp/hpl/jena/...

Author: andy
Date: Fri Nov 22 19:27:50 2013
New Revision: 1544655

URL: http://svn.apache.org/r1544655
Log:
Allow separate control of BGP placement.

Removed:
    jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/TS_Jena.java
    jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/graph/basics/
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/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestTransformFilterPlacement.java
    jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDB.java
    jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderBasic.java
    jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
    jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/TC_TDB.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=1544655&r1=1544654&r2=1544655&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 Fri Nov 22 19:27:50 2013
@@ -280,6 +280,13 @@ public class ARQ
     public static final Symbol optFilterPlacement = ARQConstants.allocSymbol("optFilterPlacement") ;
     
     /** 
+     *  Context key controlling whether to do filter placement within BGP and quad blocks.
+     *  Modies the effect of optFilterPlacement. 
+     *  Default is "true" - filter placement is pushed into BGPs.
+     */  
+    public static final Symbol optFilterPlacementBGP = ARQConstants.allocSymbol("optFilterPlacementBGP") ;
+
+    /** 
      *  Context key controlling whether an ORDER BY-LIMIT query is done avoiding total sort using an heap.
      *  Default is "true" - total sort if avoided by default when ORDER BY is used with LIMIT.
      */  

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=1544655&r1=1544654&r2=1544655&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 Fri Nov 22 19:27:50 2013
@@ -215,9 +215,11 @@ public class Optimize implements Rewrite
         // If done before TransformJoinStrategy, you can get two applications
         // of a filter in a (sequence) from each half of a (join).  This is harmless,
         // because filters are generally cheap, but it looks a bit bad.
-        if ( context.isTrueOrUndef(ARQ.optFilterPlacement) )
-            // This can be done too early (breaks up BGPs).
-            op = apply("Filter Placement", new TransformFilterPlacement(), op) ;
+        if ( context.isTrueOrUndef(ARQ.optFilterPlacement) ) {
+            // Wether to push into BGPs 
+            boolean b = context.isTrueOrUndef(ARQ.optFilterPlacementBGP) ;
+            op = apply("Filter Placement", new TransformFilterPlacement(b), op) ;
+        }
 
         // Merge adjacent BGPs
         if ( context.isTrueOrUndef(ARQ.optMergeBGPs) )

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java?rev=1544655&r1=1544654&r2=1544655&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java Fri Nov 22 19:27:50 2013
@@ -47,6 +47,7 @@ import com.hp.hpl.jena.sparql.util.VarUt
  */
 
 public class TransformFilterPlacement extends TransformCopy {
+    
     static class Placement {
         final Op op ;
         final ExprList unplaced ; 
@@ -62,10 +63,10 @@ public class TransformFilterPlacement ex
         return new Placement(op, remaining) ; 
     }
     
-    private static Placement resultNoChange(Op original) { 
+    private Placement resultNoChange(Op original) { 
         return noChangePlacement ;
     }
-    private static boolean isNoChange(Placement placement) { 
+    private boolean isNoChange(Placement placement) { 
         return placement == noChangePlacement ;
     }
 
@@ -85,7 +86,12 @@ public class TransformFilterPlacement ex
         return op ;
     }
 
-    public TransformFilterPlacement() {}
+    private final boolean includeBGPs ;
+
+    public TransformFilterPlacement() { this(true) ; }
+    
+    public TransformFilterPlacement(boolean includeBGPs)
+    { this.includeBGPs = includeBGPs ; }
 
     @Override
     public Op transform(OpFilter opFilter, Op x) {
@@ -99,22 +105,26 @@ public class TransformFilterPlacement ex
     }
 
     // Recurse
-    private static Op transformOp(ExprList exprs, Op x) {
+    private Op transformOp(ExprList exprs, Op x) {
         Placement placement = transform(exprs, x) ;
         Op op = buildFilter(placement) ;
         return op ;
     }
 
-    private static Placement transform(ExprList exprs, Op input) {
+    private Placement transform(ExprList exprs, Op input) {
         // Dispatch by visitor??
         Placement placement = null ;
 
-        if ( input instanceof OpBGP )
-            placement = placeBGP(exprs, (OpBGP)input) ;
+        if ( input instanceof OpBGP ) {
+            if ( includeBGPs )
+                placement = placeBGP(exprs, (OpBGP)input) ;
+        }
+        else if ( input instanceof OpQuadPattern ) {
+            if ( includeBGPs )
+                placement = placeQuadPattern(exprs, (OpQuadPattern)input) ;    
+        }
         else if ( input instanceof OpSequence )
             placement = placeSequence(exprs, (OpSequence)input) ;
-        else if ( input instanceof OpQuadPattern )
-            placement = placeQuadPattern(exprs, (OpQuadPattern)input) ;
         else if ( input instanceof OpJoin )
             placement = placeJoin(exprs, (OpJoin)input) ;
         else if ( input instanceof OpConditional )
@@ -126,11 +136,10 @@ public class TransformFilterPlacement ex
         else if ( input instanceof OpUnion )
             placement = placeUnion(exprs, (OpUnion)input) ;
         
-        
-        // These are operations where chnaging the order of operations
-        // does not in itself make a differencebut enables expressions
-        // to be pushed own down to where they might make a difference.
-        // Otherwise these would blockers.
+        // These are operations where changing the order of operations
+        // does not in itself make a difference but enables expressions
+        // to be pushed down to where they might make a difference.
+        // Otherwise these would be blockers.
         
         else if ( input instanceof OpExtend )
             placement = placeExtend(exprs, (OpExtend)input) ;
@@ -142,11 +151,11 @@ public class TransformFilterPlacement ex
         return placement ;
     }
     
-    private static Placement x_placeNoOp(ExprList exprs, Op op) {
+    private Placement x_placeNoOp(ExprList exprs, Op op) {
         return result(op, exprs) ;
     }
 
-    private static Placement placeFilter(ExprList exprs, OpFilter input) {
+    private Placement placeFilter(ExprList exprs, OpFilter input) {
         Placement p = transform(exprs, input.getSubOp()) ;
         if ( p == null )
             p = new Placement(input.getSubOp(), exprs) ;
@@ -209,7 +218,7 @@ public class TransformFilterPlacement ex
         return null ;
     }
 
-    private static Placement placeQuadPattern(ExprList exprs, OpQuadPattern pattern) {
+    private Placement placeQuadPattern(ExprList exprs, OpQuadPattern pattern) {
         return placeQuadPattern(exprs, pattern.getGraphNode(), pattern.getBasicPattern()) ;
     }
 
@@ -272,7 +281,7 @@ public class TransformFilterPlacement ex
      * orginal query.
      */
 
-    private static Placement placeSequence(ExprList exprsIn, OpSequence opSequence) {
+    private Placement placeSequence(ExprList exprsIn, OpSequence opSequence) {
         ExprList exprs = new ExprList(exprsIn) ;
         Set<Var> varScope = DS.set() ;
         List<Op> ops = opSequence.getElements() ;
@@ -299,7 +308,7 @@ public class TransformFilterPlacement ex
     // If this is run after join->sequence, then this is good to do.
     static boolean pushRightAsWellAsLeft = true ; 
     
-    private static Placement placeJoin(ExprList exprs, OpJoin opJoin) {
+    private Placement placeJoin(ExprList exprs, OpJoin opJoin) {
         Op left = opJoin.getLeft() ;
         Op right = opJoin.getRight() ;
         Collection<Var> leftVars = fixedVars(left) ;
@@ -347,7 +356,7 @@ public class TransformFilterPlacement ex
 
     /* A conditional is left join without scoping complications. */
     
-    private static Placement placeConditional(ExprList exprs, OpConditional opConditional) {
+    private Placement placeConditional(ExprList exprs, OpConditional opConditional) {
         Op left = opConditional.getLeft() ;
         Op right = opConditional.getRight() ;
         Placement nLeft = transform(exprs, left) ;
@@ -357,7 +366,7 @@ public class TransformFilterPlacement ex
         return result(op, nLeft.unplaced) ;
     }
 
-    private static Placement placeLeftJoin(ExprList exprs, OpLeftJoin opLeftJoin) {
+    private Placement placeLeftJoin(ExprList exprs, OpLeftJoin opLeftJoin) {
         // Push LHS only.  RHS may result in no matches - is that safe to push into? 
         Op left = opLeftJoin.getLeft() ;
         Op right = opLeftJoin.getRight() ;
@@ -368,7 +377,7 @@ public class TransformFilterPlacement ex
         return result(op, nLeft.unplaced) ;
     }
     
-    private static Placement placeUnion(ExprList exprs, OpUnion input) {
+    private Placement placeUnion(ExprList exprs, OpUnion input) {
         // Unsubtle - push into both sides.
         // Neater - for all unpushed put outside the union. 
         Op left = input.getLeft() ;
@@ -384,16 +393,16 @@ public class TransformFilterPlacement ex
     }
 
     /** Try to optimize (filter (extend ...)) */
-    private static Placement placeExtend(ExprList exprs, OpExtend input) {
+    private Placement placeExtend(ExprList exprs, OpExtend input) {
         return processExtendAssign(exprs, input) ;
     }
     
-    private static Placement placeAssign(ExprList exprs, OpAssign input) {
+    private Placement placeAssign(ExprList exprs, OpAssign input) {
         return processExtendAssign(exprs, input) ;
         
     }
 
-    private static Placement processExtendAssign(ExprList exprs, OpExtendAssign input) {
+    private Placement processExtendAssign(ExprList exprs, OpExtendAssign input) {
         // Could break up the VarExprList
         Collection<Var> vars1 = input.getVarExprList().getVars() ;
         ExprList pushed = new ExprList() ;
@@ -428,7 +437,7 @@ public class TransformFilterPlacement ex
         return result(op2, unpushed) ;
     }
 
-    private static Placement placeProject(ExprList exprs, OpProject input) {
+    private Placement placeProject(ExprList exprs, OpProject input) {
         Collection<Var> varsProject = input.getVars() ;
         ExprList pushed = new ExprList() ;
         ExprList unpushed = new ExprList() ;
@@ -455,7 +464,7 @@ public class TransformFilterPlacement ex
         return result(op2, unpushed) ;
     }
     
-    private static Set<Var> fixedVars(Op op) {
+    private Set<Var> fixedVars(Op op) {
         return OpVars.fixedVars(op) ;
     }
 

Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestTransformFilterPlacement.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestTransformFilterPlacement.java?rev=1544655&r1=1544654&r2=1544655&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestTransformFilterPlacement.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestTransformFilterPlacement.java Fri Nov 22 19:27:50 2013
@@ -46,6 +46,11 @@ public class TestTransformFilterPlacemen
              "(sequence (filter (= ?x 1) (bgp ( ?s ?p ?x))) (bgp (?s1 ?p1 ?x)))") ;
     }
 
+    @Test public void place_bgp_03a() {
+        testNoBGP("(filter (= ?x 1) (bgp (?s ?p ?x) (?s1 ?p1 ?x) ))",
+             null) ;
+    }
+
     @Test public void place_bgp_04() {
         test("(filter (= ?XX 1) (bgp (?s ?p ?x) (?s1 ?p1 ?XX) ))", "(filter (= ?XX 1) (bgp (?s ?p ?x) (?s1 ?p1 ?XX) ))") ;
     }
@@ -86,11 +91,22 @@ public class TestTransformFilterPlacemen
              "(sequence (bgp (?s ?p ?x1)) (filter (= ?x 123) (bgp (?s ?p ?x))) (bgp (?s ?p ?x2)) )") ;
     }
 
+    @Test public void place_sequence_04a() {
+        testNoBGP("(filter (= ?x 123) (sequence (bgp (?s ?p ?x1)) (bgp (?s ?p ?x)) (bgp (?s ?p ?x2)) ))",
+                "(sequence (filter (= ?x 123) (sequence (bgp (?s ?p ?x1)) (bgp (?s ?p ?x)))) (bgp (?s ?p ?x2)) )") ;
+    }
+
     @Test public void place_sequence_05() {
-        test("(filter (= ?x 123) (sequence (bgp (?s ?p ?x1) (?s ?p ?x)) (bgp (?s ?p ?x2)) ))",
-            "(sequence (filter (= ?x 123) (bgp (?s ?p ?x1) (?s ?p ?x))) (bgp (?s ?p ?x2)) )") ;
+        test("(filter (= ?x 123) (sequence (bgp (?s ?p ?x) (?s ?p ?x1)) (bgp (?s ?p ?x2)) ))",
+            "(sequence (filter (= ?x 123) (bgp (?s ?p ?x))) (bgp (?s ?p ?x1)) (bgp (?s ?p ?x2)) )") ;
+    }
+
+    @Test public void place_sequence_05a() {
+        testNoBGP("(filter (= ?x 123) (sequence (bgp (?s ?p ?x) (?s ?p ?x1)) (bgp (?s ?p ?x2)) ))",
+                "(sequence (filter (= ?x 123) (bgp (?s ?p ?x) (?s ?p ?x1))) (bgp (?s ?p ?x2)) )") ;
     }
 
+
     @Test public void place_sequence_06() {
         test("(filter (= ?x 123) (sequence (bgp (?s ?p ?x1) (?s ?p ?x2)) (bgp (?s ?p ?x)) ))",
              // If push filter to last element ... which is of no benefit
@@ -248,10 +264,17 @@ public class TestTransformFilterPlacemen
              "(union  (sequence (filter (= ?x 123) (bgp (?s ?p ?x))) (bgp (?s ?p ?y))) "+
                       "(filter (= ?x 123) (bgp (?s ?p ?z)  (?s1 ?p1 ?x)) ))") ;
     }
+        
+    public static void test(String input, String output) {
+        test$(input, output, true) ;
+    }
 
+    public static void testNoBGP(String input , String output ) {
+        test$(input, output, false) ;
+    }
         
-        public static void test(String input, String output) {
-        Transform t_placement = new TransformFilterPlacement() ;
+    public static void test$(String input, String output, boolean includeBGPs) {
+        Transform t_placement = new TransformFilterPlacement(includeBGPs) ;
         Op op1 = SSE.parseOp(input) ;
         Op op2 = Transformer.transform(t_placement, op1) ;
         if ( output == null ) {
@@ -262,6 +285,6 @@ public class TestTransformFilterPlacemen
 
         Op op3 = SSE.parseOp(output) ;
         Assert.assertEquals(op3, op2) ;
+        
     }
-
 }

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDB.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDB.java?rev=1544655&r1=1544654&r2=1544655&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDB.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDB.java Fri Nov 22 19:27:50 2013
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package com.hp.hpl.jena.tdb;
+package com.hp.hpl.jena.tdb ;
 
 import java.util.Iterator ;
 
@@ -53,219 +53,213 @@ import com.hp.hpl.jena.tdb.sys.EnvTDB ;
 import com.hp.hpl.jena.tdb.sys.SystemTDB ;
 import com.hp.hpl.jena.tdb.transaction.DatasetGraphTransaction ;
 
-public class TDB
-{
-    /** IRI for TDB */  
-    public static final String tdbIRI = "http://jena.hpl.hp.com/#tdb" ;
-    
-    /** Root of TDB-defined parameter names */  
-    public static final String tdbParamNS = "http://jena.hpl.hp.com/TDB#" ;
-    
-    /** Prefix for TDB-defined parameter names */  
-    public static final String tdbSymbolPrefix = "tdb" ;
-    
+public class TDB {
+    /** IRI for TDB */
+    public static final String  tdbIRI                           = "http://jena.hpl.hp.com/#tdb" ;
+
+    /** Root of TDB-defined parameter names */
+    public static final String  tdbParamNS                       = "http://jena.hpl.hp.com/TDB#" ;
+
+    /** Prefix for TDB-defined parameter names */
+    public static final String  tdbSymbolPrefix                  = "tdb" ;
+
     // Internal logging
-    private static final Logger log = LoggerFactory.getLogger(TDB.class) ;
+    private static final Logger log                              = LoggerFactory.getLogger(TDB.class) ;
 
     /** Logger for loading information */
-    public static final String logLoaderName = "org.apache.jena.tdb.loader" ;
+    public static final String  logLoaderName                    = "org.apache.jena.tdb.loader" ;
     /** Logger for loading information */
-    public static final Logger logLoader = LoggerFactory.getLogger(logLoaderName) ;
-    
-    /** Logger for general information */ 
-    public static final String logInfoName = "org.apache.jena.info" ;
-    /** Logger for general information */ 
-    public static final Logger logInfo = LoggerFactory.getLogger(logInfoName) ;
-    
-//    /** Logger for execution information */
-//    public static final String logExecName = "com.hp.hpl.jena.tdb.exec" ;
-//    /** Logger for execution information */
-//    public static final Logger logExec = LoggerFactory.getLogger(logExecName) ;
-    
-    public final static String namespace = "http://jena.hpl.hp.com/2008/tdb#" ;
-
-    /** Symbol to use the union of named graphs as the default graph of a query */ 
-    public static final Symbol symUnionDefaultGraph          = SystemTDB.allocSymbol("unionDefaultGraph") ;
-    
+    public static final Logger  logLoader                        = LoggerFactory.getLogger(logLoaderName) ;
+
+    /** Logger for general information */
+    public static final String  logInfoName                      = "org.apache.jena.info" ;
+    /** Logger for general information */
+    public static final Logger  logInfo                          = LoggerFactory.getLogger(logInfoName) ;
+
+    // /** Logger for execution information */
+    // public static final String logExecName = "com.hp.hpl.jena.tdb.exec" ;
+    // /** Logger for execution information */
+    // public static final Logger logExec = LoggerFactory.getLogger(logExecName)
+    // ;
+
+    public final static String  namespace                        = "http://jena.hpl.hp.com/2008/tdb#" ;
+
+    /** Symbol to use the union of named graphs as the default graph of a query */
+    public static final Symbol  symUnionDefaultGraph             = SystemTDB.allocSymbol("unionDefaultGraph") ;
+
     /**
-     * A String enum Symbol that specifies the type of temporary storage for transaction journal write blocks.
+     * A String enum Symbol that specifies the type of temporary storage for
+     * transaction journal write blocks.
      * <p/>
-     * "mem" = Java heap memory (default)
-     * <br/>
-     * "direct" = Process heap memory
-     * <br/>
-     * "mapped" = Memory mapped temporary file
-     * <br/>
+     * "mem" = Java heap memory (default) <br/>
+     * "direct" = Process heap memory <br/>
+     * "mapped" = Memory mapped temporary file <br/>
      */
-    public static final Symbol transactionJournalWriteBlockMode = SystemTDB.allocSymbol("transactionJournalWriteBlockMode") ;
-    
-    public static Context getContext()     { return ARQ.getContext() ; }  
-    
+    public static final Symbol  transactionJournalWriteBlockMode = SystemTDB.allocSymbol("transactionJournalWriteBlockMode") ;
+
+    public static Context getContext() {
+        return ARQ.getContext() ;
+    }
+
     // Called on assembler loading.
     // Real initializtion happnes due to class static blocks.
-    /** TDB System initialization - normally, this is not explicitly called because
-     * all routes to use TDB will cause initialization to occur.  However, calling it
-     * repeatedly is safe and low cost.
+    /**
+     * TDB System initialization - normally, this is not explicitly called
+     * because all routes to use TDB will cause initialization to occur.
+     * However, calling it repeatedly is safe and low cost.
      */
-    public static void init() { }
-    
-    /** Release any and all system resources held by TDB.
-     *  This does NOT close or release datasets or graphs held by client code. 
+    public static void init() {}
+
+    /**
+     * Release any and all system resources held by TDB. This does NOT close or
+     * release datasets or graphs held by client code.
      */
-    public static void closedown()
-    {
+    public static void closedown() {
         StoreConnection.reset() ;
     }
 
-    /** Set the global flag that control the "No BGP optimizer" warning.
-     * Set to false to silence the warning
+    /**
+     * Set the global flag that control the "No BGP optimizer" warning. Set to
+     * false to silence the warning
      */
-    public static void setOptimizerWarningFlag(boolean b)
-    { DatasetBuilderStd.setOptimizerWarningFlag(b) ; }
-    
-    // XXX Switch to SystemARQ.sync at ARQ 2.7.1 - beware of sync(DatasetGraph)
-    
+    public static void setOptimizerWarningFlag(boolean b) {
+        DatasetBuilderStd.setOptimizerWarningFlag(b) ;
+    }
+
     /** Sync a TDB-backed Model. Do nothing if not TDB-backed. */
-    public static void sync(Model model)
-    {
+    public static void sync(Model model) {
         sync(model.getGraph()) ;
     }
-    
+
     /** Sync a TDB-backed Graph. Do nothing if not TDB-backed. */
-    public static void sync(Graph graph)
-    {
+    public static void sync(Graph graph) {
         syncObject(graph) ;
     }
 
     /** Sync a TDB-backed Dataset. Do nothing if not TDB-backed. */
-    public static void sync(Dataset dataset)
-    { 
+    public static void sync(Dataset dataset) {
         DatasetGraph ds = dataset.asDatasetGraph() ;
         sync(ds) ;
     }
-    
+
     /** Sync a TDB-backed DatasetGraph. Do nothing if not TDB-backed. */
-    public static void sync(DatasetGraph dataset)
-    { 
+    public static void sync(DatasetGraph dataset) {
         // Should be: SystemARQ.sync(dataset) ;
-        if ( dataset instanceof DatasetGraphTDB )
-        {
+        if ( dataset instanceof DatasetGraphTDB ) {
             syncObject(dataset) ;
             return ;
         }
-        
-        if ( dataset instanceof DatasetGraphTransaction )
-        {
+
+        if ( dataset instanceof DatasetGraphTransaction ) {
             DatasetGraphTransaction dsgt = (DatasetGraphTransaction)dataset ;
-            // This only sync if the dataset has not been used transactionally. 
+            // This only sync if the dataset has not been used transactionally.
             // Can't sync transactional datasets (it's meaningless)
-            dsgt.syncIfNotTransactional() ; 
+            dsgt.syncIfNotTransactional() ;
             return ;
         }
-        
+
         // May be a general purpose dataset with TDB objects in it.
         sync(dataset.getDefaultGraph()) ;
         Iterator<Node> iter = dataset.listGraphNodes() ;
-        iter = Iter.toList(iter).iterator() ;   // Avoid iterator concurrency.
-        for ( ; iter.hasNext() ; )
-        {
-            Node n = iter.next();
+        iter = Iter.toList(iter).iterator() ; // Avoid iterator concurrency.
+        for (; iter.hasNext();) {
+            Node n = iter.next() ;
             Graph g = dataset.getGraph(n) ;
             sync(g) ;
         }
     }
-    
-    /** Sync a TDB synchronizable object (model, graph, dataset). 
-     *  If force is true, synchronize as much as possible (e.g. file metadata)
-     *  else make a reasonable attenpt at synchronization but does not gauarantee disk state. 
-     * Do nothing otherwise 
+
+    /**
+     * Sync a TDB synchronizable object (model, graph, dataset). If force is
+     * true, synchronize as much as possible (e.g. file metadata) else make a
+     * reasonable attenpt at synchronization but does not gauarantee disk state.
+     * Do nothing otherwise
      */
-    private static void syncObject(Object object)
-    {
+    private static void syncObject(Object object) {
         if ( object instanceof Sync )
             ((Sync)object).sync() ;
     }
 
     private static boolean initialized = false ;
-    static { initialization1() ; }
-    
-    private static synchronized void initialization1()
-    {
+    static {
+        initialization1() ;
+    }
+
+    private static synchronized void initialization1() {
         // Called at start.
         if ( initialized )
             return ;
         initialized = true ;
-     
+
         RIOT.init() ;
         SystemTDB.init() ;
         ARQ.init() ;
         LangRDFXML.RiotUniformCompatibility = true ;
         EnvTDB.processGlobalSystemProperties() ;
-        
+
         MappingRegistry.addPrefixMapping(SystemTDB.tdbSymbolPrefix, SystemTDB.symbolNamespace) ;
         AssemblerUtils.init() ;
-        AssemblerTDB.init();
+        AssemblerTDB.init() ;
         QueryEngineTDB.register() ;
         UpdateEngineTDB.register() ;
         MappingRegistry.addPrefixMapping(TDB.tdbSymbolPrefix, TDB.tdbParamNS) ;
 
         wireIntoExecution() ;
-        
+
         if ( log.isDebugEnabled() )
-            log.debug("\n"+ARQ.getContext()) ;
+            log.debug("\n" + ARQ.getContext()) ;
     }
 
-    private static void wireIntoExecution()
-    {
+    private static void wireIntoExecution() {
         // TDB does it itself.
-        TDB.getContext().set(ARQ.optFilterPlacement, false) ;
+        TDB.getContext().set(ARQ.optFilterPlacementBGP, false) ;
         // Globally change the stage generator to intercept BGP on TDB
         StageGenerator orig = (StageGenerator)ARQ.getContext().get(ARQ.stageGenerator) ;
-        
+
         // Wire in the TDB stage generator which will make TDB work whether
-        // or not the TDB executor is used. This means that datasets of mixed graph
+        // or not the TDB executor is used. This means that datasets of mixed
+        // graph
         // types inside a general purpose dataset work.
         StageGenerator stageGenerator = new StageGeneratorDirectTDB(orig) ;
         StageBuilder.setGenerator(ARQ.getContext(), stageGenerator) ;
 
-        // Wire in the new OpExecutor.  
-        // This is normal way to execute with a general dataset or a 
-        // model that is TDB-backed.  (Is it?)
-        //QC.setFactory(ARQ.getContext(), OpExecutorTDB.OpExecFactoryTDB) ;
+        // Wire in the new OpExecutor.
+        // This is normal way to execute with a general dataset or a
+        // model that is TDB-backed. (Is it?)
+        // QC.setFactory(ARQ.getContext(), OpExecutorTDB.OpExecFactoryTDB) ;
     }
-    
+
     // ---- Static constants read by modVersion
     // ---- Must be after initialization.
-    
-    static private String metadataLocation = "org/apache/jena/tdb/tdb-properties.xml" ;
-    static private Metadata metadata = new Metadata(metadataLocation) ;
-    
-    /** The root package name for TDB */   
-    public static final String PATH = "org.apache.jena.tdb";
+
+    static private String      metadataLocation = "org/apache/jena/tdb/tdb-properties.xml" ;
+    static private Metadata    metadata         = new Metadata(metadataLocation) ;
+
+    /** The root package name for TDB */
+    public static final String PATH             = "org.apache.jena.tdb" ;
 
     // The names known to ModVersion : "NAME", "VERSION", "BUILD_DATE"
-    
-    public static final String NAME = "TDB" ;
-    
+
+    public static final String NAME             = "TDB" ;
+
     /** The full name of the current TDB version */
-    public static final String VERSION = metadata.get(PATH+".version", "DEV") ;
+    public static final String VERSION          = metadata.get(PATH + ".version", "DEV") ;
 
     /** The date and time at which this release was built */
-    public static final String BUILD_DATE = metadata.get(PATH+".build.datetime", "unset") ;
-    
-    // Final initialization (in case any statics in this file are important). 
+    public static final String BUILD_DATE       = metadata.get(PATH + ".build.datetime", "unset") ;
+
+    // Final initialization (in case any statics in this file are important).
     static {
         initialization2() ;
     }
 
-    private static void initialization2()
-    { 
+    private static void initialization2() {
         // Set management information.
         // Needs ARQ > 2.8.0
         String NS = TDB.PATH ;
         SystemInfo systemInfo = new SystemInfo(TDB.tdbIRI, TDB.VERSION, TDB.BUILD_DATE) ;
-        ARQMgt.register(NS+".system:type=SystemInfo", systemInfo) ;
+        ARQMgt.register(NS + ".system:type=SystemInfo", systemInfo) ;
         SystemARQ.registerSubSystem(systemInfo) ;
     }
-    
+
 }

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderBasic.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderBasic.java?rev=1544655&r1=1544654&r2=1544655&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderBasic.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderBasic.java Fri Nov 22 19:27:50 2013
@@ -23,6 +23,7 @@ import org.apache.jena.atlas.lib.StrUtil
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
+import com.hp.hpl.jena.query.ARQ ;
 import com.hp.hpl.jena.sparql.engine.main.QC ;
 import com.hp.hpl.jena.sparql.engine.optimizer.reorder.ReorderTransformation ;
 import com.hp.hpl.jena.tdb.TDBException ;
@@ -78,6 +79,8 @@ public class DatasetBuilderBasic impleme
         ReorderTransformation transform  = chooseReorderTransformation(location) ;
         
         DatasetGraphTDB dsg = new DatasetGraphTDB(tripleTable, quadTable, prefixes, transform, null) ;
+        // TDB does filter placement on BGPs itself.
+        dsg.getContext().set(ARQ.optFilterPlacementBGP, false);
         QC.setFactory(dsg.getContext(), OpExecutorTDB.OpExecFactoryTDB) ;
         return dsg ;
     }

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java?rev=1544655&r1=1544654&r2=1544655&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java Fri Nov 22 19:27:50 2013
@@ -150,6 +150,8 @@ public class DatasetBuilderStd implement
         
         StorageConfig storageConfig = new StorageConfig(location, params, readonly, blockMgrs, bufferChannels, nodeTables) ;
         DatasetGraphTDB dsg = new DatasetGraphTDB(tripleTable, quadTable, prefixes, transform, storageConfig) ;
+        // TDB does filter placement on BGPs itself.
+        dsg.getContext().set(ARQ.optFilterPlacementBGP, false);
         QC.setFactory(dsg.getContext(), OpExecutorTDB.OpExecFactoryTDB) ;
         return dsg ;
     }

Modified: jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/TC_TDB.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/TC_TDB.java?rev=1544655&r1=1544654&r2=1544655&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/TC_TDB.java (original)
+++ jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/TC_TDB.java Fri Nov 22 19:27:50 2013
@@ -57,7 +57,6 @@ import com.hp.hpl.jena.tdb.transaction.T
     , TS_Graph.class
     , TS_Factory.class
     , TS_TDBAssembler.class
-    , TS_Jena.class
     , TS_TransactionTDB.class
     , TS_ObjectFile.class
 } )