Search in sources :

Example 11 with RelationshipTypeTokenRecord

use of org.neo4j.kernel.impl.store.record.RelationshipTypeTokenRecord in project neo4j by neo4j.

the class PhysicalLogCommandReaderV3_0_2 method readRelationshipTypeTokenRecord.

private RelationshipTypeTokenRecord readRelationshipTypeTokenRecord(int id, ReadableChannel channel) throws IOException {
    // in_use(byte)+type_blockId(int)+nr_type_records(int)
    byte inUseFlag = channel.get();
    boolean inUse = false;
    if ((inUseFlag & Record.IN_USE.byteValue()) == Record.IN_USE.byteValue()) {
        inUse = true;
    } else if (inUseFlag != Record.NOT_IN_USE.byteValue()) {
        throw new IOException("Illegal in use flag: " + inUseFlag);
    }
    RelationshipTypeTokenRecord record = new RelationshipTypeTokenRecord(id);
    record.setInUse(inUse);
    record.setNameId(channel.getInt());
    int nrTypeRecords = channel.getInt();
    for (int i = 0; i < nrTypeRecords; i++) {
        DynamicRecord dr = readDynamicRecord(channel);
        if (dr == null) {
            return null;
        }
        record.addNameRecord(dr);
    }
    return record;
}
Also used : DynamicRecord(org.neo4j.kernel.impl.store.record.DynamicRecord) RelationshipTypeTokenRecord(org.neo4j.kernel.impl.store.record.RelationshipTypeTokenRecord) IOException(java.io.IOException)

Example 12 with RelationshipTypeTokenRecord

use of org.neo4j.kernel.impl.store.record.RelationshipTypeTokenRecord in project neo4j by neo4j.

the class PhysicalLogCommandReaderV2_2_4 method visitRelationshipTypeTokenCommand.

private Command visitRelationshipTypeTokenCommand(ReadableChannel channel) throws IOException {
    // id+in_use(byte)+type_blockId(int)+nr_type_records(int)
    int id = channel.getInt();
    byte inUseFlag = channel.get();
    boolean inUse = false;
    if ((inUseFlag & Record.IN_USE.byteValue()) == Record.IN_USE.byteValue()) {
        inUse = true;
    } else if (inUseFlag != Record.NOT_IN_USE.byteValue()) {
        throw new IOException("Illegal in use flag: " + inUseFlag);
    }
    RelationshipTypeTokenRecord record = new RelationshipTypeTokenRecord(id);
    record.setInUse(inUse);
    record.setNameId(channel.getInt());
    int nrTypeRecords = channel.getInt();
    for (int i = 0; i < nrTypeRecords; i++) {
        DynamicRecord dr = readDynamicRecord(channel);
        if (dr == null) {
            return null;
        }
        record.addNameRecord(dr);
    }
    return new Command.RelationshipTypeTokenCommand(null, record);
}
Also used : DynamicRecord(org.neo4j.kernel.impl.store.record.DynamicRecord) RelationshipTypeTokenRecord(org.neo4j.kernel.impl.store.record.RelationshipTypeTokenRecord) IOException(java.io.IOException)

Example 13 with RelationshipTypeTokenRecord

use of org.neo4j.kernel.impl.store.record.RelationshipTypeTokenRecord in project neo4j by neo4j.

the class PhysicalLogCommandReaderV2_0 method visitRelationshipTypeTokenCommand.

private Command visitRelationshipTypeTokenCommand(ReadableChannel channel) throws IOException {
    // id+in_use(byte)+type_blockId(int)+nr_type_records(int)
    int id = channel.getInt();
    byte inUseFlag = channel.get();
    boolean inUse = false;
    if ((inUseFlag & Record.IN_USE.byteValue()) == Record.IN_USE.byteValue()) {
        inUse = true;
    } else if (inUseFlag != Record.NOT_IN_USE.byteValue()) {
        throw new IOException("Illegal in use flag: " + inUseFlag);
    }
    RelationshipTypeTokenRecord record = new RelationshipTypeTokenRecord(id);
    record.setInUse(inUse);
    record.setNameId(channel.getInt());
    int nrTypeRecords = channel.getInt();
    for (int i = 0; i < nrTypeRecords; i++) {
        DynamicRecord dr = readDynamicRecord(channel);
        if (dr == null) {
            return null;
        }
        record.addNameRecord(dr);
    }
    return new Command.RelationshipTypeTokenCommand(null, record);
}
Also used : DynamicRecord(org.neo4j.kernel.impl.store.record.DynamicRecord) RelationshipTypeTokenRecord(org.neo4j.kernel.impl.store.record.RelationshipTypeTokenRecord) IOException(java.io.IOException)

Example 14 with RelationshipTypeTokenRecord

use of org.neo4j.kernel.impl.store.record.RelationshipTypeTokenRecord in project neo4j by neo4j.

the class NeoStoreTransactionApplierTest method shouldApplyRelationshipTypeTokenCommandToTheStore.

