org.neo4j.kernel.impl.store.NodeStore.getDynamicLabelStore()方法的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(10.8k)|赞(0)|评价(0)|浏览(95)

本文整理了Java中org.neo4j.kernel.impl.store.NodeStore.getDynamicLabelStore()方法的一些代码示例,展示了NodeStore.getDynamicLabelStore()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。NodeStore.getDynamicLabelStore()方法的具体详情如下:
包路径:org.neo4j.kernel.impl.store.NodeStore
类名称:NodeStore
方法名:getDynamicLabelStore

NodeStore.getDynamicLabelStore介绍

暂无

代码示例

代码示例来源:origin: neo4j/neo4j

private void setNodeLabels( NodeRecord nodeRecord, Label... labels )
{
  NodeLabels nodeLabels = parseLabelsField( nodeRecord );
  nodeLabels.put( getOrCreateLabelIds( labels ), nodeStore, nodeStore.getDynamicLabelStore() );
  labelsTouched = true;
}

代码示例来源:origin: neo4j/neo4j

@Override
public boolean visitNodeCommand( NodeCommand command )
{
  NodeStore nodeStore = neoStores.getNodeStore();
  track( nodeStore, command );
  track( nodeStore.getDynamicLabelStore(), command.getAfter().getDynamicLabelRecords() );
  return false;
}

代码示例来源:origin: neo4j/neo4j

void addLabelToNode( long labelId, long nodeId )
{
  NodeRecord nodeRecord = recordChangeSet.getNodeRecords().getOrLoad( nodeId, null ).forChangingData();
  parseLabelsField( nodeRecord ).add( labelId, nodeStore, nodeStore.getDynamicLabelStore() );
}

代码示例来源:origin: neo4j/neo4j

private Collection<DynamicRecord> allocateAndApply( NodeStore nodeStore, long nodeId, long[] longs )
{
  Collection<DynamicRecord> records = DynamicNodeLabels.allocateRecordsForDynamicLabels( nodeId, longs,
      nodeStore.getDynamicLabelStore() );
  nodeStore.updateDynamicLabelRecords( records );
  return records;
}

代码示例来源:origin: neo4j/neo4j

public static long[] get( NodeRecord node, NodeStore nodeStore )
{
  if ( node.isLight() )
  {
    nodeStore.ensureHeavy( node, firstDynamicLabelRecordId( node.getLabelField() ) );
  }
  return getDynamicLabelsArray( node.getUsedDynamicLabelRecords(), nodeStore.getDynamicLabelStore() );
}

代码示例来源:origin: neo4j/neo4j

@Before
public void setup()
{
  when( neoStores.getMetaDataStore() ).thenReturn( metaDataStore );
  when( neoStores.getNodeStore() ).thenReturn( nodeStore );
  when( neoStores.getRelationshipStore() ).thenReturn( relationshipStore );
  when( neoStores.getPropertyStore() ).thenReturn( propertyStore );
  when( neoStores.getRelationshipGroupStore() ).thenReturn( relationshipGroupStore );
  when( neoStores.getRelationshipTypeTokenStore() ).thenReturn( relationshipTypeTokenStore );
  when( neoStores.getLabelTokenStore() ).thenReturn( labelTokenStore );
  when( neoStores.getPropertyKeyTokenStore() ).thenReturn( propertyKeyTokenStore );
  when( neoStores.getSchemaStore() ).thenReturn( schemaStore );
  when( nodeStore.getDynamicLabelStore() ).thenReturn( dynamicLabelStore );
  when( lockService.acquireNodeLock( anyLong(), any() ) )
      .thenReturn( LockService.NO_LOCK );
  when( lockService.acquireRelationshipLock( anyLong(), any() ) )
      .thenReturn( LockService.NO_LOCK );
  when( transactionToApply.transactionId() ).thenReturn( transactionId );
}

代码示例来源:origin: neo4j/neo4j

