Skip to content

Commit f65873b

Browse files
committed
wip
1 parent 4f53da1 commit f65873b

File tree

3 files changed

+32
-20
lines changed

3 files changed

+32
-20
lines changed

core/sail/base/src/main/java/org/eclipse/rdf4j/sail/base/DelegatingSailSource.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ class DelegatingSailSource implements SailSource {
3333
* @param closing if {@link #close()} should be delegated
3434
*/
3535
public DelegatingSailSource(SailSource delegate, boolean closing) {
36+
if(delegate == null) {
37+
System.out.println();
38+
}
3639
assert delegate != null;
3740
this.delegate = delegate;
3841
this.releasing = closing;

core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalInnerJoin.java

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,6 @@
1111

1212
package org.eclipse.rdf4j.sail.shacl.ast.planNodes;
1313

14-
import java.util.ArrayDeque;
15-
import java.util.LinkedHashMap;
16-
import java.util.List;
17-
import java.util.Objects;
18-
import java.util.function.Function;
19-
2014
import org.apache.commons.text.StringEscapeUtils;
2115
import org.eclipse.rdf4j.common.iteration.CloseableIteration;
2216
import org.eclipse.rdf4j.model.Resource;
@@ -31,14 +25,20 @@
3125
import org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents.ConstraintComponent;
3226
import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup;
3327

28+
import java.util.ArrayDeque;
29+
import java.util.LinkedHashMap;
30+
import java.util.List;
31+
import java.util.Objects;
32+
import java.util.function.Function;
33+
3434
/**
3535
* @author Håvard Ottestad
36-
* <p>
37-
* This inner join algorithm assumes the left iterator is unique for tuple[0], eg. no two tuples have the same
38-
* value at index 0. The right iterator is allowed to contain duplicates.
39-
* <p>
40-
* External means that this plan node can join the iterator from a plan node with an external source (Repository
41-
* or SailConnection) based on a query or a predicate.
36+
* <p>
37+
* This inner join algorithm assumes the left iterator is unique for tuple[0], eg. no two tuples have the same
38+
* value at index 0. The right iterator is allowed to contain duplicates.
39+
* <p>
40+
* External means that this plan node can join the iterator from a plan node with an external source (Repository
41+
* or SailConnection) based on a query or a predicate.
4242
*/
4343
public class BulkedExternalInnerJoin extends AbstractBulkJoinPlanNode {
4444

@@ -59,10 +59,10 @@ public class BulkedExternalInnerJoin extends AbstractBulkJoinPlanNode {
5959
private boolean printed = false;
6060

6161
public BulkedExternalInnerJoin(PlanNode leftNode, SailConnection connection, Resource[] dataGraph,
62-
SparqlFragment query,
63-
boolean skipBasedOnPreviousConnection, SailConnection previousStateConnection,
64-
Function<BindingSet, ValidationTuple> mapper, ConnectionsGroup connectionsGroup,
65-
List<StatementMatcher.Variable> vars) {
62+
SparqlFragment query,
63+
boolean skipBasedOnPreviousConnection, SailConnection previousStateConnection,
64+
Function<BindingSet, ValidationTuple> mapper, ConnectionsGroup connectionsGroup,
65+
List<StatementMatcher.Variable> vars) {
6666
super(vars);
6767
assert !skipBasedOnPreviousConnection || previousStateConnection != null;
6868

@@ -79,7 +79,7 @@ public BulkedExternalInnerJoin(PlanNode leftNode, SailConnection connection, Res
7979
}
8080

8181
public static Function<BindingSet, ValidationTuple> getMapper(String a, String c, ConstraintComponent.Scope scope,
82-
Resource[] dataGraph) {
82+
Resource[] dataGraph) {
8383
assert a.equals("a");
8484
assert c.equals("c");
8585
if (scope == ConstraintComponent.Scope.nodeShape && dataGraph.length == 0) {
@@ -159,6 +159,13 @@ public void localClose() {
159159

160160
@Override
161161
protected boolean localHasNext() {
162+
if (isClosed()) {
163+
return false;
164+
}
165+
if (Thread.currentThread().isInterrupted()) {
166+
close();
167+
return false;
168+
}
162169
calculateNext();
163170
return !joined.isEmpty();
164171
}

core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/ShutdownDuringValidationTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.eclipse.rdf4j.model.vocabulary.DCAT;
2727
import org.eclipse.rdf4j.model.vocabulary.DCTERMS;
2828
import org.eclipse.rdf4j.model.vocabulary.RDF;
29+
import org.eclipse.rdf4j.model.vocabulary.RDFS;
2930
import org.eclipse.rdf4j.repository.RepositoryException;
3031
import org.eclipse.rdf4j.repository.sail.SailRepository;
3132
import org.eclipse.rdf4j.repository.sail.SailRepositoryConnection;
@@ -128,10 +129,11 @@ public void shutdownDuringValidationTransactional(int sleepMillis) throws Interr
128129

129130
Thread thread;
130131
try (var connection = repository.getConnection()) {
132+
connection.begin();
131133
ValueFactory vf = connection.getValueFactory();
132-
BNode iri = vf.createBNode();
133-
connection.add(iri, RDF.TYPE, DCAT.DATASET);
134-
connection.add(iri, DCTERMS.ACCESS_RIGHTS, vf.createLiteral("valid"));
134+
BNode bnode = vf.createBNode();
135+
connection.add(bnode, RDF.TYPE, RDFS.RESOURCE);
136+
connection.commit();
135137
}
136138

137139
try (var connection = repository.getConnection()) {

0 commit comments

Comments
 (0)