Skip to content

Commit babd10b

Browse files
committed
GH-5294 add test
1 parent 782ffd8 commit babd10b

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

core/sail/memory/src/test/java/org/eclipse/rdf4j/sail/memory/MemoryStoreConnectionTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,47 @@
1010
*******************************************************************************/
1111
package org.eclipse.rdf4j.sail.memory;
1212

13+
import static org.assertj.core.api.Assertions.assertThat;
14+
1315
import java.io.File;
1416

17+
import org.eclipse.rdf4j.common.transaction.IsolationLevels;
18+
import org.eclipse.rdf4j.model.IRI;
19+
import org.eclipse.rdf4j.model.vocabulary.RDF;
1520
import org.eclipse.rdf4j.repository.Repository;
1621
import org.eclipse.rdf4j.repository.sail.SailRepository;
1722
import org.eclipse.rdf4j.testsuite.repository.RepositoryConnectionTest;
23+
import org.junit.jupiter.api.Test;
1824

1925
public class MemoryStoreConnectionTest extends RepositoryConnectionTest {
2026
@Override
2127
protected Repository createRepository(File dataDir) {
2228
return new SailRepository(new MemoryStore());
2329
}
30+
31+
@Test
32+
public void reallyBigUpdateToTriggerPotentialStackOverflowTest() {
33+
setupTest(IsolationLevels.NONE);
34+
35+
IRI g1 = vf.createIRI("urn:test:g1");
36+
testCon.begin();
37+
testCon.add(vf.createBNode(), RDF.TYPE, g1);
38+
testCon.commit();
39+
40+
testCon.begin();
41+
42+
StringBuilder bigUpdate = new StringBuilder();
43+
bigUpdate.append("DELETE { ?s ?p ?o } INSERT{\n");
44+
45+
for (int i = 0; i < 20000; i++) {
46+
bigUpdate.append(" [] <urn:test:prop> \"").append(i).append("\".\n");
47+
}
48+
bigUpdate.append("\n} WHERE { ?s ?p ?o }");
49+
50+
testCon.prepareUpdate(bigUpdate.toString()).execute();
51+
52+
long size = testCon.size();
53+
assertThat(size).isEqualTo(20000);
54+
testCon.commit();
55+
}
2456
}

0 commit comments

Comments
 (0)