@Test
public void oneDynamicRecordShouldExtendIntoAnAdditionalIfTooManyLabels()
{
  // GIVEN
  // will occupy 60B of data, i.e. one dynamic record
  NodeRecord node = nodeRecordWithDynamicLabels( nodeStore, oneByteLongs( 56 ) );
  Collection<DynamicRecord> initialRecords = node.getDynamicLabelRecords();
  NodeLabels nodeLabels = NodeLabelsField.parseLabelsField( node );
  // WHEN
  Set<DynamicRecord> changedDynamicRecords = Iterables.asSet( nodeLabels.add( 1, nodeStore, nodeStore.getDynamicLabelStore() ) );
  // THEN
  assertTrue( changedDynamicRecords.containsAll( initialRecords ) );
  assertEquals( initialRecords.size() + 1, changedDynamicRecords.size() );
}

代码示例来源:origin: neo4j/neo4j

private void assertDynamicLabelRecordInUse( NeoStores store, long id, boolean inUse )
{
  DynamicArrayStore dynamicLabelStore = store.getNodeStore().getDynamicLabelStore();
  DynamicRecord record = dynamicLabelStore.getRecord( id, dynamicLabelStore.nextRecord(), FORCE );
  assertEquals( inUse, record.inUse() );
}

代码示例来源:origin: neo4j/neo4j

@Test
public void shouldReallocateSomeOfPreviousDynamicRecords()
{
  // GIVEN
  NodeRecord node = nodeRecordWithDynamicLabels( nodeStore, oneByteLongs( 5 ) );
  Set<DynamicRecord> initialRecords = Iterables.asUniqueSet( node.getDynamicLabelRecords() );
  NodeLabels nodeLabels = NodeLabelsField.parseLabelsField( node );
  // WHEN
  Set<DynamicRecord> reallocatedRecords = Iterables.asUniqueSet( nodeLabels.put( fourByteLongs( 100 ), nodeStore,
      nodeStore.getDynamicLabelStore() ) );
  // THEN
  assertTrue( reallocatedRecords.containsAll( initialRecords ) );
  assertTrue( reallocatedRecords.size() > initialRecords.size() );
}

代码示例来源:origin: neo4j/neo4j

@Test
public void shouldSpillOverToDynamicRecordIfExceedsInlinedSpace()
{
  // GIVEN -- the upper limit for a label ID for 3 labels would be 36b/3 - 1 = 12b - 1 = 4095
  long labelId1 = 10;
  long labelId2 = 30;
  long labelId3 = 4096;
  NodeRecord node = nodeRecordWithInlinedLabels( labelId1, labelId2 );
  NodeLabels nodeLabels = NodeLabelsField.parseLabelsField( node );
  // WHEN
  Collection<DynamicRecord> changedDynamicRecords = nodeLabels.add( labelId3, nodeStore,
      nodeStore.getDynamicLabelStore() );
  // THEN
  assertEquals( 1, Iterables.count( changedDynamicRecords ) );
  assertEquals( dynamicLabelsLongRepresentation( changedDynamicRecords ), node.getLabelField() );
  assertTrue( Arrays.equals( new long[] {labelId1, labelId2, labelId3},
      DynamicNodeLabels.getDynamicLabelsArray( changedDynamicRecords, nodeStore.getDynamicLabelStore() ) ) );
}

代码示例来源:origin: neo4j/neo4j

@Override
public Collection<DynamicRecord> add( long labelId, NodeStore nodeStore, DynamicRecordAllocator allocator )
{
  nodeStore.ensureHeavy( node, firstDynamicLabelRecordId( node.getLabelField() ) );
  long[] existingLabelIds = getDynamicLabelsArray( node.getUsedDynamicLabelRecords(),
      nodeStore.getDynamicLabelStore() );
  long[] newLabelIds = LabelIdArray.concatAndSort( existingLabelIds, labelId );
  Collection<DynamicRecord> existingRecords = node.getDynamicLabelRecords();
  Collection<DynamicRecord> changedDynamicRecords = allocateRecordsForDynamicLabels( node.getId(), newLabelIds,
      new ReusableRecordsCompositeAllocator( existingRecords, allocator ) );
  node.setLabelField( dynamicPointer( changedDynamicRecords ), changedDynamicRecords );
  return changedDynamicRecords;
}

