@Override public String propertyKeyGetName( int propertyKeyId ) { return tokenById( tokenHolders.propertyKeyTokens(), propertyKeyId, "property" ); }
@Override public void addPropertyKeyToken( NamedToken propertyKey ) { tokenHolders.propertyKeyTokens().addToken( propertyKey ); } }
@Override public int propertyKeyGetOrCreateForName( String propertyKeyName ) throws IllegalTokenNameException { return getOrCreateForName( tokenHolders.propertyKeyTokens(), propertyKeyName ); }
@Override public void propertyKeyGetOrCreateForNames( String[] propertyKeys, int[] ids ) throws IllegalTokenNameException { getOrCreateForNames( tokenHolders.propertyKeyTokens(), propertyKeys, ids ); }
@Override public int propertyKeyCount() { return tokenHolders.propertyKeyTokens().size(); }
private int getOrCreatePropertyKeyId( String name ) { return tokenHolders.propertyKeyTokens().getOrCreateId( name ); }
@Override public int propertyKey( String name ) { ktx.assertOpen(); return tokenHolders.propertyKeyTokens().getIdByName( name ); }
@Override public Iterator<NamedToken> propertyKeyGetAllTokens() { ktx.assertOpen(); AccessMode mode = ktx.securityContext().mode(); return Iterators.stream( tokenHolders.propertyKeyTokens().getAllTokens().iterator() ) .filter( propKey -> mode.allowsPropertyReads( propKey.id() ) ) .iterator(); }
private boolean primitiveHasProperty( PrimitiveRecord record, String propertyName ) { int propertyKeyId = tokenHolders.propertyKeyTokens().getIdByName( propertyName ); return propertyKeyId != NO_TOKEN && propertyTraverser.findPropertyRecordContaining( record, propertyKeyId, recordAccess.getPropertyRecords(), false ) != Record.NO_NEXT_PROPERTY.intValue(); }
@Override public String propertyKeyName( int propertyKeyId ) throws PropertyKeyIdNotFoundKernelException { ktx.assertOpen(); try { return tokenHolders.propertyKeyTokens().getTokenById( propertyKeyId ).name(); } catch ( TokenNotFoundException e ) { throw new PropertyKeyIdNotFoundKernelException( propertyKeyId, e ); } }
private Map<String, Object> getPropertyChain( long nextProp ) { final Map<String, Object> map = new HashMap<>(); propertyTraverser.getPropertyChain( nextProp, recordAccess.getPropertyRecords(), propBlock -> { try { String key = tokenHolders.propertyKeyTokens().getTokenById( propBlock.getKeyIndexId() ).name(); Value propertyValue = propBlock.newPropertyValue( propertyStore ); map.put( key, propertyValue.asObject() ); } catch ( TokenNotFoundException e ) { throw new RuntimeException( e ); } } ); return map; }
int[] propertyIds = Arrays.stream( properties ).mapToInt( tokenHolders.propertyKeyTokens()::getOrCreateId ).toArray();
@Override public IndexPopulator getPopulator( StoreIndexDescriptor descriptor, IndexSamplingConfig samplingConfig ) { PartitionedIndexStorage indexStorage = getIndexStorage( descriptor.getId() ); FulltextIndexDescriptor fulltextIndexDescriptor = readOrInitialiseDescriptor( descriptor, defaultAnalyzerName, tokenHolders.propertyKeyTokens(), indexStorage, fileSystem ); DatabaseIndex<FulltextIndexReader> fulltextIndex = FulltextIndexBuilder .create( fulltextIndexDescriptor, config, tokenHolders.propertyKeyTokens() ) .withFileSystem( fileSystem ) .withOperationalMode( operationalMode ) .withIndexStorage( indexStorage ) .withPopulatingMode( true ) .build(); if ( fulltextIndex.isReadOnly() ) { throw new UnsupportedOperationException( "Can't create populator for read only index" ); } log.debug( "Creating populator for fulltext schema index: %s", descriptor ); return new FulltextIndexPopulator( fulltextIndexDescriptor, fulltextIndex, () -> FulltextIndexSettings.saveFulltextIndexSettings( fulltextIndexDescriptor, indexStorage, fileSystem ) ); }
@Override public IndexAccessor getOnlineAccessor( StoreIndexDescriptor descriptor, IndexSamplingConfig samplingConfig ) throws IOException { PartitionedIndexStorage indexStorage = getIndexStorage( descriptor.getId() ); FulltextIndexDescriptor fulltextIndexDescriptor = readOrInitialiseDescriptor( descriptor, defaultAnalyzerName, tokenHolders.propertyKeyTokens(), indexStorage, fileSystem ); FulltextIndexBuilder fulltextIndexBuilder = FulltextIndexBuilder .create( fulltextIndexDescriptor, config, tokenHolders.propertyKeyTokens() ) .withFileSystem( fileSystem ) .withOperationalMode( operationalMode ) .withIndexStorage( indexStorage ) .withPopulatingMode( false ); if ( fulltextIndexDescriptor.isEventuallyConsistent() ) { fulltextIndexBuilder = fulltextIndexBuilder.withIndexUpdateSink( indexUpdateSink ); } DatabaseFulltextIndex fulltextIndex = fulltextIndexBuilder.build(); fulltextIndex.open(); Runnable onClose = () -> openOnlineAccessors.remove( descriptor ); FulltextIndexAccessor accessor = new FulltextIndexAccessor( indexUpdateSink, fulltextIndex, fulltextIndexDescriptor, onClose ); openOnlineAccessors.put( descriptor, accessor ); log.debug( "Created online accessor for fulltext schema index %s: %s", descriptor, accessor ); return accessor; }
public KernelTransaction newInstance( KernelTransaction.Type type, LoginContext loginContext, long timeout ) SecurityContext securityContext = loginContext.authorize( tokenHolders.propertyKeyTokens()::getOrCreateId, currentDatabaseName ); try
private int createNewPropertyKeyId( String stringKey ) { int keyId = (int) propertyKeyTokenStore.nextId(); PropertyKeyTokenRecord record = new PropertyKeyTokenRecord( keyId ); record.setInUse( true ); record.setCreated(); Collection<DynamicRecord> keyRecords = propertyKeyTokenStore.allocateNameRecords( encodeString( stringKey ) ); record.setNameId( (int) Iterables.first( keyRecords ).getId() ); record.addNameRecords( keyRecords ); propertyKeyTokenStore.updateRecord( record ); tokenHolders.propertyKeyTokens().addToken( new NamedToken( stringKey, keyId ) ); return keyId; }
@Override public void start() throws Throwable { neoStores.makeStoreOk(); tokenHolders.propertyKeyTokens().setInitialTokens( neoStores.getPropertyKeyTokenStore().getTokens() ); tokenHolders.relationshipTypeTokens().setInitialTokens( neoStores.getRelationshipTypeTokenStore().getTokens() ); tokenHolders.labelTokens().setInitialTokens( neoStores.getLabelTokenStore().getTokens() ); neoStores.startCountStore(); // TODO: move this to counts store lifecycle loadSchemaCache(); indexingService.start(); labelScanStore.start(); idController.start(); }
fulltextIndexDescriptor = readOrInitialiseDescriptor( descriptor, defaultAnalyzerName, tokenHolders.propertyKeyTokens(), indexStorage, fileSystem ); return new FulltextIndexCapability( fulltextIndexDescriptor.isEventuallyConsistent() );
tokenHolders.propertyKeyTokens().setInitialTokens( neoStores.getPropertyKeyTokenStore().getTokens() ); tokenHolders.labelTokens().setInitialTokens( neoStores.getLabelTokenStore().getTokens() ); tokenHolders.relationshipTypeTokens().setInitialTokens( neoStores.getRelationshipTypeTokenStore().getTokens() );
this.transactionHeaderInformationFactory = editionContext.getHeaderInformationFactory(); this.commitProcessFactory = editionContext.getCommitProcessFactory(); this.autoIndexing = new InternalAutoIndexing( platformModule.config, tokenHolders.propertyKeyTokens() ); this.indexConfigStore = new IndexConfigStore( databaseLayout, fs ); this.explicitIndexProvider = new DefaultExplicitIndexProvider();