// RELATIONSHIP TYPE TOKEN COMMAND
@Test
public void shouldApplyRelationshipTypeTokenCommandToTheStore() throws Exception {
    // given
    final BatchTransactionApplier applier = newApplier(false);
    final RelationshipTypeTokenRecord before = new RelationshipTypeTokenRecord(42);
    final RelationshipTypeTokenRecord after = new RelationshipTypeTokenRecord(42);
    after.setInUse(true);
    after.setNameId(323);
    final Command command = new RelationshipTypeTokenCommand(before, after);
    // when
    boolean result = apply(applier, command::handle, transactionToApply);
    // then
    assertFalse(result);
    verify(relationshipTypeTokenStore, times(1)).updateRecord(after);
}
Also used : RelationshipTypeTokenCommand(org.neo4j.kernel.impl.transaction.command.Command.RelationshipTypeTokenCommand) LabelTokenCommand(org.neo4j.kernel.impl.transaction.command.Command.LabelTokenCommand) PropertyKeyTokenCommand(org.neo4j.kernel.impl.transaction.command.Command.PropertyKeyTokenCommand) RelationshipTypeTokenCommand(org.neo4j.kernel.impl.transaction.command.Command.RelationshipTypeTokenCommand) RelationshipTypeTokenRecord(org.neo4j.kernel.impl.store.record.RelationshipTypeTokenRecord) BatchTransactionApplier(org.neo4j.kernel.impl.api.BatchTransactionApplier) Test(org.junit.Test)

Example 15 with RelationshipTypeTokenRecord

use of org.neo4j.kernel.impl.store.record.RelationshipTypeTokenRecord in project neo4j by neo4j.

the class NeoStoreTransactionApplierTest method shouldApplyRelationshipTypeTokenCommandToTheStoreInRecovery.

@Test
public void shouldApplyRelationshipTypeTokenCommandToTheStoreInRecovery() throws Exception {
    // given
    final BatchTransactionApplier applier = newApplier(true);
    final RelationshipTypeTokenRecord before = new RelationshipTypeTokenRecord(42);
    final RelationshipTypeTokenRecord after = new RelationshipTypeTokenRecord(42);
    after.setInUse(true);
    after.setNameId(323);
    final Command.RelationshipTypeTokenCommand command = new Command.RelationshipTypeTokenCommand(before, after);
    final RelationshipTypeToken token = new RelationshipTypeToken("token", 21);
    when(relationshipTypeTokenStore.getToken((int) command.getKey())).thenReturn(token);
    // when
    boolean result = apply(applier, command::handle, transactionToApply);
    // then
    assertFalse(result);
    verify(relationshipTypeTokenStore, times(1)).setHighestPossibleIdInUse(after.getId());
    verify(relationshipTypeTokenStore, times(1)).updateRecord(after);
    verify(cacheAccess, times(1)).addRelationshipTypeToken(token);
}
Also used : RelationshipTypeTokenCommand(org.neo4j.kernel.impl.transaction.command.Command.RelationshipTypeTokenCommand) RelationshipTypeTokenCommand(org.neo4j.kernel.impl.transaction.command.Command.RelationshipTypeTokenCommand) RelationshipTypeTokenCommand(org.neo4j.kernel.impl.transaction.command.Command.RelationshipTypeTokenCommand) LabelTokenCommand(org.neo4j.kernel.impl.transaction.command.Command.LabelTokenCommand) PropertyKeyTokenCommand(org.neo4j.kernel.impl.transaction.command.Command.PropertyKeyTokenCommand) RelationshipTypeTokenRecord(org.neo4j.kernel.impl.store.record.RelationshipTypeTokenRecord) RelationshipTypeToken(org.neo4j.kernel.impl.core.RelationshipTypeToken) BatchTransactionApplier(org.neo4j.kernel.impl.api.BatchTransactionApplier) Test(org.junit.Test)

Aggregations

RelationshipTypeTokenRecord (org.neo4j.kernel.impl.store.record.RelationshipTypeTokenRecord)66 Test (org.junit.Test)36 ConsistencyReport (org.neo4j.consistency.report.ConsistencyReport)33 NodeRecord (org.neo4j.kernel.impl.store.record.NodeRecord)30 RelationshipRecord (org.neo4j.kernel.impl.store.record.RelationshipRecord)30 DynamicRecord (org.neo4j.kernel.impl.store.record.DynamicRecord)17 IOException (java.io.IOException)9 PropertyRecord (org.neo4j.kernel.impl.store.record.PropertyRecord)7 StorageCommand (org.neo4j.storageengine.api.StorageCommand)6 LabelTokenRecord (org.neo4j.kernel.impl.store.record.LabelTokenRecord)5 PropertyKeyTokenRecord (org.neo4j.kernel.impl.store.record.PropertyKeyTokenRecord)5 RepeatedTest (org.junit.jupiter.api.RepeatedTest)4 Test (org.junit.jupiter.api.Test)4 PrimitiveRecord (org.neo4j.kernel.impl.store.record.PrimitiveRecord)4 RelationshipGroupRecord (org.neo4j.kernel.impl.store.record.RelationshipGroupRecord)4 SchemaRecord (org.neo4j.kernel.impl.store.record.SchemaRecord)4 RecordAccessStub (org.neo4j.consistency.store.RecordAccessStub)3 NeoStores (org.neo4j.kernel.impl.store.NeoStores)3 RelationshipTypeTokenCommand (org.neo4j.kernel.impl.transaction.command.Command.RelationshipTypeTokenCommand)3 LinkedList (java.util.LinkedList)2