代码示例来源:origin: neo4j/neo4j

@Test
public void addingAnAlreadyAddedLabelWhenLabelsAreInlinedShouldFail()
{
  // GIVEN
  int labelId = 1;
  NodeRecord node = nodeRecordWithInlinedLabels( labelId );
  NodeLabels nodeLabels = NodeLabelsField.parseLabelsField( node );
  // WHEN
  try
  {
    nodeLabels.add( labelId, nodeStore, nodeStore.getDynamicLabelStore() );
    fail( "Should have thrown exception" );
  }
  catch ( IllegalStateException e )
  {
    // THEN
  }
}

代码示例来源:origin: neo4j/neo4j

@Test
public void shouldReallocateAllOfPreviousDynamicRecordsAndThenSome()
{
  // GIVEN
  NodeRecord node = nodeRecordWithDynamicLabels( nodeStore, fourByteLongs( 100 ) );
  Set<DynamicRecord> initialRecords = Iterables.asSet( cloned( node.getDynamicLabelRecords(), DynamicRecord.class ) );
  NodeLabels nodeLabels = NodeLabelsField.parseLabelsField( node );
  // WHEN
  Set<DynamicRecord> reallocatedRecords = Iterables.asUniqueSet( nodeLabels.put( fourByteLongs( 5 ), nodeStore,
      nodeStore.getDynamicLabelStore() ) );
  // THEN
  assertTrue( "initial:" + initialRecords + ", reallocated:" + reallocatedRecords ,
      initialRecords.containsAll( used( reallocatedRecords ) ) );
  assertTrue( used( reallocatedRecords ).size() < initialRecords.size() );
}

代码示例来源:origin: neo4j/neo4j

@Test
public void twoDynamicRecordsShouldShrinkToOneWhenRemovingWithoutChangingItsOwner()
{
  // GIVEN
  // will occupy 61B of data, i.e. just two dynamic records
  Long nodeId = 42L;
  NodeRecord node = nodeRecordWithDynamicLabels( nodeId, nodeStore, oneByteLongs( 57 ) );
  NodeLabels nodeLabels = NodeLabelsField.parseLabelsField( node );
  List<DynamicRecord> changedDynamicRecords = Iterables.addToCollection(
      nodeLabels.remove( 255 /*Initial labels go from 255 and down to 255-58*/, nodeStore ),
      new ArrayList<>() );
  // WHEN
  Pair<Long,long[]> changedPair = DynamicNodeLabels.getDynamicLabelsArrayAndOwner( changedDynamicRecords,
      nodeStore.getDynamicLabelStore() );
  // THEN
  assertEquals( nodeId,  changedPair.first() );
}

代码示例来源:origin: neo4j/neo4j

@Test
public void oneDynamicRecordShouldStoreItsOwner()
{
  // GIVEN
  // will occupy 60B of data, i.e. one dynamic record
  Long nodeId = 24L;
  NodeRecord node = nodeRecordWithDynamicLabels( nodeId, nodeStore, oneByteLongs(56) );
  Collection<DynamicRecord> initialRecords = node.getDynamicLabelRecords();
  // WHEN
  Pair<Long,long[]> pair = DynamicNodeLabels.getDynamicLabelsArrayAndOwner( initialRecords,
      nodeStore.getDynamicLabelStore() );
  // THEN
  assertEquals( nodeId,  pair.first() );
}

代码示例来源:origin: neo4j/neo4j

