Repository: jena Updated Branches: refs/heads/master 592ebd4d7 -> c6e13b7a4
JENA-1482: tests for null NodeIds at the TDB level Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/a850230c Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/a850230c Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/a850230c Branch: refs/heads/master Commit: a850230c6b883adcf469e20b6ae761a536c29379 Parents: 592ebd4 Author: Andy Seaborne <a...@apache.org> Authored: Wed Feb 21 14:12:48 2018 +0000 Committer: Andy Seaborne <a...@apache.org> Committed: Wed Feb 21 15:00:25 2018 +0000 ---------------------------------------------------------------------- .../java/org/apache/jena/tdb2/solver/BindingTDB.java | 13 +++++++++---- .../java/org/apache/jena/tdb2/solver/SolverLib.java | 3 +++ .../java/org/apache/jena/tdb/solver/BindingTDB.java | 8 ++++++-- .../java/org/apache/jena/tdb/solver/SolverLib.java | 4 +++- 4 files changed, 21 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/a850230c/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/BindingTDB.java ---------------------------------------------------------------------- diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/BindingTDB.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/BindingTDB.java index 25e0534..194cb44 100644 --- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/BindingTDB.java +++ b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/BindingTDB.java @@ -26,6 +26,7 @@ import org.apache.jena.riot.out.NodeFmtLib ; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.engine.binding.BindingBase ; +import org.apache.jena.tdb2.TDBException; import org.apache.jena.tdb2.store.NodeId; import org.apache.jena.tdb2.store.nodetable.NodeTable; @@ -98,11 +99,12 @@ public class BindingTDB extends BindingBase NodeId id = idBinding.get(var) ; if ( id != null ) return id ; - - if ( parent == null ) - return null ; + // In case we are inserting known missing nodes. + if ( NodeId.isDoesNotExist(id) ) + return null ; - // Maybe in the parent. + if ( parent == null ) + return null ; if ( parent instanceof BindingTDB ) return ((BindingTDB)parent).getNodeId(var) ; return null ; @@ -120,6 +122,9 @@ public class BindingTDB extends BindingBase if ( id == null ) return null ; n = nodeTable.getNodeForNodeId(id) ; + if ( n == null ) + // But there was to put it in the BindingNodeId. + throw new TDBException("No node in NodeTable for NodeId "+id); // Update cache. cachePut(var, n) ; return n ; http://git-wip-us.apache.org/repos/asf/jena/blob/a850230c/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/SolverLib.java ---------------------------------------------------------------------- diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/SolverLib.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/SolverLib.java index 3f0cc3c..160c8be 100644 --- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/SolverLib.java +++ b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/SolverLib.java @@ -255,6 +255,9 @@ public class SolverLib // repeatedly looking up the same node in different bindings. NodeId id = nodeTable.getNodeIdForNode(n) ; // Even put in "does not exist" for a node now known not to be in the DB. + // Optional: whether to put in "known missing" + // Currently, we do. The rest of the code should work with either choice. + //if ( ! NodeId.isDoesNotExist(id) ) b.put(v, id) ; } return b ; http://git-wip-us.apache.org/repos/asf/jena/blob/a850230c/jena-tdb/src/main/java/org/apache/jena/tdb/solver/BindingTDB.java ---------------------------------------------------------------------- diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/BindingTDB.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/BindingTDB.java index 2f363ed..26a36c9 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/BindingTDB.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/BindingTDB.java @@ -99,11 +99,12 @@ public class BindingTDB extends BindingBase NodeId id = idBinding.get(var) ; if ( id != null ) return id ; + // In case we are inserting known missing nodes. + if ( NodeId.isDoesNotExist(id) ) + return null ; if ( parent == null ) return null ; - - // Maybe in the parent. if ( parent instanceof BindingTDB ) return ((BindingTDB)parent).getNodeId(var) ; return null ; @@ -120,8 +121,11 @@ public class BindingTDB extends BindingBase NodeId id = idBinding.get(var) ; if ( id == null ) return null ; + if ( NodeId.isDoesNotExist(id) ) + return null; n = nodeTable.getNodeForNodeId(id) ; if ( n == null ) + // But there was to put it in the BindingNodeId. throw new TDBException("No node in NodeTable for NodeId "+id); // Update cache. cachePut(var, n) ; http://git-wip-us.apache.org/repos/asf/jena/blob/a850230c/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java ---------------------------------------------------------------------- diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java index d9d469d..912f1e9 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java @@ -257,7 +257,9 @@ public class SolverLib // Rely on the node table cache for efficency - we will likely be // repeatedly looking up the same node in different bindings. NodeId id = nodeTable.getNodeIdForNode(n) ; - // Even put in "does not exist" for a node now known not to be in the DB. + // Optional: whether to put in "known missing" + // Currently, we do. The rest of the code should work with either choice. + //if ( ! NodeId.isDoesNotExist(id) ) b.put(v, id) ; } return b ;