/** * Create a {@link CapableIndexDescriptor} from this index descriptor, with no listed capabilities. * * @return a CapableIndexDescriptor. */ public CapableIndexDescriptor withoutCapabilities() { return new CapableIndexDescriptor( this, IndexCapability.NO_CAPABILITY ); }
@Override public SchemaDescriptor schema() { return capableIndexDescriptor.schema(); }
void addSchemaRule( SchemaRule rule ) { if ( rule instanceof ConstraintRule ) { ConstraintRule constraintRule = (ConstraintRule) rule; constraintRuleById.put( constraintRule.getId(), constraintRule ); constraints.add( constraintSemantics.readConstraint( constraintRule ) ); } else if ( rule instanceof StoreIndexDescriptor ) { CapableIndexDescriptor index = indexProviderMap.withCapabilities( (StoreIndexDescriptor) rule ); indexDescriptorById.put( index.getId(), index ); SchemaDescriptor schemaDescriptor = index.schema(); indexDescriptors.put( schemaDescriptor, index ); indexDescriptorsByName.put( rule.getName(), index ); for ( int entityTokenId : schemaDescriptor.getEntityTokenIds() ) { Set<CapableIndexDescriptor> forLabel = indexDescriptorsByLabel.getIfAbsentPut( entityTokenId, HashSet::new ); forLabel.add( index ); } for ( int propertyId : index.schema().getPropertyIds() ) { List<CapableIndexDescriptor> indexesForProperty = indexByProperty.getIfAbsentPut( propertyId, ArrayList::new ); indexesForProperty.add( index ); } } }
OnlineIndexProxy( CapableIndexDescriptor capableIndexDescriptor, IndexAccessor accessor, IndexStoreView storeView, boolean forcedIdempotentMode ) { assert accessor != null; this.indexId = capableIndexDescriptor.getId(); this.capableIndexDescriptor = capableIndexDescriptor; this.accessor = accessor; this.storeView = storeView; this.forcedIdempotentMode = forcedIdempotentMode; this.indexCountsRemover = new IndexCountsRemover( storeView, indexId ); }
@Override public IndexSamplingJob create( long indexId, IndexProxy indexProxy ) { final String indexUserDescription = indexProxy.getDescriptor().userDescription( nameLookup ); return new OnlineIndexSamplingJob( indexId, indexProxy, storeView, indexUserDescription, logProvider ); } }
void shouldCreateWithSpecificExistingProviderName( IndexCreator creator ) throws KernelException { int labelId = 0; for ( GraphDatabaseSettings.SchemaIndex indexSetting : GraphDatabaseSettings.SchemaIndex.values() ) { // given SchemaWrite schemaWrite = schemaWriteInNewTransaction(); String provider = indexSetting.providerName(); LabelSchemaDescriptor descriptor = forLabel( labelId++, 0 ); creator.create( schemaWrite, descriptor, provider ); // when commit(); // then assertEquals( provider, indexingService.getIndexProxy( descriptor ).getDescriptor().providerDescriptor().name() ); } }
IndexPopulation( IndexPopulator populator, CapableIndexDescriptor capableIndexDescriptor, FlippableIndexProxy flipper, FailedIndexProxyFactory failedIndexProxyFactory, String indexUserDescription ) { this.populator = populator; this.capableIndexDescriptor = capableIndexDescriptor; this.indexId = capableIndexDescriptor.getId(); this.flipper = flipper; this.failedIndexProxyFactory = failedIndexProxyFactory; this.indexUserDescription = indexUserDescription; this.indexCountsRemover = new IndexCountsRemover( storeView, indexId ); this.batchedUpdates = new ArrayList<>( BATCH_SIZE ); }
@Override public IndexSamplingJob create( long indexId, IndexProxy indexProxy ) { final String indexUserDescription = indexProxy.getDescriptor().userDescription( nameLookup ); return new OnlineIndexSamplingJob( indexId, indexProxy, storeView, indexUserDescription, logProvider ); } }
@Override public void validate() throws UniquePropertyValueValidationException { if ( !failures.isEmpty() ) { SchemaDescriptor descriptor = getDescriptor().schema(); throw new UniquePropertyValueValidationException( ConstraintDescriptorFactory.uniqueForSchema( descriptor ), ConstraintValidationException.Phase.VERIFICATION, new HashSet<>( failures ) ); } }
void addSchemaRule( SchemaRule rule ) { if ( rule instanceof ConstraintRule ) { ConstraintRule constraintRule = (ConstraintRule) rule; constraintRuleById.put( constraintRule.getId(), constraintRule ); constraints.add( constraintSemantics.readConstraint( constraintRule ) ); } else if ( rule instanceof StoreIndexDescriptor ) { CapableIndexDescriptor index = indexProviderMap.withCapabilities( (StoreIndexDescriptor) rule ); indexDescriptorById.put( index.getId(), index ); SchemaDescriptor schemaDescriptor = index.schema(); indexDescriptors.put( schemaDescriptor, index ); indexDescriptorsByName.put( rule.getName(), index ); for ( int entityTokenId : schemaDescriptor.getEntityTokenIds() ) { Set<CapableIndexDescriptor> forLabel = indexDescriptorsByLabel.getIfAbsentPut( entityTokenId, HashSet::new ); forLabel.add( index ); } for ( int propertyId : index.schema().getPropertyIds() ) { List<CapableIndexDescriptor> indexesForProperty = indexByProperty.getIfAbsentPut( propertyId, ArrayList::new ); indexesForProperty.add( index ); } } }
/** * Create a {@link CapableIndexDescriptor} from the given index descriptor, which includes the capabilities * that correspond to those of the index provider of the given {@code descriptor}, found in this {@link IndexProviderMap}. * * @return a CapableIndexDescriptor. */ default CapableIndexDescriptor withCapabilities( StoreIndexDescriptor descriptor ) { IndexProviderDescriptor providerDescriptor = descriptor.providerDescriptor(); IndexCapability capability = lookup( providerDescriptor ).getCapability( descriptor ); return new CapableIndexDescriptor( descriptor, capability ); }
public LongSet getIndexIds() { Iterable<IndexProxy> indexProxies = indexMapRef.getAllIndexProxies(); MutableLongSet indexIds = new LongHashSet(); for ( IndexProxy indexProxy : indexProxies ) { indexIds.add( indexProxy.getDescriptor().getId() ); } return indexIds; }
private static Map<SchemaDescriptor, IndexProxy> indexesByDescriptor( LongObjectMap<IndexProxy> indexesById ) { return indexesById.toMap( indexProxy -> indexProxy.getDescriptor().schema(), Functions.identity() ); }
/** * Create a {@link CapableIndexDescriptor} from this index descriptor, with no listed capabilities. * * @return a CapableIndexDescriptor. */ public CapableIndexDescriptor withoutCapabilities() { return new CapableIndexDescriptor( this, IndexCapability.NO_CAPABILITY ); }
OnlineIndexProxy( CapableIndexDescriptor capableIndexDescriptor, IndexAccessor accessor, IndexStoreView storeView, boolean forcedIdempotentMode ) { assert accessor != null; this.indexId = capableIndexDescriptor.getId(); this.capableIndexDescriptor = capableIndexDescriptor; this.accessor = accessor; this.storeView = storeView; this.forcedIdempotentMode = forcedIdempotentMode; this.indexCountsRemover = new IndexCountsRemover( storeView, indexId ); }
private IndexPopulationFailedKernelException failureCause() { return getPopulationFailure().asIndexPopulationFailure( getDescriptor().schema(), indexUserDescription ); }
/** * Create a {@link CapableIndexDescriptor} from the given index descriptor, which includes the capabilities * that correspond to those of the index provider of the given {@code descriptor}, found in this {@link IndexProviderMap}. * * @return a CapableIndexDescriptor. */ default CapableIndexDescriptor withCapabilities( StoreIndexDescriptor descriptor ) { IndexProviderDescriptor providerDescriptor = descriptor.providerDescriptor(); IndexCapability capability = lookup( providerDescriptor ).getCapability( descriptor ); return new CapableIndexDescriptor( descriptor, capability ); }
IndexPopulation( IndexPopulator populator, CapableIndexDescriptor capableIndexDescriptor, FlippableIndexProxy flipper, FailedIndexProxyFactory failedIndexProxyFactory, String indexUserDescription ) { this.populator = populator; this.capableIndexDescriptor = capableIndexDescriptor; this.indexId = capableIndexDescriptor.getId(); this.flipper = flipper; this.failedIndexProxyFactory = failedIndexProxyFactory; this.indexUserDescription = indexUserDescription; this.indexCountsRemover = new IndexCountsRemover( storeView, indexId ); this.batchedUpdates = new ArrayList<>( BATCH_SIZE ); }