@Test
public void addingAnAlreadyAddedLabelWhenLabelsAreInDynamicRecordsShouldFail()
{
  // GIVEN
  long[] labels = oneByteLongs( 20 );
  NodeRecord node = nodeRecordWithDynamicLabels( nodeStore, labels );
  NodeLabels nodeLabels = NodeLabelsField.parseLabelsField( node );
  // WHEN
  try
  {
    nodeLabels.add( safeCastLongToInt( labels[0] ), nodeStore, nodeStore.getDynamicLabelStore() );
    fail( "Should have thrown exception" );
  }
  catch ( IllegalStateException e )
  {
    // THEN
  }
}

代码示例来源:origin: neo4j/neo4j

@Test
public void shouldSerializeInlineLabels() throws Exception
{
  // Given
  NodeRecord before = new NodeRecord( 12, false, 1, 2 );
  before.setInUse( true );
  NodeRecord after = new NodeRecord( 12, false, 2, 1 );
  after.setInUse( true );
  NodeLabels nodeLabels = parseLabelsField( after );
  nodeLabels.add( 1337, nodeStore, nodeStore.getDynamicLabelStore() );
  // When
  assertSerializationWorksFor( new Command.NodeCommand( before, after ) );
}

代码示例来源:origin: neo4j/neo4j

@Test
public void maximumOfSevenInlinedLabels()
{
  // GIVEN
  long[] labels = new long[] {0, 1, 2, 3, 4, 5, 6};
  NodeRecord node = nodeRecordWithInlinedLabels( labels );
  NodeLabels nodeLabels = NodeLabelsField.parseLabelsField( node );
  // WHEN
  Iterable<DynamicRecord> changedDynamicRecords = nodeLabels.add( 23, nodeStore, nodeStore.getDynamicLabelStore() );
  // THEN
  assertEquals( dynamicLabelsLongRepresentation( changedDynamicRecords ), node.getLabelField() );
  assertEquals( 1, Iterables.count( changedDynamicRecords ) );
}

代码示例来源:origin: neo4j/neo4j

@Test
public void shouldSerializeDynamicRecordLabels() throws Exception
{
  // Given
  NodeRecord before = new NodeRecord( 12, false, 1, 2 );
  before.setInUse( true );
  NodeRecord after = new NodeRecord( 12, false, 2, 1 );
  after.setInUse( true );
  NodeLabels nodeLabels = parseLabelsField( after );
  for ( int i = 10; i < 100; i++ )
  {
    nodeLabels.add( i, nodeStore, nodeStore.getDynamicLabelStore() );
  }
  // When
  assertSerializationWorksFor( new Command.NodeCommand( before, after ) );
}

代码示例来源:origin: neo4j/neo4j

private Ids createNode( DataImporter.Monitor monitor, NeoStores neoStores, int propertyCount, int labelCount )
{
  PropertyStore propertyStore = neoStores.getPropertyStore();
  RecordAccess<PropertyRecord,PrimitiveRecord> propertyRecordAccess =
      new DirectRecordAccess<>( propertyStore, new Loaders( neoStores ).propertyLoader() );
  NodeStore nodeStore = neoStores.getNodeStore();
  NodeRecord nodeRecord = nodeStore.newRecord();
  nodeRecord.setId( nodeStore.nextId() );
  nodeRecord.setInUse( true );
  NodeLabelsField.parseLabelsField( nodeRecord ).put( labelIds( labelCount ), nodeStore, nodeStore.getDynamicLabelStore() );
  long nextProp = new PropertyCreator( propertyStore, new PropertyTraverser() )
      .createPropertyChain( nodeRecord, properties( propertyStore, propertyCount ), propertyRecordAccess );
  nodeRecord.setNextProp( nextProp );
  nodeStore.updateRecord( nodeRecord );
  PropertyRecord[] propertyRecords = extractPropertyRecords( propertyRecordAccess, nextProp );
  propertyRecordAccess.close();
  monitor.nodesImported( 1 );
  monitor.propertiesImported( propertyCount );
  return new Ids( nodeRecord, propertyRecords );
}

相关文章