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
} )