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/03/27 18:09:44 UTC
svn commit: r1461713 - in /jena/trunk/jena-tdb/src/main/java:
com/hp/hpl/jena/tdb/solver/stats/ com/hp/hpl/jena/tdb/store/bulkloader/
com/hp/hpl/jena/tdb/store/bulkloader2/ tdb/ tdb/cmdline/
Author: andy
Date: Wed Mar 27 17:09:44 2013
New Revision: 1461713
URL: http://svn.apache.org/r1461713
Log:
JENA-426 : Apply patch for collecting (?x rdf:type <TYPE>) stats
Added:
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsResults.java
Modified:
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/Stats.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollector.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollectorBase.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollectorNodeId.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader/BulkLoader.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
jena/trunk/jena-tdb/src/main/java/tdb/cmdline/CmdTDBGraph.java
jena/trunk/jena-tdb/src/main/java/tdb/tdbconfig.java
jena/trunk/jena-tdb/src/main/java/tdb/tdbstats.java
Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/Stats.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/Stats.java?rev=1461713&r1=1461712&r2=1461713&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/Stats.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/Stats.java Wed Mar 27 17:09:44 2013
@@ -24,70 +24,53 @@ import static com.hp.hpl.jena.sparql.sse
import java.io.FileOutputStream ;
import java.io.IOException ;
import java.io.OutputStream ;
-import java.util.HashMap ;
import java.util.Iterator ;
import java.util.Map ;
import java.util.Map.Entry ;
-import org.apache.jena.atlas.lib.Tuple ;
import org.apache.jena.atlas.logging.Log ;
import com.hp.hpl.jena.graph.Graph ;
import com.hp.hpl.jena.graph.Node ;
import com.hp.hpl.jena.graph.Triple ;
import com.hp.hpl.jena.sparql.engine.optimizer.StatsMatcher ;
+import com.hp.hpl.jena.sparql.graph.NodeConst ;
import com.hp.hpl.jena.sparql.sse.Item ;
import com.hp.hpl.jena.sparql.sse.ItemList ;
import com.hp.hpl.jena.sparql.sse.ItemWriter ;
import com.hp.hpl.jena.sparql.util.NodeFactoryExtra ;
import com.hp.hpl.jena.sparql.util.Utils ;
-import com.hp.hpl.jena.tdb.index.TupleIndex ;
-import com.hp.hpl.jena.tdb.nodetable.NodeTable ;
-import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
-import com.hp.hpl.jena.tdb.store.GraphTDB ;
-import com.hp.hpl.jena.tdb.store.NodeId ;
-import com.hp.hpl.jena.tdb.sys.Names ;
public class Stats
{
static Item ZERO = Item.createNode(NodeFactoryExtra.intToNode(0)) ;
/** Write statistics */
- static public void write(String filename, StatsCollector stats)
+ static public void write(String filename, StatsResults stats)
{
- write(filename, stats.getPredicates(), stats.getCount()) ;
+ write(filename, stats.getPredicates(), stats.getTypes(), stats.getCount()) ;
}
/** Write statistics */
- static public void write(OutputStream output, StatsCollector stats)
+ static public void write(OutputStream output, StatsResults stats)
{
- write(output, stats.getPredicates(), stats.getCount()) ;
+ write(output, stats.getPredicates(), stats.getTypes(), stats.getCount()) ;
}
- /** Write statistics */
- static public void write(DatasetGraphTDB dsg, StatsCollectorNodeId statsById)
- {
- long statsTotal = statsById.getCount() ;
- Map<Node, Integer> stats = statsById.asNodeStats(dsg.getTripleTable().getNodeTupleTable().getNodeTable()) ;
- Item item = format(stats, statsTotal) ;
- String filename = dsg.getLocation().getPath(Names.optStats) ;
- write(filename, stats, statsTotal) ;
- }
-
- static private void write(String filename, Map<Node, Integer> stats, long statsTotal)
+ static private void write(String filename, Map<Node, Integer> predicateStats, Map<Node, Integer> typeStats, long statsTotal)
{
// Write out the stats
try {
OutputStream statsOut = new FileOutputStream(filename) ;
- write(statsOut, stats, statsTotal) ;
+ write(statsOut, predicateStats, typeStats, statsTotal) ;
statsOut.close() ;
} catch (IOException ex)
{ Log.warn(Stats.class, "Problem when writing stats file", ex) ; }
}
- static private void write(OutputStream output, Map<Node, Integer> stats, long statsTotal)
+ static private void write(OutputStream output, Map<Node, Integer> predicateStats, Map<Node, Integer> typeStats, long statsTotal)
{
- Item item = format(stats, statsTotal) ;
+ Item item = format(predicateStats, typeStats, statsTotal) ;
ItemWriter.write(output, item) ;
}
@@ -107,78 +90,17 @@ public class Stats
return stats ;
}
- /** Gather statistics - faster for TDB */
- public static StatsCollector gatherTDB(GraphTDB graph)
- {
- long count = 0 ;
- Map<NodeId, Integer> predicateIds = new HashMap<NodeId, Integer>(1000) ;
-
- TupleIndex index = graph.getNodeTupleTable().getTupleTable().getIndex(0) ;
- if ( ! index.getName().equals("SPO") &&
- ! index.getName().equals("GSPO") )
- Log.warn(StatsCollector.class, "May not be the right index: "+index.getName()+" mapping="+index.getColumnMap().getLabel()) ;
- boolean quads = (index.getTupleLength()==4) ;
-
- Iterator<Tuple<NodeId>> iter = graph.getNodeTupleTable().findAll() ;
- StatsCollectorNodeId collector = new StatsCollectorNodeId() ;
-
- for ( ; iter.hasNext() ; )
- {
- Tuple<NodeId> tuple = iter.next();
- count++ ;
- if ( quads )
- collector.record(tuple.get(0), tuple.get(1), tuple.get(2), tuple.get(3)) ;
- else
- collector.record(null, tuple.get(0), tuple.get(1), tuple.get(2)) ;
- }
-
- Map<Node, Integer> predicates = collector.asNodeStats(graph.getNodeTupleTable().getNodeTable()) ;
- return new StatsCollector(count, predicates) ;
- }
-
- private static Item statsOutput(NodeTable nodeTable, Map<NodeId, Integer> predicateIds, long total)
- {
- Map<Node, Integer> predicates = new HashMap<Node, Integer>(1000) ;
- for ( NodeId p : predicateIds.keySet() )
- {
- Node n = nodeTable.getNodeForNodeId(p) ;
-
- // Skip these - they just clog things up!
- if ( n.getURI().startsWith("http://www.w3.org/1999/02/22-rdf-syntax-ns#_") )
- continue ;
-
- predicates.put(n, predicateIds.get(p)) ;
- }
-
- return format(predicates, total) ;
- }
-
- public static Item format(StatsCollector stats)
+ public static Item format(StatsResults stats)
{
- return format(stats.getPredicates(), stats.getCount()) ;
+ return format(stats.getPredicates(), stats.getTypes(), stats.getCount()) ;
}
- /*
- *
- // Skip these - they just clog things up!
- if ( n.getURI().startsWith("http://www.w3.org/1999/02/22-rdf-syntax-ns#_") )
- continue ;
-
- */
-
- private static Item format(Map<Node, Integer> predicates, long count)
+ private static Item format(Map<Node, Integer> predicates, Map<Node, Integer> types, long count)
{
Item stats = Item.createList() ;
ItemList statsList = stats.getList() ;
statsList.add("stats") ;
-// System.out.printf("Triples %d\n", count) ;
-// System.out.println("NodeIds") ;
-// for ( NodeId p : predicateIds.keySet() )
-// System.out.printf("%s : %d\n",p, predicateIds.get(p) ) ;
-
-// System.out.println("Nodes") ;
-
Item meta = createTagged(StatsMatcher.META) ;
addPair(meta.getList(), "timestamp", NodeFactoryExtra.nowAsDateTime()) ;
addPair(meta.getList(), "run@", Utils.nowAsString()) ;
@@ -186,6 +108,12 @@ public class Stats
addPair(meta.getList(), StatsMatcher.COUNT, NodeFactoryExtra.intToNode((int)count)) ;
statsList.add(meta) ;
+ for ( Entry<Node, Integer> entry : types.entrySet() )
+ {
+ Node type = entry.getKey() ;
+ addTypeTriple(statsList, type, NodeFactoryExtra.intToNode(entry.getValue()) ) ;
+ }
+
for ( Entry<Node, Integer> entry : predicates.entrySet() )
{
Node node = entry.getKey() ;
@@ -200,4 +128,13 @@ public class Stats
return stats ;
}
+
+ private static void addTypeTriple(ItemList statsList, Node type, Node intCount)
+ {
+ ItemList triple = new ItemList() ;
+ triple.add("VAR") ;
+ triple.add(NodeConst.nodeRDFType) ;
+ triple.add(type) ;
+ addPair(statsList, Item.createList(triple), Item.createNode(intCount)) ;
+ }
}
Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollector.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollector.java?rev=1461713&r1=1461712&r2=1461713&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollector.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollector.java Wed Mar 27 17:09:44 2013
@@ -21,14 +21,16 @@ package com.hp.hpl.jena.tdb.solver.stats
import java.util.Map ;
import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.sparql.graph.NodeConst ;
/** Statistics collector, general purpose, uses Nodes */
public class StatsCollector extends StatsCollectorBase<Node>
{
- public StatsCollector() { super() ; }
-
- public StatsCollector(long count, Map<Node, Integer> predicates)
+ public StatsCollector() { super(NodeConst.nodeRDFType) ; }
+
+ @Override
+ protected Map<Node, Integer> convert(Map<Node, Integer> map)
{
- super(count, predicates) ;
+ return map ;
}
}
Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollectorBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollectorBase.java?rev=1461713&r1=1461712&r2=1461713&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollectorBase.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollectorBase.java Wed Mar 27 17:09:44 2013
@@ -22,38 +22,35 @@ package com.hp.hpl.jena.tdb.solver.stats
import java.util.HashMap ;
import java.util.Map ;
+import com.hp.hpl.jena.graph.Node ;
+
import org.apache.jena.atlas.lib.MapUtils ;
/** Statistics collector, general purpose */
-public class StatsCollectorBase<T>
+abstract class StatsCollectorBase<T>
{
private long count = 0 ;
private Map<T, Integer> predicates = new HashMap<T, Integer>(10000) ;
+ private Map<T, Integer> types = new HashMap<T, Integer>(10000) ;
+ private T typeTrigger ;
- protected StatsCollectorBase(long count, Map<T, Integer> predicates)
- {
- this.count = count ;
- this.predicates = predicates ;
- }
-
- public StatsCollectorBase()
+ protected StatsCollectorBase(T typeTrigger)
{
- this(0, new HashMap<T, Integer>(10000)) ;
+ this.typeTrigger = typeTrigger ;
}
public void record(T g, T s, T p, T o)
{
count++ ;
MapUtils.increment(predicates, p) ;
+ if ( typeTrigger != null && typeTrigger.equals(p) )
+ MapUtils.increment(types, o) ;
}
- public long getCount()
- {
- return count ;
- }
-
- public Map<T, Integer> getPredicates()
+ protected abstract Map<Node, Integer> convert(Map<T, Integer> map) ;
+
+ public StatsResults results()
{
- return predicates ;
+ return new StatsResults(convert(predicates), convert(types), count) ;
}
}
Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollectorNodeId.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollectorNodeId.java?rev=1461713&r1=1461712&r2=1461713&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollectorNodeId.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsCollectorNodeId.java Wed Mar 27 17:09:44 2013
@@ -22,21 +22,35 @@ import java.util.HashMap ;
import java.util.Map ;
import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.sparql.graph.NodeConst ;
import com.hp.hpl.jena.tdb.nodetable.NodeTable ;
import com.hp.hpl.jena.tdb.store.NodeId ;
/** Statistics collector, aggregates based on NodeId */
public class StatsCollectorNodeId extends StatsCollectorBase<NodeId>
{
- public Map<Node, Integer> asNodeStats(NodeTable nodeTable)
+ private NodeTable nodeTable ;
+
+ public StatsCollectorNodeId(NodeTable nodeTable)
{
- Map<NodeId, Integer> predicateIds = super.getPredicates() ;
- Map<Node, Integer> predicates2 = new HashMap<Node, Integer>(1000) ;
- for ( NodeId p : predicateIds.keySet() )
+ super(findRDFType(nodeTable)) ;
+ this.nodeTable = nodeTable ;
+ }
+
+ private static NodeId findRDFType(NodeTable nodeTable2)
+ {
+ return nodeTable2.getAllocateNodeId(NodeConst.nodeRDFType) ;
+ }
+
+ @Override
+ protected Map<Node, Integer> convert(Map<NodeId, Integer> stats)
+ {
+ Map<Node, Integer> statsNodes = new HashMap<Node, Integer>(1000) ;
+ for ( NodeId p : stats.keySet() )
{
Node n = nodeTable.getNodeForNodeId(p) ;
- predicates2.put(n, predicateIds.get(p)) ;
+ statsNodes.put(n, stats.get(p)) ;
}
- return predicates2 ;
+ return statsNodes ;
}
}
Added: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsResults.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsResults.java?rev=1461713&view=auto
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsResults.java (added)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/solver/stats/StatsResults.java Wed Mar 27 17:09:44 2013
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.tdb.solver.stats;
+
+import java.util.Map ;
+
+import com.hp.hpl.jena.graph.Node ;
+
+/** Statistics collector */
+public class StatsResults
+{
+ private final Map<Node, Integer> predicates ;
+ private final Map<Node, Integer> types ;
+ private final long count ;
+
+ StatsResults(Map<Node, Integer> predicates, Map<Node, Integer> types, long count)
+ {
+ this.count = count ;
+ this.predicates = predicates ;
+ this.types = types ;
+ }
+
+ public Map<Node, Integer> getPredicates()
+ {
+ return predicates ;
+ }
+
+ public Map<Node, Integer> getTypes()
+ {
+ return types ;
+ }
+
+ public long getCount()
+ {
+ return count ;
+ }
+}
Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader/BulkLoader.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader/BulkLoader.java?rev=1461713&r1=1461712&r2=1461713&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader/BulkLoader.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader/BulkLoader.java Wed Mar 27 17:09:44 2013
@@ -284,7 +284,7 @@ public class BulkLoader
if ( ! dsg.getLocation().isMem() && startedEmpty )
{
String filename = dsg.getLocation().getPath(Names.optStats) ;
- Stats.write(filename, stats) ;
+ Stats.write(filename, stats.results()) ;
}
forceSync(dsg) ;
}
@@ -350,7 +350,7 @@ public class BulkLoader
if ( ! dsg.getLocation().isMem() && startedEmpty )
{
String filename = dsg.getLocation().getPath(Names.optStats) ;
- Stats.write(filename, stats) ;
+ Stats.write(filename, stats.results()) ;
}
forceSync(dsg) ;
}
Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java?rev=1461713&r1=1461712&r2=1461713&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java Wed Mar 27 17:09:44 2013
@@ -57,6 +57,7 @@ import com.hp.hpl.jena.tdb.store.Dataset
import com.hp.hpl.jena.tdb.store.NodeId ;
import com.hp.hpl.jena.tdb.store.bulkloader.BulkLoader ;
import com.hp.hpl.jena.tdb.store.bulkloader.BulkStreamRDF ;
+import com.hp.hpl.jena.tdb.sys.Names ;
/** Build node table - write triples/quads as text file */
public class CmdNodeTableBuilder extends CmdGeneral
@@ -169,7 +170,7 @@ public class CmdNodeTableBuilder extends
// See Stats class.
if ( ! location.isMem() )
- Stats.write(dsg, sink.getCollector()) ;
+ Stats.write(dsg.getLocation().getPath(Names.optStats), sink.getCollector().results()) ;
// ---- Monitor
long time = monitor.finish() ;
@@ -198,7 +199,7 @@ public class CmdNodeTableBuilder extends
this.nodeTable = ntt.getNodeTable() ;
this.writerTriples = new WriteRows(outputTriples, 3, 20000) ;
this.writerQuads = new WriteRows(outputQuads, 4, 20000) ;
- this.stats = new StatsCollectorNodeId() ;
+ this.stats = new StatsCollectorNodeId(nodeTable) ;
}
@Override
Modified: jena/trunk/jena-tdb/src/main/java/tdb/cmdline/CmdTDBGraph.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/tdb/cmdline/CmdTDBGraph.java?rev=1461713&r1=1461712&r2=1461713&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/tdb/cmdline/CmdTDBGraph.java (original)
+++ jena/trunk/jena-tdb/src/main/java/tdb/cmdline/CmdTDBGraph.java Wed Mar 27 17:09:44 2013
@@ -21,6 +21,8 @@ package tdb.cmdline;
import arq.cmd.CmdException ;
import arq.cmdline.ArgDecl ;
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.graph.NodeFactory ;
import com.hp.hpl.jena.query.Dataset ;
import com.hp.hpl.jena.rdf.model.Model ;
import com.hp.hpl.jena.sparql.util.Utils ;
@@ -60,6 +62,8 @@ public abstract class CmdTDBGraph extend
return ds.getDefaultModel() ;
}
+ public Node getGraphName() { return graphName == null ? null : NodeFactory.createURI(graphName) ; }
+
protected GraphTDB getGraph()
{
if ( graphName != null )
Modified: jena/trunk/jena-tdb/src/main/java/tdb/tdbconfig.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/tdb/tdbconfig.java?rev=1461713&r1=1461712&r2=1461713&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/tdb/tdbconfig.java (original)
+++ jena/trunk/jena-tdb/src/main/java/tdb/tdbconfig.java Wed Mar 27 17:09:44 2013
@@ -29,6 +29,7 @@ import tdb.cmdline.CmdTDBGraph ;
import arq.cmdline.CmdARQ ;
import arq.cmdline.ModVersion ;
+import com.hp.hpl.jena.graph.Node ;
import com.hp.hpl.jena.shared.PrefixMapping ;
import com.hp.hpl.jena.sparql.core.DatasetPrefixStorage ;
import com.hp.hpl.jena.sparql.util.Utils ;
@@ -37,8 +38,8 @@ import com.hp.hpl.jena.tdb.base.file.Fil
import com.hp.hpl.jena.tdb.base.file.Location ;
import com.hp.hpl.jena.tdb.base.objectfile.StringFile ;
import com.hp.hpl.jena.tdb.solver.stats.Stats ;
-import com.hp.hpl.jena.tdb.solver.stats.StatsCollector ;
-import com.hp.hpl.jena.tdb.store.GraphTDB ;
+import com.hp.hpl.jena.tdb.solver.stats.StatsResults ;
+import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
import com.hp.hpl.jena.tdb.sys.DatasetControlNone ;
import com.hp.hpl.jena.tdb.sys.SetupTDB ;
@@ -171,9 +172,10 @@ public class tdbconfig extends CmdSub
@Override
protected void exec()
{
- GraphTDB graph = getGraph() ;
- StatsCollector stats = Stats.gatherTDB(graph) ;
- Stats.write(System.out, stats) ;
+ DatasetGraphTDB dsg = getDatasetGraphTDB() ;
+ Node gn = getGraphName() ;
+ StatsResults results = tdbstats.stats(dsg, gn) ;
+ Stats.write(System.out, results) ;
}
@Override
Modified: jena/trunk/jena-tdb/src/main/java/tdb/tdbstats.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/tdb/tdbstats.java?rev=1461713&r1=1461712&r2=1461713&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/tdb/tdbstats.java (original)
+++ jena/trunk/jena-tdb/src/main/java/tdb/tdbstats.java Wed Mar 27 17:09:44 2013
@@ -18,13 +18,19 @@
package tdb;
+import java.util.Iterator ;
+
+import org.apache.jena.atlas.lib.Tuple ;
import tdb.cmdline.CmdTDB ;
import tdb.cmdline.CmdTDBGraph ;
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.tdb.nodetable.NodeTable ;
import com.hp.hpl.jena.tdb.solver.stats.Stats ;
-import com.hp.hpl.jena.tdb.solver.stats.StatsCollector ;
-import com.hp.hpl.jena.tdb.store.GraphTDB ;
-
+import com.hp.hpl.jena.tdb.solver.stats.StatsCollectorNodeId ;
+import com.hp.hpl.jena.tdb.solver.stats.StatsResults ;
+import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
+import com.hp.hpl.jena.tdb.store.NodeId ;
public class tdbstats extends CmdTDBGraph
{
@@ -45,12 +51,43 @@ public class tdbstats extends CmdTDBGrap
{
return null ;
}
+
+ public static StatsResults stats(DatasetGraphTDB dsg, Node gn)
+ {
+ NodeTable nt = dsg.getTripleTable().getNodeTupleTable().getNodeTable() ;
+ StatsCollectorNodeId stats = new StatsCollectorNodeId(nt) ;
+
+ if ( gn == null )
+ {
+ Iterator<Tuple<NodeId>> iter = dsg.getTripleTable().getNodeTupleTable().findAll() ;
+ for ( ; iter.hasNext(); )
+ {
+ Tuple<NodeId> t = iter.next() ;
+ stats.record(null, t.get(0), t.get(1), t.get(2)) ;
+ }
+ }
+ else
+ {
+ NodeId gnid = nt.getNodeIdForNode(gn) ;
+ if ( gnid == null )
+ {}
+ Iterator<Tuple<NodeId>> iter = dsg.getQuadTable().getNodeTupleTable().find(gnid, null, null, null) ;
+
+ for ( ; iter.hasNext(); )
+ {
+ Tuple<NodeId> t = iter.next() ;
+ stats.record(t.get(0), t.get(1), t.get(2), t.get(3)) ;
+ }
+ }
+ return stats.results() ;
+ }
@Override
protected void exec()
{
- GraphTDB graph = getGraph() ;
- StatsCollector stats = Stats.gatherTDB(graph) ;
- Stats.write(System.out, stats) ;
+ DatasetGraphTDB dsg = getDatasetGraphTDB() ;
+ Node gn = getGraphName() ;
+ StatsResults results = stats(dsg, gn) ;
+ Stats.write(System.out, results) ;
}
}