@Override public SchemaRecord clone() { List<DynamicRecord> list = new ArrayList<>( records.size() ); for ( DynamicRecord record : records ) { list.add( record.clone() ); } return new SchemaRecord( list ); } }
private void checkForDuplicates( SchemaRule rule, DynamicRecord record, CheckerEngine<DynamicRecord,ConsistencyReport.SchemaConsistencyReport> engine ) { DynamicRecord previousContentRecord = verifiedRulesWithRecords.put( rule, record.clone() ); if ( previousContentRecord != null ) { engine.report().duplicateRuleContent( previousContentRecord ); } }
@Override public NodeRecord clone() { NodeRecord clone = new NodeRecord( getId() ).initialize( inUse(), nextProp, dense, nextRel, labels ); clone.isLight = isLight; if ( dynamicLabelRecords.size() > 0 ) { List<DynamicRecord> clonedLabelRecords = new ArrayList<>( dynamicLabelRecords.size() ); for ( DynamicRecord labelRecord : dynamicLabelRecords ) { clonedLabelRecords.add( labelRecord.clone() ); } clone.dynamicLabelRecords = clonedLabelRecords; } clone.setSecondaryUnitId( getSecondaryUnitId() ); return clone; } }
@Override public PropertyBlock clone() { PropertyBlock result = new PropertyBlock(); if ( valueBlocks != null ) { result.valueBlocks = valueBlocks.clone(); } if ( valueRecords != null ) { for ( DynamicRecord valueRecord : valueRecords ) { result.addValueRecord( valueRecord.clone() ); } } return result; }
@Override public void checkIndexRule( StoreIndexDescriptor rule, DynamicRecord record, RecordAccess records, CheckerEngine<DynamicRecord,ConsistencyReport.SchemaConsistencyReport> engine ) { checkSchema( rule, record, records, engine ); if ( rule.canSupportUniqueConstraint() && rule.getOwningConstraint() != null ) { DynamicRecord previousObligation = constraintObligations.put( rule.getOwningConstraint(), record.clone() ); if ( previousObligation != null ) { engine.report().duplicateObligation( previousObligation ); } } }
@Override public void checkConstraintRule( ConstraintRule rule, DynamicRecord record, RecordAccess records, CheckerEngine<DynamicRecord,ConsistencyReport.SchemaConsistencyReport> engine ) { checkSchema( rule, record, records, engine ); if ( rule.getConstraintDescriptor().enforcesUniqueness() ) { DynamicRecord previousObligation = indexObligations.put( rule.getOwnedIndex(), record.clone() ); if ( previousObligation != null ) { engine.report().duplicateObligation( previousObligation ); } } } }
@Override public PropertyRecord clone() { PropertyRecord result = (PropertyRecord) new PropertyRecord( getId() ).initialize( inUse() ); result.nextProp = nextProp; result.prevProp = prevProp; result.entityId = entityId; result.entityType = entityType; System.arraycopy( blocks, 0, result.blocks, 0, blocks.length ); result.blocksCursor = blocksCursor; for ( int i = 0; i < blockRecordsCursor; i++ ) { result.blockRecords[i] = blockRecords[i].clone(); } result.blockRecordsCursor = blockRecordsCursor; result.blocksLoaded = blocksLoaded; if ( deletedRecords != null ) { for ( DynamicRecord deletedRecord : deletedRecords ) { result.addDeletedRecord( deletedRecord.clone() ); } } return result; }
@Override protected void transactionData( GraphStoreFixture.TransactionDataBuilder tx, GraphStoreFixture.IdGenerator next ) { long nodeId = ((long[]) getRightArray( readFullByteArrayFromHeavyRecords( chain, ARRAY ) ).asObject())[0]; NodeRecord before = inUse( new NodeRecord( nodeId, false, -1, -1 ) ); NodeRecord after = inUse( new NodeRecord( nodeId, false, -1, -1 ) ); DynamicRecord record1 = chain.get( 0 ).clone(); DynamicRecord record2 = chain.get( 1 ).clone(); DynamicRecord record3 = chain.get( 2 ).clone(); record3.setNextBlock( record2.getId() ); before.setLabelField( dynamicPointer( chain ), chain ); after.setLabelField( dynamicPointer( chain ), asList( record1, record2, record3 ) ); tx.update( before, after ); } } );
@Override protected void transactionData( GraphStoreFixture.TransactionDataBuilder tx, GraphStoreFixture.IdGenerator next ) { int id = (int) next.schema(); DynamicRecord recordBefore = new DynamicRecord( id ); DynamicRecord recordAfter = recordBefore.clone(); StoreIndexDescriptor index = forSchema( forLabel( labelId, propertyKeyIds ), DESCRIPTOR ).withId( id ); Collection<DynamicRecord> records = serializeRule( index, recordAfter ); tx.createSchema( singleton( recordBefore ), records, index ); } } );
@Override protected void transactionData( GraphStoreFixture.TransactionDataBuilder tx, GraphStoreFixture.IdGenerator next ) { DynamicRecord schema = new DynamicRecord( next.schema() ); DynamicRecord schemaBefore = schema.clone(); schema.setNextBlock( next.schema() ); // Point to a record that isn't in use. StoreIndexDescriptor rule = indexRule( schema.getId(), label1, key1, DESCRIPTOR ); schema.setData( SchemaRuleSerialization.serialize( rule ) ); tx.createSchema( asList( schemaBefore ), asList( schema ), rule ); } } );
@Override protected void transactionData( GraphStoreFixture.TransactionDataBuilder tx, GraphStoreFixture.IdGenerator next ) { int ruleId1 = (int) next.schema(); int ruleId2 = (int) next.schema(); int labelId = next.label(); int propertyKeyId = next.propertyKey(); DynamicRecord record1 = new DynamicRecord( ruleId1 ); DynamicRecord record2 = new DynamicRecord( ruleId2 ); DynamicRecord record1Before = record1.clone(); DynamicRecord record2Before = record2.clone(); StoreIndexDescriptor rule1 = constraintIndexRule( ruleId1, labelId, propertyKeyId, DESCRIPTOR, ruleId2 ); ConstraintRule rule2 = uniquenessConstraintRule( ruleId2, labelId, propertyKeyId, ruleId2 ); Collection<DynamicRecord> records1 = serializeRule( rule1, record1 ); Collection<DynamicRecord> records2 = serializeRule( rule2, record2 ); assertEquals( asList( record1 ), records1 ); assertEquals( asList( record2 ), records2 ); tx.nodeLabel( labelId, "label" ); tx.propertyKey( propertyKeyId, "property" ); tx.createSchema( asList(record1Before), records1, rule1 ); tx.createSchema( asList(record2Before), records2, rule2 ); } } );
@Override protected void transactionData( GraphStoreFixture.TransactionDataBuilder tx, GraphStoreFixture.IdGenerator next ) { int ruleId1 = (int) next.schema(); int ruleId2 = (int) next.schema(); int labelId = next.label(); int propertyKeyId = next.propertyKey(); DynamicRecord record1 = new DynamicRecord( ruleId1 ); DynamicRecord record2 = new DynamicRecord( ruleId2 ); DynamicRecord record1Before = record1.clone(); DynamicRecord record2Before = record2.clone(); StoreIndexDescriptor rule1 = constraintIndexRule( ruleId1, labelId, propertyKeyId, DESCRIPTOR, ruleId1 ); StoreIndexDescriptor rule2 = constraintIndexRule( ruleId2, labelId, propertyKeyId, DESCRIPTOR, ruleId1 ); Collection<DynamicRecord> records1 = serializeRule( rule1, record1 ); Collection<DynamicRecord> records2 = serializeRule( rule2, record2 ); assertEquals( asList( record1 ), records1 ); assertEquals( asList( record2 ), records2 ); tx.nodeLabel( labelId, "label" ); tx.propertyKey( propertyKeyId, "property" ); tx.createSchema( asList(record1Before), records1, rule1 ); tx.createSchema( asList(record2Before), records2, rule2 ); } } );
@Override public SchemaRecord clone() { List<DynamicRecord> list = new ArrayList<>( records.size() ); for ( DynamicRecord record : records ) { list.add( record.clone() ); } return new SchemaRecord( list ); } }
@Override public NodeRecord clone() { NodeRecord clone = new NodeRecord( getId() ).initialize( inUse(), nextProp, dense, nextRel, labels ); clone.isLight = isLight; if ( dynamicLabelRecords.size() > 0 ) { List<DynamicRecord> clonedLabelRecords = new ArrayList<>( dynamicLabelRecords.size() ); for ( DynamicRecord labelRecord : dynamicLabelRecords ) { clonedLabelRecords.add( labelRecord.clone() ); } clone.dynamicLabelRecords = clonedLabelRecords; } clone.setSecondaryUnitId( getSecondaryUnitId() ); return clone; } }
@Override public PropertyBlock clone() { PropertyBlock result = new PropertyBlock(); if ( valueBlocks != null ) { result.valueBlocks = valueBlocks.clone(); } if ( valueRecords != null ) { for ( DynamicRecord valueRecord : valueRecords ) { result.addValueRecord( valueRecord.clone() ); } } return result; }
@Override protected void transactionData( GraphStoreFixture.TransactionDataBuilder tx, GraphStoreFixture.IdGenerator next ) { long nodeId = ((long[]) getRightArray( readFullByteArrayFromHeavyRecords( chain, ARRAY ) ))[0]; NodeRecord before = inUse( new NodeRecord( nodeId, false, -1, -1 ) ); NodeRecord after = inUse( new NodeRecord( nodeId, false, -1, -1 ) ); DynamicRecord record1 = chain.get( 0 ).clone(); DynamicRecord record2 = chain.get( 1 ).clone(); DynamicRecord record3 = chain.get( 2 ).clone(); record3.setNextBlock( record2.getId() ); before.setLabelField( dynamicPointer( chain ), chain ); after.setLabelField( dynamicPointer( chain ), asList( record1, record2, record3 ) ); tx.update( before, after ); } } );
@Override protected void transactionData( GraphStoreFixture.TransactionDataBuilder tx, GraphStoreFixture.IdGenerator next ) { int id = (int) next.schema(); DynamicRecord recordBefore = new DynamicRecord( id ); DynamicRecord recordAfter = recordBefore.clone(); IndexRule rule = IndexRule.indexRule( id, labelId, propertyKeyId, DESCRIPTOR ); Collection<DynamicRecord> records = serializeRule( rule, recordAfter ); tx.createSchema( singleton( recordBefore ), records, rule ); } } );
@Override protected void transactionData( GraphStoreFixture.TransactionDataBuilder tx, GraphStoreFixture.IdGenerator next ) { int ruleId1 = (int) next.schema(); int ruleId2 = (int) next.schema(); DynamicRecord record1 = new DynamicRecord( ruleId1 ); DynamicRecord record2 = new DynamicRecord( ruleId2 ); DynamicRecord record1Before = record1.clone(); DynamicRecord record2Before = record2.clone(); IndexRule rule1 = IndexRule.constraintIndexRule( ruleId1, labelId, propertyKeyId, DESCRIPTOR, (long) ruleId2 ); UniquePropertyConstraintRule rule2 = UniquePropertyConstraintRule.uniquenessConstraintRule( ruleId2, labelId, propertyKeyId, ruleId1 ); Collection<DynamicRecord> records1 = serializeRule( rule1, record1 ); Collection<DynamicRecord> records2 = serializeRule( rule2, record2 ); assertEquals( asList( record1 ), records1 ); assertEquals( asList( record2 ), records2 ); tx.createSchema( asList( record1Before ), records1, rule1 ); tx.createSchema( asList( record2Before ), records2, rule2 ); } } );
@Override protected void transactionData( GraphStoreFixture.TransactionDataBuilder tx, GraphStoreFixture.IdGenerator next ) { DynamicRecord schema = new DynamicRecord( next.schema() ); DynamicRecord schemaBefore = schema.clone(); schema.setNextBlock( next.schema() ); // Point to a record that isn't in use. IndexRule rule = IndexRule.indexRule( schema.getId(), label1, key, DESCRIPTOR ); schema.setData( new RecordSerializer().append( rule ).serialize() ); tx.createSchema( asList( schemaBefore ), asList( schema ), rule ); } } );
@Override protected void transactionData( GraphStoreFixture.TransactionDataBuilder tx, GraphStoreFixture.IdGenerator next ) { int ruleId1 = (int) next.schema(); int ruleId2 = (int) next.schema(); int labelId = next.label(); int propertyKeyId = next.propertyKey(); DynamicRecord record1 = new DynamicRecord( ruleId1 ); DynamicRecord record2 = new DynamicRecord( ruleId2 ); DynamicRecord record1Before = record1.clone(); DynamicRecord record2Before = record2.clone(); IndexRule rule1 = IndexRule.constraintIndexRule( ruleId1, labelId, propertyKeyId, DESCRIPTOR, (long) ruleId1 ); IndexRule rule2 = IndexRule.constraintIndexRule( ruleId2, labelId, propertyKeyId, DESCRIPTOR, (long) ruleId1 ); Collection<DynamicRecord> records1 = serializeRule( rule1, record1 ); Collection<DynamicRecord> records2 = serializeRule( rule2, record2 ); assertEquals( asList( record1 ), records1 ); assertEquals( asList( record2 ), records2 ); tx.nodeLabel( labelId, "label" ); tx.propertyKey( propertyKeyId, "property" ); tx.createSchema( asList(record1Before), records1, rule1 ); tx.createSchema( asList(record2Before), records2, rule2 ); } } );