use of org.neo4j.graphdb.schema.IndexDefinition in project neo4j by neo4j.
the class SchemaAcceptanceTest method awaitingAllIndexesComingOnlineWorks.
@Test
public void awaitingAllIndexesComingOnlineWorks() {
// GIVEN
// WHEN
IndexDefinition index = createIndex(db, label, propertyKey);
createIndex(db, label, "other_property");
// PASS
waitForIndex(db, index);
try (Transaction tx = db.beginTx()) {
db.schema().awaitIndexesOnline(1L, TimeUnit.MINUTES);
// THEN
assertEquals(Schema.IndexState.ONLINE, db.schema().getIndexState(index));
}
}
use of org.neo4j.graphdb.schema.IndexDefinition in project neo4j by neo4j.
the class SchemaAcceptanceTest method droppingAnUnexistingIndexShouldGiveHelpfulExceptionInSameTransaction.
@Test
public void droppingAnUnexistingIndexShouldGiveHelpfulExceptionInSameTransaction() throws Exception {
// GIVEN
IndexDefinition index = createIndex(db, label, propertyKey);
// WHEN
try (Transaction tx = db.beginTx()) {
index.drop();
try {
index.drop();
fail("Should not be able to drop index twice");
} catch (ConstraintViolationException e) {
assertThat(e.getMessage(), containsString("No index was found for :MY_LABEL(my_property_key)."));
}
tx.success();
}
// THEN
assertThat("Index should have been deleted", getIndexes(db, label), not(contains(index)));
}
use of org.neo4j.graphdb.schema.IndexDefinition in project neo4j by neo4j.
the class IndexingAcceptanceTest method shouldConsiderNodesChangedInSameTxInIndexPrefixSearch.
@Test
public void shouldConsiderNodesChangedInSameTxInIndexPrefixSearch() throws SchemaRuleNotFoundException, IndexNotFoundKernelException, IndexNotApplicableKernelException {
// GIVEN
GraphDatabaseService db = dbRule.getGraphDatabaseAPI();
IndexDefinition index = Neo4jMatchers.createIndex(db, LABEL1, "name");
createNodes(db, LABEL1, "name", "Mattias");
PrimitiveLongSet toChangeToMatch = createNodes(db, LABEL1, "name", "Mats");
PrimitiveLongSet toChangeToNotMatch = createNodes(db, LABEL1, "name", "Karlsson");
PrimitiveLongSet expected = createNodes(db, LABEL1, "name", "Karl");
String prefix = "Karl";
// WHEN
PrimitiveLongSet found = Primitive.longSet();
try (Transaction tx = db.beginTx()) {
PrimitiveLongIterator toMatching = toChangeToMatch.iterator();
while (toMatching.hasNext()) {
long id = toMatching.next();
db.getNodeById(id).setProperty("name", prefix + "X" + id);
expected.add(id);
}
PrimitiveLongIterator toNotMatching = toChangeToNotMatch.iterator();
while (toNotMatching.hasNext()) {
long id = toNotMatching.next();
db.getNodeById(id).setProperty("name", "X" + id);
expected.remove(id);
}
Statement statement = getStatement((GraphDatabaseAPI) db);
ReadOperations readOperations = statement.readOperations();
NewIndexDescriptor descriptor = indexDescriptor(readOperations, index);
int propertyKeyId = descriptor.schema().getPropertyId();
found.addAll(readOperations.indexQuery(descriptor, stringPrefix(propertyKeyId, prefix)));
}
// THEN
assertThat(found, equalTo(expected));
}
use of org.neo4j.graphdb.schema.IndexDefinition in project neo4j by neo4j.
the class IndexingAcceptanceTest method shouldIncludeNodesCreatedInSameTxInIndexSeekByPrefix.
@Test
public void shouldIncludeNodesCreatedInSameTxInIndexSeekByPrefix() throws SchemaRuleNotFoundException, IndexNotFoundKernelException, IndexNotApplicableKernelException {
// GIVEN
GraphDatabaseService db = dbRule.getGraphDatabaseAPI();
IndexDefinition index = Neo4jMatchers.createIndex(db, LABEL1, "name");
createNodes(db, LABEL1, "name", "Mattias", "Mats");
PrimitiveLongSet expected = createNodes(db, LABEL1, "name", "Carl", "Carlsson");
// WHEN
PrimitiveLongSet found = Primitive.longSet();
try (Transaction tx = db.beginTx()) {
expected.add(createNode(db, map("name", "Carlchen"), LABEL1).getId());
createNode(db, map("name", "Karla"), LABEL1);
Statement statement = getStatement((GraphDatabaseAPI) db);
ReadOperations readOperations = statement.readOperations();
NewIndexDescriptor descriptor = indexDescriptor(readOperations, index);
int propertyKeyId = descriptor.schema().getPropertyId();
found.addAll(readOperations.indexQuery(descriptor, stringPrefix(propertyKeyId, "Carl")));
}
// THEN
assertThat(found, equalTo(expected));
}
use of org.neo4j.graphdb.schema.IndexDefinition in project neo4j by neo4j.
the class SchemaWithPECAcceptanceTest method createUniquenessConstraint.
private ConstraintDefinition createUniquenessConstraint(Label label, String propertyKey) {
SchemaHelper.createUniquenessConstraint(db, label, propertyKey);
SchemaHelper.awaitIndexes(db);
InternalSchemaActions actions = mock(InternalSchemaActions.class);
IndexDefinition index = new IndexDefinitionImpl(actions, label, new String[] { propertyKey }, true);
return new UniquenessConstraintDefinition(actions, index);
}
Aggregations