use of org.neo4j.kernel.impl.store.record.ConstraintRule in project neo4j by neo4j.
the class BatchInserterImpl method createUniquenessConstraintRule.
private void createUniquenessConstraintRule(UniquenessConstraint constraint) {
// TODO: Do not create duplicate index
long indexRuleId = schemaStore.nextId();
long constraintRuleId = schemaStore.nextId();
int propertyKeyId = constraint.indexDescriptor().schema().getPropertyId();
IndexRule indexRule = IndexRule.constraintIndexRule(indexRuleId, NewIndexDescriptorFactory.uniqueForLabel(constraint.label(), propertyKeyId), this.schemaIndexProviders.getDefaultProvider().getProviderDescriptor(), constraintRuleId);
ConstraintRule constraintRule = ConstraintRule.constraintRule(constraintRuleId, ConstraintDescriptorFactory.uniqueForLabel(constraint.label(), propertyKeyId), indexRuleId);
for (DynamicRecord record : schemaStore.allocateFrom(constraintRule)) {
schemaStore.updateRecord(record);
}
schemaCache.addSchemaRule(constraintRule);
for (DynamicRecord record : schemaStore.allocateFrom(indexRule)) {
schemaStore.updateRecord(record);
}
schemaCache.addSchemaRule(indexRule);
labelsTouched = true;
flushStrategy.forceFlush();
}
use of org.neo4j.kernel.impl.store.record.ConstraintRule in project neo4j by neo4j.
the class SchemaCacheTest method shouldListConstraintsForRelationshipType.
@Test
public void shouldListConstraintsForRelationshipType() {
// Given
ConstraintRule rule1 = relPropertyExistenceConstraintRule(0, 1, 1);
ConstraintRule rule2 = relPropertyExistenceConstraintRule(0, 2, 1);
ConstraintRule rule3 = relPropertyExistenceConstraintRule(0, 1, 2);
SchemaCache cache = newSchemaCache(rule1, rule2, rule3);
// When
Set<ConstraintDescriptor> listed = asSet(cache.constraintsForRelationshipType(1));
// Then
Set<ConstraintDescriptor> expected = asSet(rule1.getConstraintDescriptor(), rule3.getConstraintDescriptor());
assertEquals(expected, listed);
}
use of org.neo4j.kernel.impl.store.record.ConstraintRule in project neo4j by neo4j.
the class SchemaCacheTest method shouldListConstraintsForSchema.
@Test
public void shouldListConstraintsForSchema() {
// Given
ConstraintRule rule1 = uniquenessConstraintRule(0, 1, 1, 0);
ConstraintRule rule2 = uniquenessConstraintRule(1, 2, 1, 0);
ConstraintRule rule3 = nodePropertyExistenceConstraintRule(2, 1, 2);
SchemaCache cache = newSchemaCache(rule1, rule2, rule3);
// When
Set<ConstraintDescriptor> listed = asSet(cache.constraintsForSchema(rule3.schema()));
// Then
assertEquals(singleton(rule3.getConstraintDescriptor()), listed);
}
use of org.neo4j.kernel.impl.store.record.ConstraintRule in project neo4j by neo4j.
the class SchemaCacheTest method shouldListConstraintsForLabel.
@Test
public void shouldListConstraintsForLabel() {
// Given
ConstraintRule rule1 = uniquenessConstraintRule(0, 1, 1, 0);
ConstraintRule rule2 = uniquenessConstraintRule(1, 2, 1, 0);
ConstraintRule rule3 = nodePropertyExistenceConstraintRule(2, 1, 2);
SchemaCache cache = newSchemaCache(rule1, rule2, rule3);
// When
Set<ConstraintDescriptor> listed = asSet(cache.constraintsForLabel(1));
// Then
Set<ConstraintDescriptor> expected = asSet(rule1.getConstraintDescriptor(), rule3.getConstraintDescriptor());
assertEquals(expected, listed);
}
use of org.neo4j.kernel.impl.store.record.ConstraintRule in project neo4j by neo4j.
the class IntegrityValidatorTest method shouldValidateUniquenessIndexes.
@Test
public void shouldValidateUniquenessIndexes() throws Exception {
// Given
NeoStores store = mock(NeoStores.class);
IndexingService indexes = mock(IndexingService.class);
IntegrityValidator validator = new IntegrityValidator(store, indexes);
UniquenessConstraintDescriptor constraint = ConstraintDescriptorFactory.uniqueForLabel(1, 1);
doThrow(new UniquePropertyValueValidationException(constraint, ConstraintValidationException.Phase.VERIFICATION, new RuntimeException())).when(indexes).validateIndex(2L);
ConstraintRule record = ConstraintRule.constraintRule(1L, constraint, 2L);
// When
try {
validator.validateSchemaRule(record);
fail("Should have thrown integrity error.");
} catch (Exception e) {
// good
}
}
Aggregations