From ee07b7b01d6077d55bfd1979a74680112c19c633 Mon Sep 17 00:00:00 2001 From: Chris Vest Date: Thu, 15 Mar 2018 11:37:11 +0100 Subject: [PATCH] Ues SchemaDescriptor instead of LabelSchemaDescriptor where possible. --- .../consistency/checking/full/IndexCheck.java | 2 +- .../full/PropertyAndNodeIndexedCheck.java | 11 +-- .../v2_3/SchemaDescriptorTranslation.scala | 2 +- .../v3_1/SchemaDescriptorTranslation.scala | 2 +- .../v3_3/IndexDescriptorCompatibility.scala | 2 +- .../v3_3/TransactionBoundPlanContext.scala | 2 +- .../IndexDescriptorCompatibility.scala | 2 +- .../TransactionBoundPlanContext.scala | 2 +- .../internal/kernel/api/SchemaWrite.java | 7 +- .../schema/SchemaKernelException.java | 8 +- .../api/schema/LabelSchemaDescriptor.java | 2 - .../api/schema/LabelSchemaSupplier.java | 2 +- .../schema/RelationTypeSchemaDescriptor.java | 2 - .../kernel/api/schema/SchemaDescriptor.java | 28 ++++++- .../schema/SchemaDescriptorPredicates.java | 12 +-- .../api/schema/SchemaDescriptorSupplier.java | 25 ++++++ .../constraints/ConstraintDescriptor.java | 3 +- .../kernel/api/ConstraintTestBase.java | 2 +- .../api/NodeValueIndexCursorTestBase.java | 15 +++- .../org/neo4j/kernel/api/ReadOperations.java | 7 +- .../kernel/api/SchemaWriteOperations.java | 3 +- .../index/IndexEntryConflictException.java | 6 +- .../IndexPopulationFailedKernelException.java | 10 +-- .../schema/AlreadyConstrainedException.java | 5 +- .../schema/AlreadyIndexedException.java | 8 +- .../schema/DropIndexFailureException.java | 6 +- .../IndexBelongsToConstraintException.java | 6 +- .../schema/NoSuchIndexException.java | 6 +- ...niquePropertyValueValidationException.java | 4 +- .../kernel/api/index/IndexEntryUpdate.java | 27 ++++--- .../api/schema/LabelSchemaDescriptor.java | 19 ++--- .../schema/RelationTypeSchemaDescriptor.java | 24 +++--- .../schema/index/SchemaIndexDescriptor.java | 12 +-- .../index/SchemaIndexDescriptorFactory.java | 6 +- .../kernel/api/txstate/TransactionState.java | 4 +- .../builtinprocs/BuiltInProcedures.java | 2 +- .../ConstraintEnforcingEntityOperations.java | 10 +-- ...ntegrityValidatingStatementOperations.java | 6 +- .../impl/api/LockingStatementOperations.java | 32 ++++---- .../kernel/impl/api/OperationsFacade.java | 4 +- .../api/StateHandlingStatementOperations.java | 14 ++-- .../index/AbstractDelegatingIndexProxy.java | 4 +- .../index/AbstractSwallowingIndexProxy.java | 4 +- .../impl/api/index/FlippableIndexProxy.java | 4 +- .../neo4j/kernel/impl/api/index/IndexMap.java | 80 +++++++++---------- .../impl/api/index/IndexMapReference.java | 10 +-- .../api/index/IndexPopulationFailure.java | 8 +- .../kernel/impl/api/index/IndexProxy.java | 8 +- .../impl/api/index/IndexUpdaterMap.java | 16 ++-- .../impl/api/index/IndexingService.java | 22 ++--- .../impl/api/index/IndexingUpdateService.java | 4 +- .../api/index/MultipleIndexPopulator.java | 16 ++-- .../kernel/impl/api/index/NodeUpdates.java | 26 +++--- .../impl/api/index/OnlineIndexProxy.java | 4 +- .../impl/api/index/PopulatingIndexProxy.java | 4 +- .../index/TentativeConstraintIndexProxy.java | 6 +- .../api/operations/SchemaReadOperations.java | 3 +- .../api/operations/SchemaWriteOperations.java | 5 +- .../impl/api/schema/NodeSchemaMatcher.java | 12 +-- .../api/state/ConstraintIndexCreator.java | 23 +++--- .../neo4j/kernel/impl/api/state/TxState.java | 11 ++- .../store/DefaultCapableIndexReference.java | 6 +- .../impl/api/store/DefaultIndexReference.java | 6 +- .../kernel/impl/api/store/SchemaCache.java | 15 ++-- .../kernel/impl/api/store/StorageLayer.java | 21 +++-- .../impl/coreapi/schema/SchemaImpl.java | 17 ++-- .../DeferredConflictCheckingIndexUpdater.java | 3 +- .../kernel/impl/newapi/AllStoreHolder.java | 25 ++++-- .../kernel/impl/newapi/NodeSchemaMatcher.java | 12 +-- .../neo4j/kernel/impl/newapi/Operations.java | 20 ++--- .../MultipleUnderlyingStorageExceptions.java | 12 +-- .../kernel/impl/store/record/IndexRule.java | 4 +- .../transaction/command/IndexUpdatesWork.java | 8 +- .../transaction/state/DirectIndexUpdates.java | 8 +- .../impl/transaction/state/IndexUpdates.java | 4 +- .../transaction/state/OnlineIndexUpdates.java | 8 +- .../DbStructureArgumentFormatter.java | 5 +- .../dbstructure/DbStructureCollector.java | 18 ++--- .../storageengine/api/StoreReadLayer.java | 29 ++++--- .../storageengine/api/schema/SchemaRule.java | 4 +- .../internal/BatchInserterImpl.java | 13 +-- .../neo4j/kernel/api/CompositeIndexingIT.java | 14 ++-- ...exPopulationFailedKernelExceptionTest.java | 5 +- .../CompositeIndexAccessorCompatibility.java | 4 +- .../kernel/api/index/IndexQueryHelper.java | 18 ++--- .../api/index/NodePropertyAccessor.java | 11 +-- .../SimpleIndexPopulatorCompatibility.java | 6 +- .../api/LockingStatementOperationsTest.java | 2 +- .../BatchingMultipleIndexPopulatorTest.java | 2 +- .../kernel/impl/api/index/IndexMapTest.java | 9 ++- .../impl/api/index/IndexingServiceTest.java | 11 +-- .../index/inmemory/UniqueInMemoryIndex.java | 4 +- .../api/state/IndexTxStateUpdaterTest.java | 4 +- .../kernel/impl/api/state/TxStateTest.java | 4 +- .../index/schema/NativeStringIndexingIT.java | 2 +- .../AbstractNodeValueIndexCursorTest.java | 3 +- .../impl/newapi/IndexTxStateUpdaterTest.java | 4 +- .../state/TransactionRecordStateTest.java | 4 +- ...queDatabaseIndexPopulatingUpdaterTest.java | 6 +- .../NonUniqueDatabaseIndexPopulatorTest.java | 6 +- ...queDatabaseIndexPopulatingUpdaterTest.java | 6 +- .../UniqueDatabaseIndexPopulatorTest.java | 3 +- .../kernel/impl/newapi/ConstraintTest.java | 3 +- ...Start3_2DbOn3_3AndCreateFusionIndexIT.java | 4 +- .../neo4j/locking/QueryExecutionLocksIT.java | 3 +- ...ltiIndexPopulationConcurrentUpdatesIT.java | 3 +- .../impl/newapi/SchemaReadWriteTest.java | 3 +- .../org/neo4j/tools/dump/DumpCountsStore.java | 4 +- 108 files changed, 543 insertions(+), 465 deletions(-) create mode 100644 community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/SchemaDescriptorSupplier.java diff --git a/community/consistency-check/src/main/java/org/neo4j/consistency/checking/full/IndexCheck.java b/community/consistency-check/src/main/java/org/neo4j/consistency/checking/full/IndexCheck.java index 0082ba97b562..10306391efae 100644 --- a/community/consistency-check/src/main/java/org/neo4j/consistency/checking/full/IndexCheck.java +++ b/community/consistency-check/src/main/java/org/neo4j/consistency/checking/full/IndexCheck.java @@ -38,7 +38,7 @@ public IndexCheck( IndexRule indexRule ) @Override public void check( IndexEntry record, CheckerEngine engine, RecordAccess records ) { - int labelId = indexRule.schema().getLabelId(); + int labelId = indexRule.schema().keyId(); engine.comparativeCheck( records.node( record.getId() ), new NodeInUseWithCorrectLabelsCheck<>( new long[]{labelId}, false ) ); } diff --git a/community/consistency-check/src/main/java/org/neo4j/consistency/checking/full/PropertyAndNodeIndexedCheck.java b/community/consistency-check/src/main/java/org/neo4j/consistency/checking/full/PropertyAndNodeIndexedCheck.java index 9a2d7644c7a9..f6328c29855e 100644 --- a/community/consistency-check/src/main/java/org/neo4j/consistency/checking/full/PropertyAndNodeIndexedCheck.java +++ b/community/consistency-check/src/main/java/org/neo4j/consistency/checking/full/PropertyAndNodeIndexedCheck.java @@ -36,7 +36,7 @@ import org.neo4j.consistency.report.ConsistencyReport; import org.neo4j.consistency.store.RecordAccess; import org.neo4j.internal.kernel.api.IndexQuery; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.index.IndexNotApplicableKernelException; import org.neo4j.kernel.impl.api.LookupFilter; import org.neo4j.kernel.impl.store.record.IndexRule; @@ -95,7 +95,7 @@ private void matchIndexesToNode( PrimitiveIntObjectMap nodePropertyMap = null; for ( IndexRule indexRule : indexes.onlineRules() ) { - long labelId = indexRule.schema().getLabelId(); + long labelId = indexRule.schema().keyId(); if ( labels.contains( labelId ) ) { if ( nodePropertyMap == null ) @@ -219,13 +219,14 @@ private PrimitiveIntObjectMap properties( List pro return propertyIds; } - private IndexQuery[] seek( LabelSchemaDescriptor schema, Value[] propertyValues ) + private IndexQuery[] seek( SchemaDescriptor schema, Value[] propertyValues ) { - assert schema.getPropertyIds().length == propertyValues.length; + int[] propertyIds = schema.getPropertyIds(); + assert propertyIds.length == propertyValues.length; IndexQuery[] query = new IndexQuery[propertyValues.length]; for ( int i = 0; i < query.length; i++ ) { - query[i] = IndexQuery.exact( schema.getPropertyIds()[i], propertyValues[i] ); + query[i] = IndexQuery.exact( propertyIds[i], propertyValues[i] ); } return query; } diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/SchemaDescriptorTranslation.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/SchemaDescriptorTranslation.scala index 60b17f353aa8..5fb44cd5ec52 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/SchemaDescriptorTranslation.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/SchemaDescriptorTranslation.scala @@ -29,7 +29,7 @@ trait SchemaDescriptorTranslation { implicit def kernelToCypher(index: KernelIndexDescriptor): SchemaTypes.IndexDescriptor = if (index.schema().getPropertyIds.length == 1) - SchemaTypes.IndexDescriptor(index.schema().getLabelId, index.schema().getPropertyId) + SchemaTypes.IndexDescriptor(index.schema().keyId, index.schema().getPropertyId) else throw new UnsupportedOperationException("Cypher 2.3 does not support composite indexes") diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_1/SchemaDescriptorTranslation.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_1/SchemaDescriptorTranslation.scala index 080ad021cdd7..a726dfb93721 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_1/SchemaDescriptorTranslation.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_1/SchemaDescriptorTranslation.scala @@ -30,7 +30,7 @@ trait SchemaDescriptorTranslation { implicit def toCypher(index: KernelIndexDescriptor): SchemaTypes.IndexDescriptor = { assertSingleProperty(index.schema()) - SchemaTypes.IndexDescriptor(index.schema().getLabelId, index.schema().getPropertyId()) + SchemaTypes.IndexDescriptor(index.schema().keyId, index.schema().getPropertyId()) } implicit def toKernel(constraint: SchemaTypes.UniquenessConstraint): KernelUniquenessConstraint = diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_3/IndexDescriptorCompatibility.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_3/IndexDescriptorCompatibility.scala index 68951d4b0cf9..53d0d17e2971 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_3/IndexDescriptorCompatibility.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_3/IndexDescriptorCompatibility.scala @@ -29,7 +29,7 @@ trait IndexDescriptorCompatibility { SchemaIndexDescriptorFactory.forLabel(index.label.id, index.properties.map(_.id):_*) def kernelToCypher(index: KernelIndexDescriptor): CypherIndexDescriptor = - CypherIndexDescriptor(index.schema().getLabelId, index.schema().getPropertyIds) + CypherIndexDescriptor(index.schema().keyId, index.schema().getPropertyIds) def cypherToKernelSchema(index: CypherIndexDescriptor): LabelSchemaDescriptor = SchemaDescriptorFactory.forLabel(index.label.id, index.properties.map(_.id):_*) diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_3/TransactionBoundPlanContext.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_3/TransactionBoundPlanContext.scala index 154718fb70e3..e33fb8227063 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_3/TransactionBoundPlanContext.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_3/TransactionBoundPlanContext.scala @@ -86,7 +86,7 @@ class TransactionBoundPlanContext(readOperationsSupplier: () => ReadOperations, private def getOnlineIndex(descriptor: KernelIndexDescriptor): Option[IndexDescriptor] = readOperationsSupplier().indexGetState(descriptor) match { - case InternalIndexState.ONLINE => Some(IndexDescriptor(descriptor.schema().getLabelId, descriptor.schema().getPropertyIds)) + case InternalIndexState.ONLINE => Some(IndexDescriptor(descriptor.schema().keyId, descriptor.schema().getPropertyIds)) case _ => None } diff --git a/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/IndexDescriptorCompatibility.scala b/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/IndexDescriptorCompatibility.scala index 5087d8ae2973..849dab09ad50 100644 --- a/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/IndexDescriptorCompatibility.scala +++ b/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/IndexDescriptorCompatibility.scala @@ -29,7 +29,7 @@ trait IndexDescriptorCompatibility { SchemaIndexDescriptorFactory.forLabel(index.label.id, index.properties.map(_.id):_*) def kernelToCypher(index: KernelIndexDescriptor): CypherIndexDescriptor = - CypherIndexDescriptor(index.schema().getLabelId, index.schema().getPropertyIds) + CypherIndexDescriptor(index.schema().keyId, index.schema().getPropertyIds) def cypherToKernelSchema(index: CypherIndexDescriptor): LabelSchemaDescriptor = SchemaDescriptorFactory.forLabel(index.label.id, index.properties.map(_.id):_*) diff --git a/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/TransactionBoundPlanContext.scala b/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/TransactionBoundPlanContext.scala index 33ae60bceff2..3f014ad574df 100644 --- a/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/TransactionBoundPlanContext.scala +++ b/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/TransactionBoundPlanContext.scala @@ -91,7 +91,7 @@ class TransactionBoundPlanContext(tc: TransactionalContextWrapper, logger: Inter private def getOnlineIndex(descriptor: KernelIndexDescriptor): Option[IndexDescriptor] = tc.statement.readOperations().indexGetState(descriptor) match { - case InternalIndexState.ONLINE => Some(IndexDescriptor(descriptor.schema().getLabelId, descriptor.schema().getPropertyIds)) + case InternalIndexState.ONLINE => Some(IndexDescriptor(descriptor.schema().keyId, descriptor.schema().getPropertyIds)) case _ => None } diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/SchemaWrite.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/SchemaWrite.java index def1b81dc258..efd573d0a33d 100644 --- a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/SchemaWrite.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/SchemaWrite.java @@ -22,6 +22,7 @@ import org.neo4j.internal.kernel.api.exceptions.schema.SchemaKernelException; import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.RelationTypeSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; /** @@ -30,12 +31,12 @@ public interface SchemaWrite { /** - * Create index from label descriptor + * Create index from schema descriptor * * @param descriptor description of the index * @return the newly created index */ - IndexReference indexCreate( LabelSchemaDescriptor descriptor ) throws SchemaKernelException; + IndexReference indexCreate( SchemaDescriptor descriptor ) throws SchemaKernelException; /** * Drop the given index @@ -49,7 +50,7 @@ public interface SchemaWrite * * @param descriptor description of the constraint */ - ConstraintDescriptor uniquePropertyConstraintCreate( LabelSchemaDescriptor descriptor ) throws SchemaKernelException; + ConstraintDescriptor uniquePropertyConstraintCreate( SchemaDescriptor descriptor ) throws SchemaKernelException; /** * Create node key constraint diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/schema/SchemaKernelException.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/schema/SchemaKernelException.java index cafae5ae6ef8..848a0cb2d39e 100644 --- a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/schema/SchemaKernelException.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/schema/SchemaKernelException.java @@ -24,7 +24,7 @@ import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.exceptions.KernelException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.Status; /** @@ -54,7 +54,7 @@ public SchemaKernelException( Status statusCode, String message ) } protected static String messageWithLabelAndPropertyName( TokenNameLookup tokenNameLookup, String formatString, - LabelSchemaDescriptor descriptor ) + SchemaDescriptor descriptor ) { int[] propertyIds = descriptor.getPropertyIds(); @@ -66,7 +66,7 @@ protected static String messageWithLabelAndPropertyName( TokenNameLookup tokenNa .mapToObj( i -> "'" + tokenNameLookup.propertyKeyGetName( i ) + "'" ) .collect( Collectors.joining( " and " )); return String.format( formatString, - tokenNameLookup.labelGetName( descriptor.getLabelId() ), propertyString); + tokenNameLookup.labelGetName( descriptor.keyId() ), propertyString); } else { @@ -75,7 +75,7 @@ protected static String messageWithLabelAndPropertyName( TokenNameLookup tokenNa .mapToObj( Integer::toString ) .collect( Collectors.joining( ", " )) + "]"; return String.format( formatString, - "label[" + descriptor.getLabelId() + "]", keyString ); + "label[" + descriptor.keyId() + "]", keyString ); } } } diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/LabelSchemaDescriptor.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/LabelSchemaDescriptor.java index 89fb64743cd7..61a4cecef8b8 100644 --- a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/LabelSchemaDescriptor.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/LabelSchemaDescriptor.java @@ -22,6 +22,4 @@ public interface LabelSchemaDescriptor extends SchemaDescriptor, LabelSchemaSupplier { int getLabelId(); - - int getPropertyId(); } diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/LabelSchemaSupplier.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/LabelSchemaSupplier.java index f9983e5d2d50..1029faf418a7 100644 --- a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/LabelSchemaSupplier.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/LabelSchemaSupplier.java @@ -19,7 +19,7 @@ */ package org.neo4j.internal.kernel.api.schema; -public interface LabelSchemaSupplier extends SchemaDescriptor.Supplier +public interface LabelSchemaSupplier extends SchemaDescriptorSupplier { @Override LabelSchemaDescriptor schema(); diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/RelationTypeSchemaDescriptor.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/RelationTypeSchemaDescriptor.java index 9adb732f5b0a..f493f977a8c8 100644 --- a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/RelationTypeSchemaDescriptor.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/RelationTypeSchemaDescriptor.java @@ -22,6 +22,4 @@ public interface RelationTypeSchemaDescriptor extends SchemaDescriptor { int getRelTypeId(); - - int getPropertyId(); } diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/SchemaDescriptor.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/SchemaDescriptor.java index 1a57b6a27833..0fe5ed438c6e 100644 --- a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/SchemaDescriptor.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/SchemaDescriptor.java @@ -34,7 +34,7 @@ * how this is done in eg. LabelSchemaDescriptor, and the SchemaProcessor and SchemaComputer interfaces need to be * extended with methods taking the new concrete type as argument. */ -public interface SchemaDescriptor +public interface SchemaDescriptor extends SchemaDescriptorSupplier { /** * Computes some value by feeding this object into the given SchemaComputer. @@ -62,6 +62,13 @@ public interface SchemaDescriptor */ String userDescription( TokenNameLookup tokenNameLookup ); + /** + * Translate the schema key to a key name using the given {@link TokenNameLookup}. + * @param tokenNameLookup used for looking up names for token ids. + * @return The string name of the key token. + */ + String keyName( TokenNameLookup tokenNameLookup ); + /** * This method return the property ids that are relevant to this Schema Descriptor. * @@ -72,6 +79,23 @@ public interface SchemaDescriptor */ int[] getPropertyIds(); + /** + * Assume that this schema descriptor describes a schema that includes a single property id, and return that id. + * + * @return The presumed single property id of this schema. + * @throws IllegalStateException if this schema does not have exactly one property. + */ + default int getPropertyId() + { + int[] propertyIds = getPropertyIds(); + if ( propertyIds.length != 1 ) + { + throw new IllegalStateException( + "Single property schema requires one property but had " + propertyIds.length ); + } + return propertyIds[0]; + } + /** * Id of underlying schema descriptor key. * Key is part of schema unit that determines which resources with specified properties are applicable. @@ -92,7 +116,7 @@ public interface SchemaDescriptor * @return A predicate that returns {@code true} if it is given a schema descriptor supplier that supplies the * same schema descriptor as the given schema descriptor. */ - static Predicate equalTo( SchemaDescriptor descriptor ) + static Predicate equalTo( SchemaDescriptor descriptor ) { return supplier -> descriptor.equals( supplier.schema() ); } diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/SchemaDescriptorPredicates.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/SchemaDescriptorPredicates.java index 0a2557eaf584..280828fcb9ed 100644 --- a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/SchemaDescriptorPredicates.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/SchemaDescriptorPredicates.java @@ -28,7 +28,7 @@ private SchemaDescriptorPredicates() { } - public static Predicate hasLabel( int labelId ) + public static Predicate hasLabel( int labelId ) { return supplier -> { @@ -37,7 +37,7 @@ public static Predicate hasLabel( int l }; } - public static Predicate hasRelType( int relTypeId ) + public static Predicate hasRelType( int relTypeId ) { return supplier -> { @@ -46,24 +46,24 @@ public static Predicate hasRelType( int }; } - public static Predicate hasProperty( int propertyId ) + public static Predicate hasProperty( int propertyId ) { return supplier -> hasProperty( supplier, propertyId ); } - public static boolean hasLabel( SchemaDescriptor.Supplier supplier, int labelId ) + public static boolean hasLabel( SchemaDescriptorSupplier supplier, int labelId ) { Optional labelOpt = supplier.schema().computeWith( getLabel ); return labelOpt.isPresent() && labelOpt.get() == labelId; } - public static boolean hasRelType( SchemaDescriptor.Supplier supplier, int relTypeId ) + public static boolean hasRelType( SchemaDescriptorSupplier supplier, int relTypeId ) { Optional relTypeOpt = supplier.schema().computeWith( getRelType ); return relTypeOpt.isPresent() && relTypeOpt.get() == relTypeId; } - public static boolean hasProperty( SchemaDescriptor.Supplier supplier, int propertyId ) + public static boolean hasProperty( SchemaDescriptorSupplier supplier, int propertyId ) { int[] schemaProperties = supplier.schema().getPropertyIds(); for ( int schemaProp : schemaProperties ) diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/SchemaDescriptorSupplier.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/SchemaDescriptorSupplier.java new file mode 100644 index 000000000000..cdecbd768579 --- /dev/null +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/SchemaDescriptorSupplier.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2002-2018 "Neo Technology," + * Network Engine for Objects in Lund AB [http://neotechnology.com] + * + * This file is part of Neo4j. + * + * Neo4j is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.neo4j.internal.kernel.api.schema; + +public interface SchemaDescriptorSupplier +{ + SchemaDescriptor schema(); +} diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/constraints/ConstraintDescriptor.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/constraints/ConstraintDescriptor.java index 7a0ce8bbb229..76343bad4a56 100644 --- a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/constraints/ConstraintDescriptor.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/schema/constraints/ConstraintDescriptor.java @@ -21,8 +21,9 @@ import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptorSupplier; -public interface ConstraintDescriptor extends SchemaDescriptor.Supplier +public interface ConstraintDescriptor extends SchemaDescriptorSupplier { enum Type { diff --git a/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/ConstraintTestBase.java b/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/ConstraintTestBase.java index 7786e5286bef..356dcf372e86 100644 --- a/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/ConstraintTestBase.java +++ b/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/ConstraintTestBase.java @@ -80,7 +80,7 @@ public void shouldFindConstraintsBySchema() throws Exception // THEN assertThat( constraints, hasSize( 1 ) ); - assertThat( constraints.get( 0 ).schema().getPropertyIds()[0], equalTo( prop ) ); + assertThat( constraints.get( 0 ).schema().getPropertyId(), equalTo( prop ) ); } } diff --git a/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/NodeValueIndexCursorTestBase.java b/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/NodeValueIndexCursorTestBase.java index dd1cb68127ce..62226b212f9f 100644 --- a/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/NodeValueIndexCursorTestBase.java +++ b/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/NodeValueIndexCursorTestBase.java @@ -542,7 +542,7 @@ private Value getPropertyValueFromStore( long nodeReference ) } @Test - public void shouldGetNoIndex() + public void shouldGetNoIndexForMissingTokens() { int label = token.nodeLabel( "Node" ); int prop = token.propertyKey( "prop" ); @@ -554,6 +554,19 @@ public void shouldGetNoIndex() assertEquals( "just bad", CapableIndexReference.NO_INDEX, schemaRead.index( badLabel, badProp ) ); } + @Test + public void shouldGetNoIndexForUnknownTokens() + { + int label = token.nodeLabel( "Node" ); + int prop = token.propertyKey( "prop" ); + int badLabel = Integer.MAX_VALUE; + int badProp = Integer.MAX_VALUE; + + assertEquals( "bad label", CapableIndexReference.NO_INDEX, schemaRead.index( badLabel, prop ) ); + assertEquals( "bad prop", CapableIndexReference.NO_INDEX, schemaRead.index( label, badProp ) ); + assertEquals( "just bad", CapableIndexReference.NO_INDEX, schemaRead.index( badLabel, badProp ) ); + } + @Test public void shouldGetVersionAndKeyFromIndexReference() throws Exception { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/ReadOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/api/ReadOperations.java index 1eb8eaae979b..e839e3bed164 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/ReadOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/ReadOperations.java @@ -41,7 +41,6 @@ import org.neo4j.internal.kernel.api.procs.QualifiedName; import org.neo4j.internal.kernel.api.procs.UserFunctionHandle; import org.neo4j.internal.kernel.api.procs.UserFunctionSignature; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; import org.neo4j.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException; @@ -226,8 +225,10 @@ void relationshipVisit( long relId, RelationshipVi //== SCHEMA OPERATIONS ====================== //=========================================== - /** Returns the index rule for the given LabelSchemaDescriptor. */ - SchemaIndexDescriptor indexGetForSchema( LabelSchemaDescriptor descriptor ) + /** + * Returns the index rule for the given SchemaDescriptor. + */ + SchemaIndexDescriptor indexGetForSchema( SchemaDescriptor descriptor ) throws SchemaRuleNotFoundException; /** Get all indexes for a label. */ diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/SchemaWriteOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/api/SchemaWriteOperations.java index fa70b278d81d..b73fb4cb30b7 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/SchemaWriteOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/SchemaWriteOperations.java @@ -21,6 +21,7 @@ import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.RelationTypeSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException; import org.neo4j.kernel.api.exceptions.schema.AlreadyIndexedException; @@ -41,7 +42,7 @@ public interface SchemaWriteOperations * {@code labelId}. * @param schemaDescriptor */ - SchemaIndexDescriptor indexCreate( LabelSchemaDescriptor schemaDescriptor ) + SchemaIndexDescriptor indexCreate( SchemaDescriptor schemaDescriptor ) throws AlreadyIndexedException, AlreadyConstrainedException, RepeatedPropertyInCompositeSchemaException; /** Drops a {@link SchemaIndexDescriptor} from the database */ diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/index/IndexEntryConflictException.java b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/index/IndexEntryConflictException.java index 4373b390ea01..39c51866d3f5 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/index/IndexEntryConflictException.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/index/IndexEntryConflictException.java @@ -21,7 +21,7 @@ import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.exceptions.KernelException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaUtil; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; import org.neo4j.values.storable.Value; @@ -65,11 +65,11 @@ public RuntimeException notAllowed( SchemaIndexDescriptor descriptor ) descriptor.userDescription( SchemaUtil.idTokenNameLookup ) ), this ); } - public String evidenceMessage( TokenNameLookup tokenNameLookup, LabelSchemaDescriptor schema ) + public String evidenceMessage( TokenNameLookup tokenNameLookup, SchemaDescriptor schema ) { assert schema.getPropertyIds().length == propertyValues.size(); - String labelName = tokenNameLookup.labelGetName( schema.getLabelId() ); + String labelName = tokenNameLookup.labelGetName( schema.keyId() ); if ( addedNodeId == NO_SUCH_NODE ) { return format( "Node(%d) already exists with label `%s` and %s", diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/index/IndexPopulationFailedKernelException.java b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/index/IndexPopulationFailedKernelException.java index dc3fe8baa809..cd79ba1d7f02 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/index/IndexPopulationFailedKernelException.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/index/IndexPopulationFailedKernelException.java @@ -22,24 +22,24 @@ import java.util.Arrays; import org.neo4j.internal.kernel.api.exceptions.KernelException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.Status; public class IndexPopulationFailedKernelException extends KernelException { private static final String FORMAT_MESSAGE = "Failed to populate index for %s [labelId: %d, properties %s]"; - public IndexPopulationFailedKernelException( LabelSchemaDescriptor descriptor, String indexUserDescription, + public IndexPopulationFailedKernelException( SchemaDescriptor descriptor, String indexUserDescription, Throwable cause ) { super( Status.Schema.IndexCreationFailed, cause, FORMAT_MESSAGE, indexUserDescription, - descriptor.getLabelId(), Arrays.toString( descriptor.getPropertyIds() ) ); + descriptor.keyId(), Arrays.toString( descriptor.getPropertyIds() ) ); } - public IndexPopulationFailedKernelException( LabelSchemaDescriptor descriptor, String indexUserDescription, + public IndexPopulationFailedKernelException( SchemaDescriptor descriptor, String indexUserDescription, String message ) { super( Status.Schema.IndexCreationFailed, FORMAT_MESSAGE + ", due to " + message, - indexUserDescription, descriptor.getLabelId(), Arrays.toString( descriptor.getPropertyIds() ) ); + indexUserDescription, descriptor.keyId(), Arrays.toString( descriptor.getPropertyIds() ) ); } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/AlreadyConstrainedException.java b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/AlreadyConstrainedException.java index c000840023bd..dbb50a7e0d21 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/AlreadyConstrainedException.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/AlreadyConstrainedException.java @@ -21,7 +21,6 @@ import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.exceptions.schema.SchemaKernelException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; import org.neo4j.kernel.api.exceptions.Status; @@ -58,9 +57,7 @@ private static String constructUserMessage( OperationContext context, TokenNameL switch ( context ) { case INDEX_CREATION: - // is is safe to cast here because we only support indexes on nodes atm - return messageWithLabelAndPropertyName( tokenNameLookup, INDEX_CONTEXT_FORMAT, - (LabelSchemaDescriptor) constraint.schema() ); + return messageWithLabelAndPropertyName( tokenNameLookup, INDEX_CONTEXT_FORMAT, constraint.schema() ); case CONSTRAINT_CREATION: return ALREADY_CONSTRAINED_MESSAGE_PREFIX + constraint.prettyPrint( tokenNameLookup ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/AlreadyIndexedException.java b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/AlreadyIndexedException.java index 942a8360da6f..6e53f9ec79ef 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/AlreadyIndexedException.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/AlreadyIndexedException.java @@ -21,7 +21,7 @@ import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.exceptions.schema.SchemaKernelException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.Status; public class AlreadyIndexedException extends SchemaKernelException @@ -32,10 +32,10 @@ public class AlreadyIndexedException extends SchemaKernelException private static final String CONSTRAINT_CONTEXT_FORMAT = "There already exists an index for label '%s' on %s. " + "A constraint cannot be created until the index has been dropped."; - private final LabelSchemaDescriptor descriptor; + private final SchemaDescriptor descriptor; private final OperationContext context; - public AlreadyIndexedException( LabelSchemaDescriptor descriptor, OperationContext context ) + public AlreadyIndexedException( SchemaDescriptor descriptor, OperationContext context ) { super( Status.Schema.IndexAlreadyExists, constructUserMessage( context, null, descriptor ) ); @@ -44,7 +44,7 @@ public AlreadyIndexedException( LabelSchemaDescriptor descriptor, OperationConte } private static String constructUserMessage( OperationContext context, TokenNameLookup tokenNameLookup, - LabelSchemaDescriptor descriptor ) + SchemaDescriptor descriptor ) { switch ( context ) { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/DropIndexFailureException.java b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/DropIndexFailureException.java index 1635d3c6d09c..ed7e8692d925 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/DropIndexFailureException.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/DropIndexFailureException.java @@ -22,7 +22,7 @@ import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.exceptions.KernelException; import org.neo4j.internal.kernel.api.exceptions.schema.SchemaKernelException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaUtil; import org.neo4j.kernel.api.exceptions.Status; @@ -30,10 +30,10 @@ public class DropIndexFailureException extends SchemaKernelException { - private final LabelSchemaDescriptor descriptor; + private final SchemaDescriptor descriptor; private static final String message = "Unable to drop index on %s: %s"; - public DropIndexFailureException( LabelSchemaDescriptor descriptor, SchemaKernelException cause ) + public DropIndexFailureException( SchemaDescriptor descriptor, SchemaKernelException cause ) { super( Status.Schema.IndexDropFailed, format( message, descriptor.userDescription( SchemaUtil.idTokenNameLookup ), cause.getMessage() ), cause ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/IndexBelongsToConstraintException.java b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/IndexBelongsToConstraintException.java index d8cd81a3f404..190acb81dc1c 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/IndexBelongsToConstraintException.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/IndexBelongsToConstraintException.java @@ -21,17 +21,17 @@ import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.exceptions.schema.SchemaKernelException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.Status; import static java.lang.String.format; public class IndexBelongsToConstraintException extends SchemaKernelException { - private final LabelSchemaDescriptor descriptor; + private final SchemaDescriptor descriptor; private static final String message = "Index belongs to constraint: %s"; - public IndexBelongsToConstraintException( LabelSchemaDescriptor descriptor ) + public IndexBelongsToConstraintException( SchemaDescriptor descriptor ) { super( Status.Schema.ForbiddenOnConstraintIndex, format( "Index belongs to constraint: %s", descriptor ) ); this.descriptor = descriptor; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/NoSuchIndexException.java b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/NoSuchIndexException.java index 13b653c898c5..4b5c9b396469 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/NoSuchIndexException.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/NoSuchIndexException.java @@ -21,7 +21,7 @@ import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.exceptions.schema.SchemaKernelException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaUtil; import org.neo4j.kernel.api.exceptions.Status; @@ -29,10 +29,10 @@ public class NoSuchIndexException extends SchemaKernelException { - private final LabelSchemaDescriptor descriptor; + private final SchemaDescriptor descriptor; private static final String message = "No such INDEX ON %s."; - public NoSuchIndexException( LabelSchemaDescriptor descriptor ) + public NoSuchIndexException( SchemaDescriptor descriptor ) { super( Status.Schema.IndexNotFound, format( message, descriptor.userDescription( SchemaUtil.idTokenNameLookup ) ) ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/UniquePropertyValueValidationException.java b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/UniquePropertyValueValidationException.java index 0c2b1a136200..8e57b5fbac60 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/UniquePropertyValueValidationException.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/schema/UniquePropertyValueValidationException.java @@ -25,7 +25,7 @@ import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.exceptions.schema.ConstraintValidationException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.schema.constaints.IndexBackedConstraintDescriptor; @@ -56,7 +56,7 @@ public UniquePropertyValueValidationException( IndexBackedConstraintDescriptor c @Override public String getUserMessage( TokenNameLookup tokenNameLookup ) { - LabelSchemaDescriptor schema = (LabelSchemaDescriptor)constraint.schema(); + SchemaDescriptor schema = constraint.schema(); StringBuilder message = new StringBuilder(); for ( Iterator iterator = conflicts.iterator(); iterator.hasNext(); ) { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/index/IndexEntryUpdate.java b/community/kernel/src/main/java/org/neo4j/kernel/api/index/IndexEntryUpdate.java index b231101395d4..11fcfbeae040 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/index/IndexEntryUpdate.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/index/IndexEntryUpdate.java @@ -22,6 +22,7 @@ import java.util.Arrays; import org.neo4j.internal.kernel.api.schema.LabelSchemaSupplier; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptorSupplier; import org.neo4j.internal.kernel.api.schema.SchemaUtil; import org.neo4j.kernel.impl.api.index.UpdateMode; import org.neo4j.values.storable.Value; @@ -35,7 +36,7 @@ * * @param {@link LabelSchemaSupplier} specifying the schema */ -public class IndexEntryUpdate +public class IndexEntryUpdate { private final long entityId; private final UpdateMode updateMode; @@ -136,29 +137,29 @@ public String toString() Arrays.toString( before ), Arrays.toString( values ) ); } - public static IndexEntryUpdate add( - long nodeId, INDEX_KEY indexKey, Value... values ) + public static IndexEntryUpdate add( + long entityId, INDEX_KEY indexKey, Value... values ) { - return new IndexEntryUpdate<>( nodeId, indexKey, UpdateMode.ADDED, values ); + return new IndexEntryUpdate<>( entityId, indexKey, UpdateMode.ADDED, values ); } - public static IndexEntryUpdate remove( - long nodeId, INDEX_KEY indexKey, Value... values ) + public static IndexEntryUpdate remove( + long entityId, INDEX_KEY indexKey, Value... values ) { - return new IndexEntryUpdate<>( nodeId, indexKey, UpdateMode.REMOVED, values ); + return new IndexEntryUpdate<>( entityId, indexKey, UpdateMode.REMOVED, values ); } - public static IndexEntryUpdate change( - long nodeId, INDEX_KEY indexKey, Value before, Value after ) + public static IndexEntryUpdate change( + long entityId, INDEX_KEY indexKey, Value before, Value after ) { - return new IndexEntryUpdate<>( nodeId, indexKey, UpdateMode.CHANGED, + return new IndexEntryUpdate<>( entityId, indexKey, UpdateMode.CHANGED, new Value[]{before}, new Value[]{after} ); } - public static IndexEntryUpdate change( - long nodeId, INDEX_KEY indexKey, Value[] before, Value[] after ) + public static IndexEntryUpdate change( + long entityId, INDEX_KEY indexKey, Value[] before, Value[] after ) { - return new IndexEntryUpdate<>( nodeId, indexKey, UpdateMode.CHANGED, before, after ); + return new IndexEntryUpdate<>( entityId, indexKey, UpdateMode.CHANGED, before, after ); } public Value[] beforeValues() diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/schema/LabelSchemaDescriptor.java b/community/kernel/src/main/java/org/neo4j/kernel/api/schema/LabelSchemaDescriptor.java index 966391053be8..8e9bb48123dd 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/schema/LabelSchemaDescriptor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/schema/LabelSchemaDescriptor.java @@ -33,7 +33,7 @@ public class LabelSchemaDescriptor implements org.neo4j.internal.kernel.api.sche private final int labelId; private final int[] propertyIds; - public LabelSchemaDescriptor( int labelId, int... propertyIds ) + LabelSchemaDescriptor( int labelId, int... propertyIds ) { this.labelId = labelId; this.propertyIds = propertyIds; @@ -58,6 +58,12 @@ public String userDescription( TokenNameLookup tokenNameLookup ) SchemaUtil.niceProperties( tokenNameLookup, propertyIds ) ); } + @Override + public String keyName( TokenNameLookup tokenNameLookup ) + { + return tokenNameLookup.labelGetName( labelId ); + } + @Override public int getLabelId() { @@ -82,17 +88,6 @@ public int[] getPropertyIds() return propertyIds; } - @Override - public int getPropertyId() - { - if ( propertyIds.length != 1 ) - { - throw new IllegalStateException( - "Single property schema requires one property but had " + propertyIds.length ); - } - return propertyIds[0]; - } - @Override public boolean equals( Object o ) { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/schema/RelationTypeSchemaDescriptor.java b/community/kernel/src/main/java/org/neo4j/kernel/api/schema/RelationTypeSchemaDescriptor.java index abd87bd0b12d..9fbb40d6996b 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/schema/RelationTypeSchemaDescriptor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/schema/RelationTypeSchemaDescriptor.java @@ -23,6 +23,7 @@ import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.schema.SchemaComputer; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaProcessor; import org.neo4j.internal.kernel.api.schema.SchemaUtil; import org.neo4j.kernel.impl.locking.ResourceTypes; @@ -58,6 +59,12 @@ public String userDescription( TokenNameLookup tokenNameLookup ) SchemaUtil.niceProperties( tokenNameLookup, propertyIds ) ); } + @Override + public String keyName( TokenNameLookup tokenNameLookup ) + { + return tokenNameLookup.relationshipTypeGetName( relTypeId ); + } + @Override public int getRelTypeId() { @@ -82,17 +89,6 @@ public ResourceType keyType() return ResourceTypes.RELATIONSHIP_TYPE; } - @Override - public int getPropertyId() - { - if ( propertyIds.length != 1 ) - { - throw new IllegalStateException( - "Single property schema requires one property but had " + propertyIds.length ); - } - return propertyIds[0]; - } - @Override public boolean equals( Object o ) { @@ -109,4 +105,10 @@ public int hashCode() { return Arrays.hashCode( propertyIds ) + 31 * relTypeId; } + + @Override + public SchemaDescriptor schema() + { + return this; + } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/schema/index/SchemaIndexDescriptor.java b/community/kernel/src/main/java/org/neo4j/kernel/api/schema/index/SchemaIndexDescriptor.java index 4236814e599b..e5fdeb111cc1 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/schema/index/SchemaIndexDescriptor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/schema/index/SchemaIndexDescriptor.java @@ -25,8 +25,8 @@ import org.neo4j.helpers.collection.Iterators; import org.neo4j.internal.kernel.api.TokenNameLookup; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; -import org.neo4j.internal.kernel.api.schema.LabelSchemaSupplier; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptorSupplier; import org.neo4j.internal.kernel.api.schema.SchemaUtil; import static java.lang.String.format; @@ -37,7 +37,7 @@ * Internal representation of a graph index, including the schema unit it targets (eg. label-property combination) * and the type of index. UNIQUE indexes are used to back uniqueness constraints. */ -public class SchemaIndexDescriptor implements LabelSchemaSupplier +public class SchemaIndexDescriptor implements SchemaDescriptorSupplier { public enum Type { @@ -78,10 +78,10 @@ public interface Supplier SchemaIndexDescriptor getIndexDescriptor(); } - private final LabelSchemaDescriptor schema; + private final SchemaDescriptor schema; private final SchemaIndexDescriptor.Type type; - public SchemaIndexDescriptor( LabelSchemaDescriptor schema, Type type ) + public SchemaIndexDescriptor( SchemaDescriptor schema, Type type ) { this.schema = schema; this.type = type; @@ -99,7 +99,7 @@ public Type type() * When we do, consider down-typing this to a SchemaDescriptor. */ @Override - public LabelSchemaDescriptor schema() + public SchemaDescriptor schema() { return schema; } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/schema/index/SchemaIndexDescriptorFactory.java b/community/kernel/src/main/java/org/neo4j/kernel/api/schema/index/SchemaIndexDescriptorFactory.java index 24403f465ea2..3db5b104d34c 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/schema/index/SchemaIndexDescriptorFactory.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/schema/index/SchemaIndexDescriptorFactory.java @@ -20,7 +20,7 @@ package org.neo4j.kernel.api.schema.index; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import static org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor.Type.GENERAL; @@ -42,12 +42,12 @@ public static SchemaIndexDescriptor uniqueForLabel( int labelId, int... property return uniqueForSchema( SchemaDescriptorFactory.forLabel( labelId, propertyIds ) ); } - public static SchemaIndexDescriptor forSchema( LabelSchemaDescriptor schema ) + public static SchemaIndexDescriptor forSchema( SchemaDescriptor schema ) { return new SchemaIndexDescriptor( schema, GENERAL ); } - public static SchemaIndexDescriptor uniqueForSchema( LabelSchemaDescriptor schema ) + public static SchemaIndexDescriptor uniqueForSchema( SchemaDescriptor schema ) { return new SchemaIndexDescriptor( schema, UNIQUE ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/TransactionState.java b/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/TransactionState.java index d699f7d2e53b..98cbccb3b5cf 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/TransactionState.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/TransactionState.java @@ -19,7 +19,7 @@ */ package org.neo4j.kernel.api.txstate; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; import org.neo4j.kernel.api.schema.constaints.IndexBackedConstraintDescriptor; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; @@ -91,6 +91,6 @@ public interface TransactionState extends ReadableTransactionState boolean constraintDoUnRemove( ConstraintDescriptor constraint ); - void indexDoUpdateEntry( LabelSchemaDescriptor descriptor, long nodeId, ValueTuple before, ValueTuple after ); + void indexDoUpdateEntry( SchemaDescriptor descriptor, long nodeId, ValueTuple before, ValueTuple after ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/builtinprocs/BuiltInProcedures.java b/community/kernel/src/main/java/org/neo4j/kernel/builtinprocs/BuiltInProcedures.java index 0d01e5c0e1fc..36cb5da9d7db 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/builtinprocs/BuiltInProcedures.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/builtinprocs/BuiltInProcedures.java @@ -135,7 +135,7 @@ public Stream listIndexes() throws ProcedureException type = IndexType.NODE_LABEL_PROPERTY.typeName(); } - String label = tokens.labelGetName( index.schema().getLabelId() ); + String label = index.schema().keyName( tokens ); List propertyNames = propertyNames( tokens, index ); result.add( new IndexResult( "INDEX ON " + index.schema().userDescription( tokens ), label, propertyNames, diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/ConstraintEnforcingEntityOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/ConstraintEnforcingEntityOperations.java index e47fdf12f671..fff22cecf5de 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/ConstraintEnforcingEntityOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/ConstraintEnforcingEntityOperations.java @@ -246,7 +246,7 @@ private void validateNoExistingNodeWithExactValues( SchemaIndexDescriptor index = constraint.ownedIndexDescriptor(); assertIndexOnline( state, index ); - int labelId = index.schema().getLabelId(); + int labelId = index.schema().keyId(); state.locks().optimistic().acquireExclusive( state.lockTracer(), INDEX_ENTRY, @@ -374,7 +374,7 @@ public long nodeGetFromUniqueIndexSeek( { assertIndexOnline( state, index ); assertPredicatesMatchSchema( index.schema(), predicates ); - int labelId = index.schema().getLabelId(); + int labelId = index.schema().keyId(); // If we find the node - hold a shared lock. If we don't find a node - hold an exclusive lock. // If locks are deferred than both shared and exclusive locks will be taken only at commit time. @@ -401,7 +401,7 @@ public long nodeGetFromUniqueIndexSeek( return nodeId; } - private void assertPredicatesMatchSchema( LabelSchemaDescriptor schema, ExactPredicate[] predicates ) + private void assertPredicatesMatchSchema( SchemaDescriptor schema, ExactPredicate[] predicates ) throws IndexNotApplicableKernelException { int[] propertyIds = schema.getPropertyIds(); @@ -556,7 +556,7 @@ public Cursor nodeGetRelationships( KernelStatement statement, } @Override - public SchemaIndexDescriptor indexCreate( KernelStatement state, LabelSchemaDescriptor descriptor ) + public SchemaIndexDescriptor indexCreate( KernelStatement state, SchemaDescriptor descriptor ) throws AlreadyIndexedException, AlreadyConstrainedException, RepeatedPropertyInCompositeSchemaException { return schemaWriteOperations.indexCreate( state, descriptor ); @@ -587,7 +587,7 @@ public NodeKeyConstraintDescriptor nodeKeyConstraintCreate( KernelStatement stat } @Override - public UniquenessConstraintDescriptor uniquePropertyConstraintCreate( KernelStatement state, LabelSchemaDescriptor descriptor ) + public UniquenessConstraintDescriptor uniquePropertyConstraintCreate( KernelStatement state, SchemaDescriptor descriptor ) throws AlreadyConstrainedException, CreateConstraintFailureException, AlreadyIndexedException, RepeatedPropertyInCompositeSchemaException { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/DataIntegrityValidatingStatementOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/DataIntegrityValidatingStatementOperations.java index d9e41ddb6fa0..331be509c2d2 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/DataIntegrityValidatingStatementOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/DataIntegrityValidatingStatementOperations.java @@ -113,7 +113,7 @@ public void relationshipTypeCreateForName( KernelStatement state, String relatio } @Override - public SchemaIndexDescriptor indexCreate( KernelStatement state, LabelSchemaDescriptor descriptor ) + public SchemaIndexDescriptor indexCreate( KernelStatement state, SchemaDescriptor descriptor ) throws AlreadyIndexedException, AlreadyConstrainedException, RepeatedPropertyInCompositeSchemaException { assertValidDescriptor( descriptor, OperationContext.INDEX_CREATION ); @@ -173,7 +173,7 @@ public NodeKeyConstraintDescriptor nodeKeyConstraintCreate( @Override public UniquenessConstraintDescriptor uniquePropertyConstraintCreate( - KernelStatement state, LabelSchemaDescriptor descriptor ) + KernelStatement state, SchemaDescriptor descriptor ) throws AlreadyConstrainedException, CreateConstraintFailureException, AlreadyIndexedException, RepeatedPropertyInCompositeSchemaException { @@ -225,7 +225,7 @@ public void constraintDrop( KernelStatement state, ConstraintDescriptor descript } private void assertIndexDoesNotExist( KernelStatement state, OperationContext context, - LabelSchemaDescriptor descriptor ) + SchemaDescriptor descriptor ) throws AlreadyIndexedException, AlreadyConstrainedException { SchemaIndexDescriptor existingIndex = schemaReadDelegate.indexGetForSchema( state, descriptor ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/LockingStatementOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/LockingStatementOperations.java index 27ac08b6b3a1..4dc585df0370 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/LockingStatementOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/LockingStatementOperations.java @@ -112,10 +112,10 @@ public boolean nodeRemoveLabel( KernelStatement state, long nodeId, int labelId } @Override - public SchemaIndexDescriptor indexCreate( KernelStatement state, LabelSchemaDescriptor descriptor ) + public SchemaIndexDescriptor indexCreate( KernelStatement state, SchemaDescriptor descriptor ) throws AlreadyIndexedException, AlreadyConstrainedException, RepeatedPropertyInCompositeSchemaException { - exclusiveLabelLock( state, descriptor.getLabelId() ); + exclusiveLabelLock( state, descriptor.keyId() ); state.assertOpen(); return schemaWriteDelegate.indexCreate( state, descriptor ); } @@ -123,7 +123,7 @@ public SchemaIndexDescriptor indexCreate( KernelStatement state, LabelSchemaDesc @Override public void indexDrop( KernelStatement state, SchemaIndexDescriptor descriptor ) throws DropIndexFailureException { - exclusiveLabelLock( state, descriptor.schema().getLabelId() ); + exclusiveLabelLock( state, descriptor.schema().keyId() ); state.assertOpen(); schemaWriteDelegate.indexDrop( state, descriptor ); } @@ -131,7 +131,7 @@ public void indexDrop( KernelStatement state, SchemaIndexDescriptor descriptor ) @Override public void uniqueIndexDrop( KernelStatement state, SchemaIndexDescriptor descriptor ) throws DropIndexFailureException { - exclusiveLabelLock( state, descriptor.schema().getLabelId() ); + exclusiveLabelLock( state, descriptor.schema().keyId() ); state.assertOpen(); schemaWriteDelegate.uniqueIndexDrop( state, descriptor ); } @@ -166,9 +166,9 @@ public Iterator indexesGetForLabel( KernelStatement state } @Override - public SchemaIndexDescriptor indexGetForSchema( KernelStatement state, LabelSchemaDescriptor descriptor ) + public SchemaIndexDescriptor indexGetForSchema( KernelStatement state, SchemaDescriptor descriptor ) { - sharedLabelLock( state, descriptor.getLabelId() ); + sharedLabelLock( state, descriptor.keyId() ); state.assertOpen(); return schemaReadDelegate.indexGetForSchema( state, descriptor ); } @@ -179,7 +179,7 @@ public Iterator indexesGetAll( KernelStatement state ) state.assertOpen(); return Iterators.map( indexDescriptor -> { - sharedLabelLock( state, indexDescriptor.schema().getLabelId() ); + sharedLabelLock( state, indexDescriptor.schema().keyId() ); return indexDescriptor; }, schemaReadDelegate.indexesGetAll( state ) ); } @@ -188,7 +188,7 @@ public Iterator indexesGetAll( KernelStatement state ) public InternalIndexState indexGetState( KernelStatement state, SchemaIndexDescriptor descriptor ) throws IndexNotFoundKernelException { - sharedLabelLock( state, descriptor.schema().getLabelId() ); + sharedLabelLock( state, descriptor.schema().keyId() ); state.assertOpen(); return schemaReadDelegate.indexGetState( state, descriptor ); } @@ -196,7 +196,7 @@ public InternalIndexState indexGetState( KernelStatement state, SchemaIndexDescr @Override public IndexProvider.Descriptor indexGetProviderDescriptor( KernelStatement state, SchemaIndexDescriptor descriptor ) throws IndexNotFoundKernelException { - sharedLabelLock( state, descriptor.schema().getLabelId() ); + sharedLabelLock( state, descriptor.schema().keyId() ); state.assertOpen(); return schemaReadDelegate.indexGetProviderDescriptor( state, descriptor ); } @@ -205,7 +205,7 @@ public IndexProvider.Descriptor indexGetProviderDescriptor( KernelStatement stat public PopulationProgress indexGetPopulationProgress( KernelStatement state, SchemaIndexDescriptor descriptor ) throws IndexNotFoundKernelException { - sharedLabelLock( state, descriptor.schema().getLabelId() ); + sharedLabelLock( state, descriptor.schema().keyId() ); state.assertOpen(); return schemaReadDelegate.indexGetPopulationProgress( state, descriptor ); } @@ -213,7 +213,7 @@ public PopulationProgress indexGetPopulationProgress( KernelStatement state, Sch @Override public long indexSize( KernelStatement state, SchemaIndexDescriptor descriptor ) throws IndexNotFoundKernelException { - sharedLabelLock( state, descriptor.schema().getLabelId() ); + sharedLabelLock( state, descriptor.schema().keyId() ); state.assertOpen(); return schemaReadDelegate.indexSize( state, descriptor ); } @@ -222,7 +222,7 @@ public long indexSize( KernelStatement state, SchemaIndexDescriptor descriptor ) public double indexUniqueValuesPercentage( KernelStatement state, SchemaIndexDescriptor descriptor ) throws IndexNotFoundKernelException { - sharedLabelLock( state, descriptor.schema().getLabelId() ); + sharedLabelLock( state, descriptor.schema().keyId() ); state.assertOpen(); return schemaReadDelegate.indexUniqueValuesPercentage( state, descriptor ); } @@ -230,7 +230,7 @@ public double indexUniqueValuesPercentage( KernelStatement state, @Override public Long indexGetOwningUniquenessConstraintId( KernelStatement state, SchemaIndexDescriptor index ) { - sharedLabelLock( state, index.schema().getLabelId() ); + sharedLabelLock( state, index.schema().keyId() ); state.assertOpen(); return schemaReadDelegate.indexGetOwningUniquenessConstraintId( state, index ); } @@ -239,7 +239,7 @@ public Long indexGetOwningUniquenessConstraintId( KernelStatement state, SchemaI public long indexGetCommittedId( KernelStatement state, SchemaIndexDescriptor index ) throws SchemaRuleNotFoundException { - sharedLabelLock( state, index.schema().getLabelId() ); + sharedLabelLock( state, index.schema().keyId() ); state.assertOpen(); return schemaReadDelegate.indexGetCommittedId( state, index ); } @@ -328,11 +328,11 @@ public NodeKeyConstraintDescriptor nodeKeyConstraintCreate( KernelStatement stat } @Override - public UniquenessConstraintDescriptor uniquePropertyConstraintCreate( KernelStatement state, LabelSchemaDescriptor descriptor ) + public UniquenessConstraintDescriptor uniquePropertyConstraintCreate( KernelStatement state, SchemaDescriptor descriptor ) throws CreateConstraintFailureException, AlreadyConstrainedException, AlreadyIndexedException, RepeatedPropertyInCompositeSchemaException { - exclusiveLabelLock( state, descriptor.getLabelId() ); + exclusiveLabelLock( state, descriptor.keyId() ); state.assertOpen(); return schemaWriteDelegate.uniquePropertyConstraintCreate( state, descriptor ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/OperationsFacade.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/OperationsFacade.java index 0e6221bade8c..c2844999c741 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/OperationsFacade.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/OperationsFacade.java @@ -554,7 +554,7 @@ public Cursor relationshipGetProperties( RelationshipItem relation // @Override - public SchemaIndexDescriptor indexGetForSchema( LabelSchemaDescriptor descriptor ) + public SchemaIndexDescriptor indexGetForSchema( SchemaDescriptor descriptor ) throws SchemaRuleNotFoundException { statement.assertOpen(); @@ -940,7 +940,7 @@ public Value graphRemoveProperty( int propertyKeyId ) // @Override - public SchemaIndexDescriptor indexCreate( LabelSchemaDescriptor descriptor ) + public SchemaIndexDescriptor indexCreate( SchemaDescriptor descriptor ) throws AlreadyIndexedException, AlreadyConstrainedException, RepeatedPropertyInCompositeSchemaException { statement.assertOpen(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/StateHandlingStatementOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/StateHandlingStatementOperations.java index 744f6fb4d779..06030ace91c7 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/StateHandlingStatementOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/StateHandlingStatementOperations.java @@ -558,7 +558,7 @@ public long relationshipsGetCount( KernelStatement state ) } @Override - public SchemaIndexDescriptor indexCreate( KernelStatement state, LabelSchemaDescriptor descriptor ) + public SchemaIndexDescriptor indexCreate( KernelStatement state, SchemaDescriptor descriptor ) { SchemaIndexDescriptor schemaIndexDescriptor = SchemaIndexDescriptorFactory.forSchema( descriptor ); state.txState().indexRuleDoAdd( schemaIndexDescriptor ); @@ -631,7 +631,7 @@ public NodeKeyConstraintDescriptor nodeKeyConstraintCreate( KernelStatement stat } @Override - public UniquenessConstraintDescriptor uniquePropertyConstraintCreate( KernelStatement state, LabelSchemaDescriptor descriptor ) + public UniquenessConstraintDescriptor uniquePropertyConstraintCreate( KernelStatement state, SchemaDescriptor descriptor ) throws CreateConstraintFailureException { UniquenessConstraintDescriptor constraint = ConstraintDescriptorFactory.uniqueForSchema( descriptor ); @@ -726,7 +726,7 @@ public void constraintDrop( KernelStatement state, ConstraintDescriptor constrai } @Override - public SchemaIndexDescriptor indexGetForSchema( KernelStatement state, LabelSchemaDescriptor descriptor ) + public SchemaIndexDescriptor indexGetForSchema( KernelStatement state, SchemaDescriptor descriptor ) { SchemaIndexDescriptor schemaIndexDescriptor = storeLayer.indexGetForSchema( descriptor ); Iterator rules = iterator( schemaIndexDescriptor ); @@ -734,7 +734,7 @@ public SchemaIndexDescriptor indexGetForSchema( KernelStatement state, LabelSche { rules = filter( SchemaDescriptor.equalTo( descriptor ), - state.txState().indexDiffSetsByLabel( descriptor.getLabelId() ).apply( rules ) ); + state.txState().indexDiffSetsByLabel( descriptor.keyId() ).apply( rules ) ); } return singleOrNull( rules ); } @@ -747,7 +747,7 @@ public InternalIndexState indexGetState( KernelStatement state, SchemaIndexDescr if ( state.hasTxStateWithChanges() ) { if ( checkIndexState( descriptor, - state.txState().indexDiffSetsByLabel( descriptor.schema().getLabelId() ) ) ) + state.txState().indexDiffSetsByLabel( descriptor.schema().keyId() ) ) ) { return InternalIndexState.POPULATING; } @@ -762,7 +762,7 @@ public IndexProvider.Descriptor indexGetProviderDescriptor( KernelStatement stat if ( state.hasTxStateWithChanges() ) { if ( checkIndexState( descriptor, - state.txState().indexDiffSetsByLabel( descriptor.schema().getLabelId() ) ) ) + state.txState().indexDiffSetsByLabel( descriptor.schema().keyId() ) ) ) { return IndexProvider.UNDECIDED; } @@ -778,7 +778,7 @@ public PopulationProgress indexGetPopulationProgress( KernelStatement state, Sch if ( state.hasTxStateWithChanges() ) { if ( checkIndexState( descriptor, - state.txState().indexDiffSetsByLabel( descriptor.schema().getLabelId() ) ) ) + state.txState().indexDiffSetsByLabel( descriptor.schema().keyId() ) ) ) { return PopulationProgress.NONE; } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/AbstractDelegatingIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/AbstractDelegatingIndexProxy.java index c5935cb92de6..455f06b06ae5 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/AbstractDelegatingIndexProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/AbstractDelegatingIndexProxy.java @@ -25,7 +25,7 @@ import org.neo4j.graphdb.ResourceIterator; import org.neo4j.internal.kernel.api.IndexCapability; import org.neo4j.internal.kernel.api.InternalIndexState; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.io.pagecache.IOLimiter; import org.neo4j.kernel.api.exceptions.index.IndexActivationFailedKernelException; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; @@ -80,7 +80,7 @@ public SchemaIndexDescriptor getDescriptor() } @Override - public LabelSchemaDescriptor schema() + public SchemaDescriptor schema() { return getDelegate().schema(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/AbstractSwallowingIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/AbstractSwallowingIndexProxy.java index d30af8e005ca..be126b017a13 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/AbstractSwallowingIndexProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/AbstractSwallowingIndexProxy.java @@ -20,7 +20,7 @@ package org.neo4j.kernel.impl.api.index; import org.neo4j.internal.kernel.api.IndexCapability; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.io.pagecache.IOLimiter; import org.neo4j.kernel.api.index.IndexUpdater; import org.neo4j.kernel.api.index.IndexProvider; @@ -88,7 +88,7 @@ public SchemaIndexDescriptor getDescriptor() } @Override - public LabelSchemaDescriptor schema() + public SchemaDescriptor schema() { return indexMeta.indexDescriptor().schema(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FlippableIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FlippableIndexProxy.java index 8aedad6b59cb..3058f75feb94 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FlippableIndexProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FlippableIndexProxy.java @@ -29,7 +29,7 @@ import org.neo4j.graphdb.ResourceIterator; import org.neo4j.internal.kernel.api.IndexCapability; import org.neo4j.internal.kernel.api.InternalIndexState; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.io.pagecache.IOLimiter; import org.neo4j.kernel.api.exceptions.index.ExceptionDuringFlipKernelException; import org.neo4j.kernel.api.exceptions.index.FlipFailedKernelException; @@ -228,7 +228,7 @@ public SchemaIndexDescriptor getDescriptor() } @Override - public LabelSchemaDescriptor schema() + public SchemaDescriptor schema() { lock.readLock().lock(); try diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexMap.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexMap.java index 91cc40b1a90e..1ee47186e80e 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexMap.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexMap.java @@ -34,7 +34,7 @@ import org.neo4j.collection.primitive.PrimitiveLongCollections; import org.neo4j.collection.primitive.PrimitiveLongIterator; import org.neo4j.collection.primitive.PrimitiveLongObjectMap; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; /** * Bundles various mappings to IndexProxy. Used by IndexingService via IndexMapReference. @@ -45,10 +45,10 @@ public final class IndexMap implements Cloneable { private final PrimitiveLongObjectMap indexesById; - private final Map indexesByDescriptor; - private final Map indexIdsByDescriptor; - private final PrimitiveIntObjectMap> descriptorsByLabel; - private final PrimitiveIntObjectMap> descriptorsByProperty; + private final Map indexesByDescriptor; + private final Map indexIdsByDescriptor; + private final PrimitiveIntObjectMap> descriptorsByLabel; + private final PrimitiveIntObjectMap> descriptorsByProperty; public IndexMap() { @@ -62,15 +62,15 @@ public IndexMap() private IndexMap( PrimitiveLongObjectMap indexesById, - Map indexesByDescriptor, - Map indexIdsByDescriptor ) + Map indexesByDescriptor, + Map indexIdsByDescriptor ) { this.indexesById = indexesById; this.indexesByDescriptor = indexesByDescriptor; this.indexIdsByDescriptor = indexIdsByDescriptor; this.descriptorsByLabel = Primitive.intObjectMap(); this.descriptorsByProperty = Primitive.intObjectMap(); - for ( LabelSchemaDescriptor schema : indexesByDescriptor.keySet() ) + for ( SchemaDescriptor schema : indexesByDescriptor.keySet() ) { addDescriptorToLookups( schema ); } @@ -81,19 +81,19 @@ public IndexProxy getIndexProxy( long indexId ) return indexesById.get( indexId ); } - public IndexProxy getIndexProxy( LabelSchemaDescriptor descriptor ) + public IndexProxy getIndexProxy( SchemaDescriptor descriptor ) { return indexesByDescriptor.get( descriptor ); } - public long getIndexId( LabelSchemaDescriptor descriptor ) + public long getIndexId( SchemaDescriptor descriptor ) { return indexIdsByDescriptor.get( descriptor ); } public void putIndexProxy( long indexId, IndexProxy indexProxy ) { - LabelSchemaDescriptor schema = indexProxy.getDescriptor().schema(); + SchemaDescriptor schema = indexProxy.getDescriptor().schema(); indexesById.put( indexId, indexProxy ); indexesByDescriptor.put( schema, indexProxy ); indexIdsByDescriptor.put( schema, indexId ); @@ -108,10 +108,10 @@ public IndexProxy removeIndexProxy( long indexId ) return null; } - LabelSchemaDescriptor schema = removedProxy.getDescriptor().schema(); + SchemaDescriptor schema = removedProxy.getDescriptor().schema(); indexesByDescriptor.remove( schema ); - removeFromLookup( schema.getLabelId(), schema, descriptorsByLabel ); + removeFromLookup( schema.keyId(), schema, descriptorsByLabel ); for ( int propertyId : schema.getPropertyIds() ) { removeFromLookup( propertyId, schema, descriptorsByProperty ); @@ -142,14 +142,14 @@ public Iterable getAllIndexProxies() * @param changedLabels set of labels that have changed * @param unchangedLabels set of labels that are unchanged * @param properties set of properties - * @return set of LabelSchemaDescriptors describing the potentially affected indexes + * @return set of SchemaDescriptors describing the potentially affected indexes */ - public Set getRelatedIndexes( + public Set getRelatedIndexes( long[] changedLabels, long[] unchangedLabels, PrimitiveIntSet properties ) { if ( changedLabels.length == 1 && properties.isEmpty() ) { - Set descriptors = descriptorsByLabel.get( (int)changedLabels[0] ); + Set descriptors = descriptorsByLabel.get( (int)changedLabels[0] ); return descriptors == null ? Collections.emptySet() : descriptors; } @@ -158,7 +158,7 @@ public Set getRelatedIndexes( return getDescriptorsByProperties( unchangedLabels, properties ); } - Set descriptors = extractIndexesByLabels( changedLabels ); + Set descriptors = extractIndexesByLabels( changedLabels ); descriptors.addAll( getDescriptorsByProperties( unchangedLabels, properties ) ); return descriptors; @@ -171,7 +171,7 @@ public IndexMap clone() cloneMap( indexIdsByDescriptor ) ); } - public Iterator descriptors() + public Iterator descriptors() { return indexesByDescriptor.keySet().iterator(); } @@ -200,9 +200,9 @@ private PrimitiveLongObjectMap clonePrimitiveMap( PrimitiveLongObjec return PrimitiveLongCollections.copy( indexesById ); } - private void addDescriptorToLookups( LabelSchemaDescriptor schema ) + private void addDescriptorToLookups( SchemaDescriptor schema ) { - addToLookup( schema.getLabelId(), schema, descriptorsByLabel ); + addToLookup( schema.keyId(), schema, descriptorsByLabel ); for ( int propertyId : schema.getPropertyIds() ) { @@ -212,10 +212,10 @@ private void addDescriptorToLookups( LabelSchemaDescriptor schema ) private void addToLookup( int key, - LabelSchemaDescriptor schema, - PrimitiveIntObjectMap> lookup ) + SchemaDescriptor schema, + PrimitiveIntObjectMap> lookup ) { - Set descriptors = lookup.get( key ); + Set descriptors = lookup.get( key ); if ( descriptors == null ) { descriptors = new HashSet<>(); @@ -226,10 +226,10 @@ private void addToLookup( private void removeFromLookup( int key, - LabelSchemaDescriptor schema, - PrimitiveIntObjectMap> lookup ) + SchemaDescriptor schema, + PrimitiveIntObjectMap> lookup ) { - Set descriptors = lookup.get( key ); + Set descriptors = lookup.get( key ); descriptors.remove( schema ); if ( descriptors.isEmpty() ) { @@ -237,9 +237,9 @@ private void removeFromLookup( } } - private static Map indexesByDescriptor( PrimitiveLongObjectMap indexesById ) + private static Map indexesByDescriptor( PrimitiveLongObjectMap indexesById ) { - Map map = new HashMap<>(); + Map map = new HashMap<>(); for ( IndexProxy proxy : indexesById.values() ) { map.put( proxy.schema(), proxy ); @@ -247,9 +247,9 @@ private static Map indexesByDescriptor( Primi return map; } - private static Map indexIdsByDescriptor( PrimitiveLongObjectMap indexesById ) + private static Map indexIdsByDescriptor( PrimitiveLongObjectMap indexesById ) { - Map map = new HashMap<>(); + Map map = new HashMap<>(); indexesById.visitEntries( ( key, indexProxy ) -> { map.put( indexProxy.schema(), key ); @@ -265,9 +265,9 @@ private static Map indexIdsByDescriptor( PrimitiveL * * @param unchangedLabels set of labels that are unchanged * @param properties set of properties that have changed - * @return set of LabelSchemaDescriptors describing the potentially affected indexes + * @return set of SchemaDescriptors describing the potentially affected indexes */ - private Set getDescriptorsByProperties( + private Set getDescriptorsByProperties( long[] unchangedLabels, PrimitiveIntSet properties ) { @@ -288,12 +288,12 @@ private Set getDescriptorsByProperties( } } - private Set extractIndexesByLabels( long[] labels ) + private Set extractIndexesByLabels( long[] labels ) { - Set set = new HashSet<>(); + Set set = new HashSet<>(); for ( long label : labels ) { - Set forLabel = descriptorsByLabel.get( (int) label ); + Set forLabel = descriptorsByLabel.get( (int) label ); if ( forLabel != null ) { set.addAll( forLabel ); @@ -307,7 +307,7 @@ private int countIndexesByLabels( long[] labels ) int count = 0; for ( long label : labels ) { - Set forLabel = descriptorsByLabel.get( (int) label ); + Set forLabel = descriptorsByLabel.get( (int) label ); if ( forLabel != null ) { count += forLabel.size(); @@ -316,12 +316,12 @@ private int countIndexesByLabels( long[] labels ) return count; } - private Set extractIndexesByProperties( PrimitiveIntSet properties ) + private Set extractIndexesByProperties( PrimitiveIntSet properties ) { - Set set = new HashSet<>(); + Set set = new HashSet<>(); for ( PrimitiveIntIterator iterator = properties.iterator(); iterator.hasNext(); ) { - Set forProperty = descriptorsByProperty.get( iterator.next() ); + Set forProperty = descriptorsByProperty.get( iterator.next() ); if ( forProperty != null ) { set.addAll( forProperty ); @@ -335,7 +335,7 @@ private int countIndexesByProperties( PrimitiveIntSet properties ) int count = 0; for ( PrimitiveIntIterator iterator = properties.iterator(); iterator.hasNext(); ) { - Set forProperty = descriptorsByProperty.get( iterator.next() ); + Set forProperty = descriptorsByProperty.get( iterator.next() ); if ( forProperty != null ) { count += forProperty.size(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexMapReference.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexMapReference.java index 1b18e287d131..0b2f0fda7ede 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexMapReference.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexMapReference.java @@ -21,7 +21,7 @@ import org.neo4j.collection.primitive.PrimitiveIntSet; import org.neo4j.function.ThrowingFunction; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; public class IndexMapReference implements IndexMapSnapshotProvider @@ -61,7 +61,7 @@ public IndexProxy getIndexProxy( long indexId ) throws IndexNotFoundKernelExcept return proxy; } - public IndexProxy getIndexProxy( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException + public IndexProxy getIndexProxy( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { IndexProxy proxy = indexMap.getIndexProxy( descriptor ); if ( proxy == null ) @@ -71,7 +71,7 @@ public IndexProxy getIndexProxy( LabelSchemaDescriptor descriptor ) throws Index return proxy; } - public long getIndexId( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException + public long getIndexId( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { IndexProxy proxy = indexMap.getIndexProxy( descriptor ); if ( proxy == null ) @@ -81,7 +81,7 @@ public long getIndexId( LabelSchemaDescriptor descriptor ) throws IndexNotFoundK return indexMap.getIndexId( descriptor ); } - public long getOnlineIndexId( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException + public long getOnlineIndexId( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { IndexProxy proxy = getIndexProxy( descriptor ); switch ( proxy.getState() ) @@ -99,7 +99,7 @@ public Iterable getAllIndexProxies() return indexMap.getAllIndexProxies(); } - public Iterable getRelatedIndexes( + public Iterable getRelatedIndexes( long[] changedLabels, long[] unchangedLabels, PrimitiveIntSet properties ) { return indexMap.getRelatedIndexes( changedLabels, unchangedLabels, properties ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexPopulationFailure.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexPopulationFailure.java index 849e1f0addbb..cf90418aabbd 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexPopulationFailure.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexPopulationFailure.java @@ -20,7 +20,7 @@ package org.neo4j.kernel.impl.api.index; import org.neo4j.helpers.Exceptions; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.index.IndexPopulationFailedKernelException; public abstract class IndexPopulationFailure @@ -28,7 +28,7 @@ public abstract class IndexPopulationFailure public abstract String asString(); public abstract IndexPopulationFailedKernelException asIndexPopulationFailure( - LabelSchemaDescriptor descriptor, String indexUserDescriptor ); + SchemaDescriptor descriptor, String indexUserDescriptor ); public static IndexPopulationFailure failure( final Throwable failure ) { @@ -42,7 +42,7 @@ public String asString() @Override public IndexPopulationFailedKernelException asIndexPopulationFailure( - LabelSchemaDescriptor descriptor, String indexUserDescription ) + SchemaDescriptor descriptor, String indexUserDescription ) { return new IndexPopulationFailedKernelException( descriptor, indexUserDescription, failure ); } @@ -61,7 +61,7 @@ public String asString() @Override public IndexPopulationFailedKernelException asIndexPopulationFailure( - LabelSchemaDescriptor descriptor, String indexUserDescription ) + SchemaDescriptor descriptor, String indexUserDescription ) { return new IndexPopulationFailedKernelException( descriptor, indexUserDescription, failure ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProxy.java index 1dff30017f2e..ea5450c8357d 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProxy.java @@ -25,8 +25,8 @@ import org.neo4j.graphdb.ResourceIterator; import org.neo4j.internal.kernel.api.IndexCapability; import org.neo4j.internal.kernel.api.InternalIndexState; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; -import org.neo4j.internal.kernel.api.schema.LabelSchemaSupplier; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptorSupplier; import org.neo4j.io.pagecache.IOLimiter; import org.neo4j.kernel.api.exceptions.index.IndexActivationFailedKernelException; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; @@ -60,7 +60,7 @@ * * @see ContractCheckingIndexProxy */ -public interface IndexProxy extends LabelSchemaSupplier +public interface IndexProxy extends SchemaDescriptorSupplier { void start() throws IOException; @@ -80,7 +80,7 @@ public interface IndexProxy extends LabelSchemaSupplier SchemaIndexDescriptor getDescriptor(); @Override - LabelSchemaDescriptor schema(); + SchemaDescriptor schema(); IndexProvider.Descriptor getProviderDescriptor(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexUpdaterMap.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexUpdaterMap.java index 5d75fc6fe3d9..0a4849cdfcbe 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexUpdaterMap.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexUpdaterMap.java @@ -28,11 +28,9 @@ import org.neo4j.helpers.collection.Pair; import org.neo4j.helpers.collection.PrefetchingIterator; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.index.IndexUpdater; -import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; -import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptorFactory; import org.neo4j.kernel.impl.store.MultipleUnderlyingStorageExceptions; import org.neo4j.kernel.impl.store.UnderlyingStorageException; @@ -49,7 +47,7 @@ class IndexUpdaterMap implements AutoCloseable, Iterable { private final IndexUpdateMode indexUpdateMode; private final IndexMap indexMap; - private final Map updaterMap; + private final Map updaterMap; IndexUpdaterMap( IndexMap indexMap, IndexUpdateMode indexUpdateMode ) { @@ -58,7 +56,7 @@ class IndexUpdaterMap implements AutoCloseable, Iterable this.updaterMap = new HashMap<>(); } - IndexUpdater getUpdater( LabelSchemaDescriptor descriptor ) + IndexUpdater getUpdater( SchemaDescriptor descriptor ) { IndexUpdater updater = updaterMap.get( descriptor ); if ( null == updater ) @@ -76,9 +74,9 @@ IndexUpdater getUpdater( LabelSchemaDescriptor descriptor ) @Override public void close() throws UnderlyingStorageException { - Set> exceptions = null; + Set> exceptions = null; - for ( Map.Entry updaterEntry : updaterMap.entrySet() ) + for ( Map.Entry updaterEntry : updaterMap.entrySet() ) { IndexUpdater updater = updaterEntry.getValue(); try @@ -91,7 +89,7 @@ public void close() throws UnderlyingStorageException { exceptions = new HashSet<>(); } - exceptions.add( Pair.of( SchemaIndexDescriptorFactory.forSchema( updaterEntry.getKey() ), + exceptions.add( Pair.of( updaterEntry.getKey(), new UnderlyingStorageException( e ) ) ); } } @@ -124,7 +122,7 @@ public Iterator iterator() { return new PrefetchingIterator() { - private Iterator descriptors = indexMap.descriptors(); + private Iterator descriptors = indexMap.descriptors(); @Override protected IndexUpdater fetchNextOrNull() { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexingService.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexingService.java index aca9fc858932..32134a5d3c9a 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexingService.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexingService.java @@ -40,7 +40,7 @@ import org.neo4j.helpers.collection.Iterators; import org.neo4j.internal.kernel.api.InternalIndexState; import org.neo4j.internal.kernel.api.TokenNameLookup; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.io.pagecache.IOLimiter; import org.neo4j.kernel.api.exceptions.index.IndexActivationFailedKernelException; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; @@ -363,7 +363,7 @@ public void shutdown() throws ExecutionException, InterruptedException closeAllIndexes(); } - public DoubleLongRegister indexUpdatesAndSize( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException + public DoubleLongRegister indexUpdatesAndSize( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { final long indexId = indexMapRef.getOnlineIndexId( descriptor ); final DoubleLongRegister output = Registers.newDoubleLongRegister(); @@ -371,7 +371,7 @@ public DoubleLongRegister indexUpdatesAndSize( LabelSchemaDescriptor descriptor return output; } - public double indexUniqueValuesPercentage( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException + public double indexUniqueValuesPercentage( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { final long indexId = indexMapRef.getOnlineIndexId( descriptor ); final DoubleLongRegister output = Registers.newDoubleLongRegister(); @@ -422,12 +422,12 @@ else if ( state == State.RUNNING || state == State.STARTING ) } } - private void apply( Iterable> updates, IndexUpdateMode updateMode ) + private void apply( Iterable> updates, IndexUpdateMode updateMode ) throws IOException, IndexEntryConflictException { try ( IndexUpdaterMap updaterMap = indexMapRef.createIndexUpdaterMap( updateMode ) ) { - for ( IndexEntryUpdate indexUpdate : updates ) + for ( IndexEntryUpdate indexUpdate : updates ) { processUpdate( updaterMap, indexUpdate ); } @@ -435,9 +435,9 @@ private void apply( Iterable> updates, I } @Override - public Iterable> convertToIndexUpdates( NodeUpdates nodeUpdates ) + public Iterable> convertToIndexUpdates( NodeUpdates nodeUpdates ) { - Iterable relatedIndexes = + Iterable relatedIndexes = indexMapRef.getRelatedIndexes( nodeUpdates.labelsChanged(), nodeUpdates.labelsUnchanged(), @@ -460,7 +460,7 @@ public void createIndexes( IndexRule... rules ) throws IOException populationStarter.startPopulation(); } - private void processUpdate( IndexUpdaterMap updaterMap, IndexEntryUpdate indexUpdate ) + private void processUpdate( IndexUpdaterMap updaterMap, IndexEntryUpdate indexUpdate ) throws IOException, IndexEntryConflictException { IndexUpdater updater = updaterMap.getUpdater( indexUpdate.indexKey().schema() ); @@ -498,7 +498,7 @@ public void triggerIndexSampling( IndexSamplingMode mode ) samplingController.sampleIndexes( mode ); } - public void triggerIndexSampling( LabelSchemaDescriptor descriptor, IndexSamplingMode mode ) + public void triggerIndexSampling( SchemaDescriptor descriptor, IndexSamplingMode mode ) throws IndexNotFoundKernelException { String description = descriptor.userDescription( tokenNameLookup ); @@ -541,12 +541,12 @@ public IndexProxy getIndexProxy( long indexId ) throws IndexNotFoundKernelExcept return indexMapRef.getIndexProxy( indexId ); } - public IndexProxy getIndexProxy( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException + public IndexProxy getIndexProxy( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { return indexMapRef.getIndexProxy( descriptor ); } - public long getIndexId( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException + public long getIndexId( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { return indexMapRef.getIndexId( descriptor ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexingUpdateService.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexingUpdateService.java index e0bd063dbe31..2ca067982fd1 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexingUpdateService.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexingUpdateService.java @@ -21,7 +21,7 @@ import java.io.IOException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.index.IndexEntryUpdate; import org.neo4j.kernel.impl.transaction.state.IndexUpdates; @@ -38,5 +38,5 @@ public interface IndexingUpdateService * application of the updates to the indexes, so that the properties reflect the exact state of the * transaction. */ - Iterable> convertToIndexUpdates( NodeUpdates nodeUpdates ); + Iterable> convertToIndexUpdates( NodeUpdates nodeUpdates ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulator.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulator.java index 63ed45542e0c..ad5f85583e64 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulator.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulator.java @@ -36,8 +36,8 @@ import org.neo4j.function.ThrowingConsumer; import org.neo4j.helpers.collection.Pair; import org.neo4j.helpers.collection.Visitor; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; -import org.neo4j.internal.kernel.api.schema.LabelSchemaSupplier; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptorSupplier; import org.neo4j.kernel.api.exceptions.index.FlipFailedKernelException; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.exceptions.index.IndexPopulationFailedKernelException; @@ -252,7 +252,7 @@ public void verifyDeferredConstraints( PropertyAccessor accessor ) @Override public MultipleIndexUpdater newPopulatingUpdater( PropertyAccessor accessor ) { - Map> updaters = new HashMap<>(); + Map> updaters = new HashMap<>(); forEachPopulation( population -> { IndexUpdater updater = population.populator.newPopulatingUpdater( accessor ); @@ -322,7 +322,7 @@ private IntStream propertyKeyIds( IndexPopulation population ) private int[] labelIds() { - return populations.stream().mapToInt( population -> population.schema().getLabelId() ).toArray(); + return populations.stream().mapToInt( population -> population.schema().keyId() ).toArray(); } public void cancel() @@ -416,12 +416,12 @@ private void forEachPopulation( ThrowingConsumer acti public static class MultipleIndexUpdater implements IndexUpdater { - private final Map> populationsWithUpdaters; + private final Map> populationsWithUpdaters; private final MultipleIndexPopulator multipleIndexPopulator; private final Log log; MultipleIndexUpdater( MultipleIndexPopulator multipleIndexPopulator, - Map> populationsWithUpdaters, LogProvider logProvider ) + Map> populationsWithUpdaters, LogProvider logProvider ) { this.multipleIndexPopulator = multipleIndexPopulator; this.populationsWithUpdaters = populationsWithUpdaters; @@ -478,7 +478,7 @@ public void close() } } - public class IndexPopulation implements LabelSchemaSupplier + public class IndexPopulation implements SchemaDescriptorSupplier { public final IndexPopulator populator; final FlippableIndexProxy flipper; @@ -598,7 +598,7 @@ void flip() throws FlipFailedKernelException } @Override - public LabelSchemaDescriptor schema() + public SchemaDescriptor schema() { return indexMeta.indexDescriptor().schema(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/NodeUpdates.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/NodeUpdates.java index 48ba322389a8..6c2e16fdf1ad 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/NodeUpdates.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/NodeUpdates.java @@ -29,8 +29,8 @@ import org.neo4j.collection.primitive.PrimitiveIntObjectMap; import org.neo4j.collection.primitive.PrimitiveIntSet; import org.neo4j.helpers.collection.Iterables; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; -import org.neo4j.internal.kernel.api.schema.LabelSchemaSupplier; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptorSupplier; import org.neo4j.kernel.api.index.IndexEntryUpdate; import org.neo4j.values.storable.Value; @@ -161,7 +161,7 @@ public void onProperty( int propertyId, Value value ) * @param indexKeys The index keys to generate entry updates for * @return IndexEntryUpdates for all relevant index keys */ - public Iterable> forIndexKeys( + public Iterable> forIndexKeys( Iterable indexKeys ) { Iterable potentiallyRelevant = Iterables.filter( this::atLeastOneRelevantChange, indexKeys ); @@ -183,7 +183,7 @@ public Iterable Iterable> forIndexKeys( + public Iterable> forIndexKeys( Iterable indexKeys, PropertyLoader propertyLoader ) { List potentiallyRelevant = new ArrayList<>(); @@ -206,13 +206,13 @@ public Iterable Iterable> gatherUpdatesForPotentials( + private Iterable> gatherUpdatesForPotentials( Iterable potentiallyRelevant ) { List> indexUpdates = new ArrayList<>(); for ( INDEX_KEY indexKey : potentiallyRelevant ) { - LabelSchemaDescriptor schema = indexKey.schema(); + SchemaDescriptor schema = indexKey.schema(); boolean relevantBefore = relevantBefore( schema ); boolean relevantAfter = relevantAfter( schema ); int[] propertyIds = schema.getPropertyIds(); @@ -241,15 +241,15 @@ else if ( relevantBefore ) return indexUpdates; } - private boolean relevantBefore( LabelSchemaDescriptor schema ) + private boolean relevantBefore( SchemaDescriptor schema ) { - return hasLabel( schema.getLabelId(), labelsBefore ) && + return hasLabel( schema.keyId(), labelsBefore ) && hasPropsBefore( schema.getPropertyIds() ); } - private boolean relevantAfter( LabelSchemaDescriptor schema ) + private boolean relevantAfter( SchemaDescriptor schema ) { - return hasLabel( schema.getLabelId(), labelsAfter ) && + return hasLabel( schema.keyId(), labelsAfter ) && hasPropsAfter( schema.getPropertyIds() ); } @@ -266,7 +266,7 @@ private void loadProperties( PropertyLoader propertyLoader, PrimitiveIntSet addi } } - private void gatherPropsToLoad( LabelSchemaDescriptor schema, PrimitiveIntSet target ) + private void gatherPropsToLoad( SchemaDescriptor schema, PrimitiveIntSet target ) { for ( int propertyId : schema.getPropertyIds() ) { @@ -277,9 +277,9 @@ private void gatherPropsToLoad( LabelSchemaDescriptor schema, PrimitiveIntSet ta } } - private boolean atLeastOneRelevantChange( LabelSchemaSupplier indexKey ) + private boolean atLeastOneRelevantChange( SchemaDescriptorSupplier indexKey ) { - int labelId = indexKey.schema().getLabelId(); + int labelId = indexKey.schema().keyId(); boolean labelBefore = hasLabel( labelId, labelsBefore ); boolean labelAfter = hasLabel( labelId, labelsAfter ); if ( labelBefore && labelAfter ) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/OnlineIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/OnlineIndexProxy.java index 56eb54ae3c7c..a98261344689 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/OnlineIndexProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/OnlineIndexProxy.java @@ -25,7 +25,7 @@ import org.neo4j.graphdb.ResourceIterator; import org.neo4j.internal.kernel.api.IndexCapability; import org.neo4j.internal.kernel.api.InternalIndexState; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.io.pagecache.IOLimiter; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.index.IndexAccessor; @@ -134,7 +134,7 @@ public SchemaIndexDescriptor getDescriptor() } @Override - public LabelSchemaDescriptor schema() + public SchemaDescriptor schema() { return indexMeta.indexDescriptor().schema(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/PopulatingIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/PopulatingIndexProxy.java index 2b6634641d94..ea4c46e94ea2 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/PopulatingIndexProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/PopulatingIndexProxy.java @@ -24,7 +24,7 @@ import org.neo4j.graphdb.ResourceIterator; import org.neo4j.internal.kernel.api.IndexCapability; import org.neo4j.internal.kernel.api.InternalIndexState; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.io.pagecache.IOLimiter; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.index.IndexEntryUpdate; @@ -94,7 +94,7 @@ public SchemaIndexDescriptor getDescriptor() } @Override - public LabelSchemaDescriptor schema() + public SchemaDescriptor schema() { return indexMeta.indexDescriptor().schema(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/TentativeConstraintIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/TentativeConstraintIndexProxy.java index c9abef574f30..ebbe3406ae99 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/TentativeConstraintIndexProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/TentativeConstraintIndexProxy.java @@ -27,7 +27,7 @@ import org.neo4j.internal.kernel.api.InternalIndexState; import org.neo4j.internal.kernel.api.exceptions.schema.ConstraintValidationException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.schema.UniquePropertyValueValidationException; @@ -161,9 +161,9 @@ public void validate() throws UniquePropertyValueValidationException { if ( !failures.isEmpty() ) { - LabelSchemaDescriptor descriptor = getDescriptor().schema(); + SchemaDescriptor descriptor = getDescriptor().schema(); throw new UniquePropertyValueValidationException( - ConstraintDescriptorFactory.uniqueForLabel( descriptor.getLabelId(), descriptor.getPropertyId() ), + ConstraintDescriptorFactory.uniqueForLabel( descriptor.keyId(), descriptor.getPropertyIds() ), ConstraintValidationException.Phase.VERIFICATION, new HashSet<>( failures ) ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/SchemaReadOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/SchemaReadOperations.java index 0918362a14ef..6eb39638c2c6 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/SchemaReadOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/SchemaReadOperations.java @@ -22,7 +22,6 @@ import java.util.Iterator; import org.neo4j.internal.kernel.api.InternalIndexState; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; import org.neo4j.kernel.api.Statement; @@ -38,7 +37,7 @@ public interface SchemaReadOperations /** * Returns the descriptor for the given labelId and propertyKey. */ - SchemaIndexDescriptor indexGetForSchema( KernelStatement state, LabelSchemaDescriptor descriptor ); + SchemaIndexDescriptor indexGetForSchema( KernelStatement state, SchemaDescriptor descriptor ); /** * Get all indexes for a label. diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/SchemaWriteOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/SchemaWriteOperations.java index 2a07600c71ad..43d19cd42185 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/SchemaWriteOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/SchemaWriteOperations.java @@ -21,6 +21,7 @@ import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.RelationTypeSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException; import org.neo4j.kernel.api.exceptions.schema.AlreadyIndexedException; @@ -41,7 +42,7 @@ public interface SchemaWriteOperations * Creates an index, indexing properties with the given {@code propertyKeyId} for nodes with the given * {@code labelId}. */ - SchemaIndexDescriptor indexCreate( KernelStatement state, LabelSchemaDescriptor descriptor ) + SchemaIndexDescriptor indexCreate( KernelStatement state, SchemaDescriptor descriptor ) throws AlreadyIndexedException, AlreadyConstrainedException, RepeatedPropertyInCompositeSchemaException; /** Drops a {@link SchemaIndexDescriptor} from the database */ @@ -57,7 +58,7 @@ NodeKeyConstraintDescriptor nodeKeyConstraintCreate( KernelStatement state, Labe throws AlreadyConstrainedException, CreateConstraintFailureException, AlreadyIndexedException, RepeatedPropertyInCompositeSchemaException; - UniquenessConstraintDescriptor uniquePropertyConstraintCreate( KernelStatement state, LabelSchemaDescriptor descriptor ) + UniquenessConstraintDescriptor uniquePropertyConstraintCreate( KernelStatement state, SchemaDescriptor descriptor ) throws AlreadyConstrainedException, CreateConstraintFailureException, AlreadyIndexedException, RepeatedPropertyInCompositeSchemaException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/schema/NodeSchemaMatcher.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/schema/NodeSchemaMatcher.java index 854d925fa98e..59d55791d409 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/schema/NodeSchemaMatcher.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/schema/NodeSchemaMatcher.java @@ -24,8 +24,8 @@ import org.neo4j.collection.primitive.Primitive; import org.neo4j.collection.primitive.PrimitiveIntSet; import org.neo4j.function.ThrowingBiConsumer; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; -import org.neo4j.internal.kernel.api.schema.LabelSchemaSupplier; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptorSupplier; import org.neo4j.kernel.impl.api.KernelStatement; import org.neo4j.kernel.impl.api.operations.EntityReadOperations; import org.neo4j.storageengine.api.NodeItem; @@ -50,7 +50,7 @@ public NodeSchemaMatcher( EntityReadOperations readOps ) * To avoid unnecessary store lookups, this implementation only gets propertyKeyIds for the node if some * descriptor has a valid label. * - * @param the type to match. Must implement LabelSchemaDescriptor.Supplier + * @param the type to match. Must implement SchemaDescriptorSupplier * @param The type of exception that can be thrown when taking the action * @param state The current statement * @param schemaSuppliers The suppliers to match @@ -60,7 +60,7 @@ public NodeSchemaMatcher( EntityReadOperations readOps ) * @param callback The action to take on match * @throws EXCEPTION This exception is propagated from the action */ - public void onMatchingSchema( + public void onMatchingSchema( KernelStatement state, Iterator schemaSuppliers, NodeItem node, @@ -72,8 +72,8 @@ public void o while ( schemaSuppliers.hasNext() ) { SUPPLIER schemaSupplier = schemaSuppliers.next(); - LabelSchemaDescriptor schema = schemaSupplier.schema(); - if ( node.labels().contains( schema.getLabelId() ) ) + SchemaDescriptor schema = schemaSupplier.schema(); + if ( node.labels().contains( schema.keyId() ) ) { if ( nodePropertyIds == null ) { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/ConstraintIndexCreator.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/ConstraintIndexCreator.java index ae7b7e4147f5..44e817390432 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/ConstraintIndexCreator.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/ConstraintIndexCreator.java @@ -28,6 +28,7 @@ import org.neo4j.internal.kernel.api.exceptions.schema.SchemaKernelException; import org.neo4j.internal.kernel.api.exceptions.schema.SchemaKernelException.OperationContext; import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.InwardKernel; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.SilentTokenNameLookup; @@ -179,7 +180,7 @@ public long createUniquenessConstraintIndex( * */ public long createUniquenessConstraintIndex( KernelTransactionImplementation transaction, - LabelSchemaDescriptor descriptor ) throws TransactionFailureException, CreateConstraintFailureException, + SchemaDescriptor descriptor ) throws TransactionFailureException, CreateConstraintFailureException, UniquePropertyValueValidationException, AlreadyConstrainedException { UniquenessConstraintDescriptor constraint = ConstraintDescriptorFactory.uniqueForSchema( descriptor ); @@ -211,7 +212,7 @@ public long createUniquenessConstraintIndex( KernelTransactionImplementation tra // At this point the integrity of the constraint to be created was checked // while holding the lock and the index rule backing the soon-to-be-created constraint // has been created. Now it's just the population left, which can take a long time - releaseLabelLock( locks, descriptor.getLabelId() ); + releaseLabelLock( locks, descriptor.keyId() ); awaitConstrainIndexPopulation( constraint, proxy ); @@ -219,7 +220,7 @@ public long createUniquenessConstraintIndex( KernelTransactionImplementation tra // Acquire LABEL WRITE lock and verify the constraints here in this user transaction // and if everything checks out then it will be held until after the constraint has been // created and activated. - acquireLabelLock( transaction, locks, descriptor.getLabelId() ); + acquireLabelLock( transaction, locks, descriptor.keyId() ); reacquiredLabelLock = true; indexingService.getIndexProxy( indexId ).verifyDeferredConstraints( propertyAccessor ); @@ -250,7 +251,7 @@ public long createUniquenessConstraintIndex( KernelTransactionImplementation tra { if ( !reacquiredLabelLock ) { - acquireLabelLock( transaction, locks, descriptor.getLabelId() ); + acquireLabelLock( transaction, locks, descriptor.keyId() ); } if ( indexStillExists( schemaRead, descriptor, index ) ) @@ -262,16 +263,16 @@ public long createUniquenessConstraintIndex( KernelTransactionImplementation tra } private boolean indexStillExists( SchemaReadOperations schemaOps, KernelStatement state, - LabelSchemaDescriptor descriptor, SchemaIndexDescriptor index ) + SchemaDescriptor descriptor, SchemaIndexDescriptor index ) { SchemaIndexDescriptor existingIndex = schemaOps.indexGetForSchema( state, descriptor ); return existingIndex != null && existingIndex.equals( index ); } - private boolean indexStillExists( SchemaRead schemaRead, LabelSchemaDescriptor descriptor, + private boolean indexStillExists( SchemaRead schemaRead, SchemaDescriptor descriptor, CapableIndexReference index ) { - CapableIndexReference existingIndex = schemaRead.index( descriptor.getLabelId(), descriptor.getPropertyIds() ); + CapableIndexReference existingIndex = schemaRead.index( descriptor.keyId(), descriptor.getPropertyIds() ); return existingIndex != CapableIndexReference.NO_INDEX && existingIndex.equals( index ); } @@ -366,10 +367,10 @@ private SchemaIndexDescriptor getOrCreateUniquenessConstraintIndex( KernelStatem } private CapableIndexReference getOrCreateUniquenessConstraintIndex( SchemaRead schemaRead, - TokenRead tokenRead, LabelSchemaDescriptor schema ) + TokenRead tokenRead, SchemaDescriptor schema ) throws SchemaKernelException, IndexNotFoundKernelException { - CapableIndexReference descriptor = schemaRead.index( schema.getLabelId(), schema.getPropertyIds() ); + CapableIndexReference descriptor = schemaRead.index( schema.keyId(), schema.getPropertyIds() ); if ( descriptor != CapableIndexReference.NO_INDEX ) { if ( descriptor.isUnique() ) @@ -392,11 +393,11 @@ private CapableIndexReference getOrCreateUniquenessConstraintIndex( SchemaRead s SchemaIndexDescriptor indexDescriptor = createConstraintIndex( schema ); IndexProxy indexProxy = indexingService.getIndexProxy( indexDescriptor.schema() ); return new DefaultCapableIndexReference( indexDescriptor.type() == Type.UNIQUE, indexProxy.getIndexCapability(), - indexProxy.getProviderDescriptor(), indexDescriptor.schema().getLabelId(), + indexProxy.getProviderDescriptor(), indexDescriptor.schema().keyId(), indexDescriptor.schema().getPropertyIds() ); } - public SchemaIndexDescriptor createConstraintIndex( final LabelSchemaDescriptor schema ) + public SchemaIndexDescriptor createConstraintIndex( final SchemaDescriptor schema ) { try ( KernelTransaction transaction = kernelSupplier.get().newTransaction( KernelTransaction.Type.implicit, AUTH_DISABLED ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/TxState.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/TxState.java index f89cb66cb7af..d2386399b040 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/TxState.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/TxState.java @@ -38,7 +38,6 @@ import org.neo4j.cursor.Cursor; import org.neo4j.helpers.collection.Iterables; import org.neo4j.internal.kernel.api.exceptions.schema.ConstraintValidationException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaDescriptorPredicates; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; @@ -121,7 +120,7 @@ public class TxState implements TransactionState, RelationshipVisitor.Home private Map createdConstraintIndexesByConstraint; - private Map> indexUpdates; + private Map> indexUpdates; private InstanceCache singleNodeCursor; private InstanceCache iteratorRelationshipCursor; @@ -1109,7 +1108,7 @@ public PrimitiveLongReadableDiffSets indexUpdatesForRangeSeekByPrefix( SchemaInd // Ensure sorted index updates for a given index. This is needed for range query support and // may involve converting the existing hash map first // - private TreeMap getSortedIndexUpdates( LabelSchemaDescriptor descriptor ) + private TreeMap getSortedIndexUpdates( SchemaDescriptor descriptor ) { if ( indexUpdates == null ) { @@ -1135,7 +1134,7 @@ private TreeMap getSortedIndexUpdates( LabelS } @Override - public void indexDoUpdateEntry( LabelSchemaDescriptor descriptor, long nodeId, + public void indexDoUpdateEntry( SchemaDescriptor descriptor, long nodeId, ValueTuple propertiesBefore, ValueTuple propertiesAfter ) { NodeStateImpl nodeState = getOrCreateNodeState( nodeId ); @@ -1171,7 +1170,7 @@ public void indexDoUpdateEntry( LabelSchemaDescriptor descriptor, long nodeId, } private PrimitiveLongDiffSets getIndexUpdatesForSeek( - LabelSchemaDescriptor schema, ValueTuple values, boolean create ) + SchemaDescriptor schema, ValueTuple values, boolean create ) { Map updates = getIndexUpdatesByDescriptor( schema, create ); if ( updates != null ) @@ -1187,7 +1186,7 @@ private PrimitiveLongDiffSets getIndexUpdatesForSeek( Map new PrimitiveLongDiffSets() ) : updates.get( values ); } - private Map getIndexUpdatesByDescriptor( LabelSchemaDescriptor schema, + private Map getIndexUpdatesByDescriptor( SchemaDescriptor schema, boolean create ) { if ( indexUpdates == null ) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/DefaultCapableIndexReference.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/DefaultCapableIndexReference.java index 6eb7addb950c..72a686d0b6f6 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/DefaultCapableIndexReference.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/DefaultCapableIndexReference.java @@ -26,7 +26,7 @@ import org.neo4j.internal.kernel.api.IndexOrder; import org.neo4j.internal.kernel.api.IndexReference; import org.neo4j.internal.kernel.api.IndexValueCapability; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.index.IndexProvider; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; import org.neo4j.values.storable.ValueGroup; @@ -127,8 +127,8 @@ public int hashCode() public static CapableIndexReference fromDescriptor( SchemaIndexDescriptor descriptor ) { boolean unique = descriptor.type() == SchemaIndexDescriptor.Type.UNIQUE; - final LabelSchemaDescriptor schema = descriptor.schema(); + final SchemaDescriptor schema = descriptor.schema(); return new DefaultCapableIndexReference( unique, IndexCapability.NO_CAPABILITY, null, - schema.getLabelId(), schema.getPropertyIds() ); + schema.keyId(), schema.getPropertyIds() ); } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/DefaultIndexReference.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/DefaultIndexReference.java index 7c201fbe1e1e..80f2c1069f45 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/DefaultIndexReference.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/DefaultIndexReference.java @@ -22,7 +22,7 @@ import java.util.Arrays; import org.neo4j.internal.kernel.api.IndexReference; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; public class DefaultIndexReference implements IndexReference @@ -69,8 +69,8 @@ public static IndexReference general( int label, int...properties ) public static IndexReference fromDescriptor( SchemaIndexDescriptor descriptor ) { boolean unique = descriptor.type() == SchemaIndexDescriptor.Type.UNIQUE; - LabelSchemaDescriptor schema = descriptor.schema(); - return new DefaultIndexReference( unique, schema.getLabelId(), schema.getPropertyIds() ); + SchemaDescriptor schema = descriptor.schema(); + return new DefaultIndexReference( unique, schema.keyId(), schema.getPropertyIds() ); } @Override diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/SchemaCache.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/SchemaCache.java index 296b6ce9440b..beab875815f6 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/SchemaCache.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/SchemaCache.java @@ -36,7 +36,6 @@ import org.neo4j.collection.primitive.PrimitiveLongCollections; import org.neo4j.collection.primitive.PrimitiveLongObjectMap; import org.neo4j.helpers.collection.Iterators; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaDescriptorPredicates; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; @@ -151,7 +150,7 @@ public void removeSchemaRule( long id ) } } - public SchemaIndexDescriptor indexDescriptor( LabelSchemaDescriptor descriptor ) + public SchemaIndexDescriptor indexDescriptor( SchemaDescriptor descriptor ) { return schemaCacheState.indexDescriptor( descriptor ); } @@ -239,7 +238,7 @@ Iterator constraints() return constraints.iterator(); } - SchemaIndexDescriptor indexDescriptor( LabelSchemaDescriptor descriptor ) + SchemaIndexDescriptor indexDescriptor( SchemaDescriptor descriptor ) { return indexDescriptors.get( descriptor ); } @@ -273,12 +272,12 @@ else if ( rule instanceof IndexRule ) { IndexRule indexRule = (IndexRule) rule; indexRuleById.put( indexRule.getId(), indexRule ); - LabelSchemaDescriptor schemaDescriptor = indexRule.schema(); + SchemaDescriptor schemaDescriptor = indexRule.schema(); SchemaIndexDescriptor schemaIndexDescriptor = indexRule.getIndexDescriptor(); indexDescriptors.put( schemaDescriptor, schemaIndexDescriptor ); Set forLabel = - indexDescriptorsByLabel.computeIfAbsent( schemaDescriptor.getLabelId(), k -> new HashSet<>() ); + indexDescriptorsByLabel.computeIfAbsent( schemaDescriptor.keyId(), k -> new HashSet<>() ); forLabel.add( schemaIndexDescriptor ); for ( int propertyId : indexRule.schema().getPropertyIds() ) @@ -300,14 +299,14 @@ void removeSchemaRule( long id ) else if ( indexRuleById.containsKey( id ) ) { IndexRule rule = indexRuleById.remove( id ); - LabelSchemaDescriptor schema = rule.schema(); + SchemaDescriptor schema = rule.schema(); indexDescriptors.remove( schema ); - Set forLabel = indexDescriptorsByLabel.get( schema.getLabelId() ); + Set forLabel = indexDescriptorsByLabel.get( schema.keyId() ); forLabel.remove( rule.getIndexDescriptor() ); if ( forLabel.isEmpty() ) { - indexDescriptorsByLabel.remove( schema.getLabelId() ); + indexDescriptorsByLabel.remove( schema.keyId() ); } for ( int propertyId : rule.schema().getPropertyIds() ) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/StorageLayer.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/StorageLayer.java index 2cde4cf2abd7..06f391535434 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/StorageLayer.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/StorageLayer.java @@ -37,7 +37,6 @@ import org.neo4j.internal.kernel.api.exceptions.LabelNotFoundKernelException; import org.neo4j.internal.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.internal.kernel.api.exceptions.schema.TooManyLabelsException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; import org.neo4j.kernel.api.AssertOpen; @@ -185,7 +184,7 @@ public PrimitiveLongResourceIterator nodesGetForLabel( StorageStatement statemen } @Override - public SchemaIndexDescriptor indexGetForSchema( LabelSchemaDescriptor descriptor ) + public SchemaIndexDescriptor indexGetForSchema( SchemaDescriptor descriptor ) { return schemaCache.indexDescriptor( descriptor ); } @@ -246,36 +245,36 @@ public IndexProvider.Descriptor indexGetProviderDescriptor( SchemaIndexDescripto public CapableIndexReference indexReference( SchemaIndexDescriptor descriptor ) throws IndexNotFoundKernelException { boolean unique = descriptor.type() == SchemaIndexDescriptor.Type.UNIQUE; - LabelSchemaDescriptor schema = descriptor.schema(); + SchemaDescriptor schema = descriptor.schema(); IndexProxy indexProxy = indexService.getIndexProxy( schema ); return new DefaultCapableIndexReference( unique, indexProxy.getIndexCapability(), - indexProxy.getProviderDescriptor(), schema.getLabelId(), + indexProxy.getProviderDescriptor(), schema.keyId(), schema.getPropertyIds() ); } @Override - public PopulationProgress indexGetPopulationProgress( LabelSchemaDescriptor descriptor ) + public PopulationProgress indexGetPopulationProgress( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { return indexService.getIndexProxy( descriptor ).getIndexPopulationProgress(); } @Override - public long indexSize( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException + public long indexSize( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { Register.DoubleLongRegister result = indexService.indexUpdatesAndSize( descriptor ); return result.readSecond(); } @Override - public double indexUniqueValuesPercentage( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException + public double indexUniqueValuesPercentage( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { return indexService.indexUniqueValuesPercentage( descriptor ); } @Override - public String indexGetFailure( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException + public String indexGetFailure( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { return indexService.getIndexProxy( descriptor ).getPopulationFailure().asString(); } @@ -527,20 +526,20 @@ public int relationshipTypeCount() } @Override - public DoubleLongRegister indexUpdatesAndSize( LabelSchemaDescriptor descriptor, DoubleLongRegister target ) + public DoubleLongRegister indexUpdatesAndSize( SchemaDescriptor descriptor, DoubleLongRegister target ) throws IndexNotFoundKernelException { return counts.indexUpdatesAndSize( tryGetIndexId( descriptor ), target ); } @Override - public DoubleLongRegister indexSample( LabelSchemaDescriptor descriptor, DoubleLongRegister target ) + public DoubleLongRegister indexSample( SchemaDescriptor descriptor, DoubleLongRegister target ) throws IndexNotFoundKernelException { return counts.indexSample( tryGetIndexId( descriptor ), target ); } - private long tryGetIndexId( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException + private long tryGetIndexId( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { return indexService.getIndexId( descriptor ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/schema/SchemaImpl.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/schema/SchemaImpl.java index 034f5ff6ba62..804d3ac61de3 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/schema/SchemaImpl.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/schema/SchemaImpl.java @@ -54,6 +54,7 @@ import org.neo4j.internal.kernel.api.exceptions.schema.TooManyLabelsException; import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.RelationTypeSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.SilentTokenNameLookup; @@ -86,6 +87,7 @@ import static org.neo4j.helpers.collection.Iterators.addToCollection; import static org.neo4j.helpers.collection.Iterators.asCollection; import static org.neo4j.helpers.collection.Iterators.map; +import static org.neo4j.kernel.api.schema.SchemaDescriptorFactory.forLabel; import static org.neo4j.kernel.impl.coreapi.schema.PropertyNameUtils.getOrCreatePropertyKeyIds; public class SchemaImpl implements Schema @@ -342,8 +344,7 @@ private static CapableIndexReference getIndexReference( SchemaRead schemaRead, T CapableIndexReference reference = schemaRead.index( labelId, propertyKeyIds ); if ( reference == CapableIndexReference.NO_INDEX ) { - throw new SchemaRuleNotFoundException( SchemaRule.Kind.INDEX_RULE, new org.neo4j.kernel.api.schema - .LabelSchemaDescriptor( labelId, propertyKeyIds ) ); + throw new SchemaRuleNotFoundException( SchemaRule.Kind.INDEX_RULE, forLabel( labelId, propertyKeyIds ) ); } return reference; @@ -398,8 +399,8 @@ private ConstraintDefinition asConstraintDefinition( ConstraintDescriptor constr constraint instanceof NodeKeyConstraintDescriptor || constraint instanceof UniquenessConstraintDescriptor ) { - LabelSchemaDescriptor schemaDescriptor = (LabelSchemaDescriptor) constraint.schema(); - Label label = Label.label( lookup.labelGetName( schemaDescriptor.getLabelId() ) ); + SchemaDescriptor schemaDescriptor = constraint.schema(); + Label label = Label.label( lookup.labelGetName( schemaDescriptor.keyId() ) ); String[] propertyKeys = Arrays.stream( schemaDescriptor.getPropertyIds() ) .mapToObj( lookup::propertyKeyGetName ).toArray( String[]::new ); if ( constraint instanceof NodeExistenceConstraintDescriptor ) @@ -460,7 +461,7 @@ public IndexDefinition createIndexDefinition( Label label, String... propertyKey TokenWrite tokenWrite = transaction.tokenWrite(); int labelId = tokenWrite.labelGetOrCreateForName( indexDefinition.getLabel().name() ); int[] propertyKeyIds = getOrCreatePropertyKeyIds( tokenWrite, indexDefinition ); - LabelSchemaDescriptor descriptor = SchemaDescriptorFactory.forLabel( labelId, propertyKeyIds ); + LabelSchemaDescriptor descriptor = forLabel( labelId, propertyKeyIds ); transaction.schemaWrite().indexCreate( descriptor ); return indexDefinition; } @@ -516,7 +517,7 @@ public ConstraintDefinition createPropertyUniquenessConstraint( IndexDefinition int labelId = tokenWrite.labelGetOrCreateForName( indexDefinition.getLabel().name() ); int[] propertyKeyIds = getOrCreatePropertyKeyIds( tokenWrite, indexDefinition ); transaction.schemaWrite().uniquePropertyConstraintCreate( - SchemaDescriptorFactory.forLabel( labelId, propertyKeyIds ) ); + forLabel( labelId, propertyKeyIds ) ); return new UniquenessConstraintDefinition( this, indexDefinition ); } catch ( AlreadyConstrainedException | CreateConstraintFailureException | AlreadyIndexedException | @@ -552,7 +553,7 @@ public ConstraintDefinition createNodeKeyConstraint( IndexDefinition indexDefini int labelId = tokenWrite.labelGetOrCreateForName( indexDefinition.getLabel().name() ); int[] propertyKeyIds = getOrCreatePropertyKeyIds( tokenWrite, indexDefinition ); transaction.schemaWrite().nodeKeyConstraintCreate( - SchemaDescriptorFactory.forLabel( labelId, propertyKeyIds ) ); + forLabel( labelId, propertyKeyIds ) ); return new NodeKeyConstraintDefinition( this, indexDefinition ); } catch ( AlreadyConstrainedException | CreateConstraintFailureException | AlreadyIndexedException | @@ -588,7 +589,7 @@ public ConstraintDefinition createPropertyExistenceConstraint( Label label, Stri int labelId = tokenWrite.labelGetOrCreateForName( label.name() ); int[] propertyKeyIds = getOrCreatePropertyKeyIds( tokenWrite, propertyKeys ); transaction.schemaWrite().nodePropertyExistenceConstraintCreate( - SchemaDescriptorFactory.forLabel( labelId, propertyKeyIds ) ); + forLabel( labelId, propertyKeyIds ) ); return new NodePropertyExistenceConstraintDefinition( this, label, propertyKeys ); } catch ( AlreadyConstrainedException | CreateConstraintFailureException | diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/DeferredConflictCheckingIndexUpdater.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/DeferredConflictCheckingIndexUpdater.java index f5d0ccb192b4..03be01233442 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/DeferredConflictCheckingIndexUpdater.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/DeferredConflictCheckingIndexUpdater.java @@ -113,9 +113,10 @@ public void close() throws IOException, IndexEntryConflictException private IndexQuery[] queryOf( ValueTuple tuple ) { IndexQuery[] predicates = new IndexQuery[tuple.size()]; + int[] propertyIds = schemaIndexDescriptor.schema().getPropertyIds(); for ( int i = 0; i < predicates.length; i++ ) { - predicates[i] = exact( schemaIndexDescriptor.schema().getPropertyIds()[i], tuple.valueAt( i ) ); + predicates[i] = exact( propertyIds[i], tuple.valueAt( i ) ); } return predicates; } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/AllStoreHolder.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/AllStoreHolder.java index c46f5a588d00..09c3e1d9d8f7 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/AllStoreHolder.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/AllStoreHolder.java @@ -55,6 +55,7 @@ import org.neo4j.kernel.api.proc.BasicContext; import org.neo4j.kernel.api.proc.Context; import org.neo4j.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptorFactory; import org.neo4j.kernel.api.txstate.ExplicitIndexTransactionState; @@ -277,11 +278,19 @@ public CapableIndexReference index( int label, int... properties ) { ktx.assertOpen(); - SchemaIndexDescriptor indexDescriptor = - storeReadLayer.indexGetForSchema( new LabelSchemaDescriptor( label, properties ) ); + LabelSchemaDescriptor descriptor; + try + { + descriptor = SchemaDescriptorFactory.forLabel( label, properties ); + } + catch ( IllegalArgumentException ignore ) + { + // This means we have invalid label or property ids. + return CapableIndexReference.NO_INDEX; + } + SchemaIndexDescriptor indexDescriptor = storeReadLayer.indexGetForSchema( descriptor ); if ( ktx.hasTxStateWithChanges() ) { - LabelSchemaDescriptor descriptor = new LabelSchemaDescriptor( label, properties ); ReadableDiffSets diffSets = ktx.txState().indexDiffSetsByLabel( label ); if ( indexDescriptor != null ) @@ -341,7 +350,7 @@ public Iterator indexesGetAll() return Iterators.map( indexDescriptor -> { - sharedOptimisticLock( ResourceTypes.LABEL, indexDescriptor.schema().getLabelId() ); + sharedOptimisticLock( ResourceTypes.LABEL, indexDescriptor.schema().keyId() ); return fromDescriptor( indexDescriptor ); }, iterator ); } @@ -406,7 +415,7 @@ SchemaIndexDescriptor indexDescriptor( IndexReference index ) @Override public String indexGetFailure( IndexReference index ) throws IndexNotFoundKernelException { - return storeReadLayer.indexGetFailure( new LabelSchemaDescriptor( index.label(), index.properties() ) ); + return storeReadLayer.indexGetFailure( SchemaDescriptorFactory.forLabel( index.label(), index.properties() ) ); } CapableIndexReference indexGetCapability( SchemaIndexDescriptor schemaIndexDescriptor ) @@ -427,7 +436,7 @@ InternalIndexState indexGetState( SchemaIndexDescriptor descriptor ) throws Inde if ( ktx.hasTxStateWithChanges() ) { if ( checkIndexState( descriptor, - ktx.txState().indexDiffSetsByLabel( descriptor.schema().getLabelId() ) ) ) + ktx.txState().indexDiffSetsByLabel( descriptor.schema().keyId() ) ) ) { return InternalIndexState.POPULATING; } @@ -441,7 +450,7 @@ Long indexGetOwningUniquenessConstraintId( SchemaIndexDescriptor index ) return storeReadLayer.indexGetOwningUniquenessConstraintId( index ); } - SchemaIndexDescriptor indexGetForSchema( org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor descriptor ) + SchemaIndexDescriptor indexGetForSchema( SchemaDescriptor descriptor ) { SchemaIndexDescriptor indexDescriptor = storeReadLayer.indexGetForSchema( descriptor ); Iterator rules = iterator( indexDescriptor ); @@ -449,7 +458,7 @@ SchemaIndexDescriptor indexGetForSchema( org.neo4j.internal.kernel.api.schema.La { rules = filter( SchemaDescriptor.equalTo( descriptor ), - ktx.txState().indexDiffSetsByLabel( descriptor.getLabelId() ).apply( rules ) ); + ktx.txState().indexDiffSetsByLabel( descriptor.keyId() ).apply( rules ) ); } return singleOrNull( rules ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/NodeSchemaMatcher.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/NodeSchemaMatcher.java index 8e1ef11cc9f6..9676b3823432 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/NodeSchemaMatcher.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/NodeSchemaMatcher.java @@ -27,8 +27,8 @@ import org.neo4j.function.ThrowingBiConsumer; import org.neo4j.internal.kernel.api.NodeCursor; import org.neo4j.internal.kernel.api.PropertyCursor; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; -import org.neo4j.internal.kernel.api.schema.LabelSchemaSupplier; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptorSupplier; /** * This class holds functionality to match LabelSchemaDescriptors to nodes @@ -48,7 +48,7 @@ private NodeSchemaMatcher() * To avoid unnecessary store lookups, this implementation only gets propertyKeyIds for the node if some * descriptor has a valid label. * - * @param the type to match. Must implement LabelSchemaDescriptor.Supplier + * @param the type to match. Must implement SchemaDescriptorSupplier * @param The type of exception that can be thrown when taking the action * @param schemaSuppliers The suppliers to match * @param node The node cursor @@ -58,7 +58,7 @@ private NodeSchemaMatcher() * @param callback The action to take on match * @throws EXCEPTION This exception is propagated from the action */ - static void onMatchingSchema( + static void onMatchingSchema( Iterator schemaSuppliers, NodeCursor node, PropertyCursor property, @@ -70,8 +70,8 @@ static void while ( schemaSuppliers.hasNext() ) { SUPPLIER schemaSupplier = schemaSuppliers.next(); - LabelSchemaDescriptor schema = schemaSupplier.schema(); - if ( node.labels().contains( schema.getLabelId() ) ) + SchemaDescriptor schema = schemaSupplier.schema(); + if ( node.labels().contains( schema.keyId() ) ) { if ( nodePropertyIds == null ) { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java index 2422b6b81256..99b8bfc83df3 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java @@ -71,6 +71,7 @@ import org.neo4j.kernel.api.exceptions.schema.UnableToValidateConstraintException; import org.neo4j.kernel.api.exceptions.schema.UniquePropertyValueValidationException; import org.neo4j.kernel.api.explicitindex.AutoIndexing; +import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import org.neo4j.kernel.api.schema.constaints.ConstraintDescriptorFactory; import org.neo4j.kernel.api.schema.constaints.IndexBackedConstraintDescriptor; import org.neo4j.kernel.api.schema.constaints.NodeKeyConstraintDescriptor; @@ -361,7 +362,7 @@ private void validateNoExistingNodeWithExactValues( IndexBackedConstraintDescrip { SchemaIndexDescriptor schemaIndexDescriptor = constraint.ownedIndexDescriptor(); assertIndexOnline( schemaIndexDescriptor ); - int labelId = schemaIndexDescriptor.schema().getLabelId(); + int labelId = schemaIndexDescriptor.schema().keyId(); //Take a big fat lock, and check for existing node in index ktx.statementLocks().optimistic().acquireExclusive( @@ -781,9 +782,9 @@ public DefaultPropertyCursor propertyCursor() } @Override - public IndexReference indexCreate( LabelSchemaDescriptor descriptor ) throws SchemaKernelException + public IndexReference indexCreate( SchemaDescriptor descriptor ) throws SchemaKernelException { - acquireExclusiveLabelLock( descriptor.getLabelId() ); + acquireExclusiveLabelLock( descriptor.keyId() ); ktx.assertOpen(); assertValidDescriptor( descriptor, SchemaKernelException.OperationContext.INDEX_CREATION ); assertIndexDoesNotExist( SchemaKernelException.OperationContext.INDEX_CREATION, descriptor ); @@ -826,11 +827,11 @@ public void indexDrop( IndexReference index ) throws SchemaKernelException } @Override - public ConstraintDescriptor uniquePropertyConstraintCreate( LabelSchemaDescriptor descriptor ) + public ConstraintDescriptor uniquePropertyConstraintCreate( SchemaDescriptor descriptor ) throws SchemaKernelException { //Lock - acquireExclusiveLabelLock( descriptor.getLabelId() ); + acquireExclusiveLabelLock( descriptor.keyId() ); ktx.assertOpen(); //Check data integrity @@ -944,8 +945,7 @@ public void constraintDrop( ConstraintDescriptor descriptor ) throws SchemaKerne } private void assertIndexDoesNotExist( SchemaKernelException.OperationContext context, - LabelSchemaDescriptor descriptor ) - throws AlreadyIndexedException, AlreadyConstrainedException + SchemaDescriptor descriptor ) throws AlreadyIndexedException, AlreadyConstrainedException { SchemaIndexDescriptor existingIndex = allStoreHolder.indexGetForSchema( descriptor ); if ( existingIndex != null ) @@ -1077,13 +1077,13 @@ private void assertValidDescriptor( SchemaDescriptor descriptor, SchemaKernelExc private org.neo4j.kernel.api.schema.LabelSchemaDescriptor labelDescriptor( IndexReference index ) { - return new org.neo4j.kernel.api.schema.LabelSchemaDescriptor( index.label(), index.properties() ); + return SchemaDescriptorFactory.forLabel( index.label(), index.properties() ); } private void indexBackedConstraintCreate( IndexBackedConstraintDescriptor constraint ) throws CreateConstraintFailureException { - LabelSchemaDescriptor descriptor = constraint.schema(); + SchemaDescriptor descriptor = constraint.schema(); try { if ( ktx.hasTxStateWithChanges() && @@ -1128,7 +1128,7 @@ private void assertValidIndex( IndexReference index ) throws NoSuchIndexExceptio { if ( index == CapableIndexReference.NO_INDEX ) { - throw new NoSuchIndexException( new org.neo4j.kernel.api.schema.LabelSchemaDescriptor( index.label(), index.properties() ) ); + throw new NoSuchIndexException( SchemaDescriptorFactory.forLabel( index.label(), index.properties() ) ); } } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/MultipleUnderlyingStorageExceptions.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/MultipleUnderlyingStorageExceptions.java index 024a77597074..56f1fb833c07 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/MultipleUnderlyingStorageExceptions.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/MultipleUnderlyingStorageExceptions.java @@ -23,31 +23,31 @@ import java.util.Set; import org.neo4j.helpers.collection.Pair; -import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import static java.lang.String.format; public class MultipleUnderlyingStorageExceptions extends UnderlyingStorageException { - public final Set> exceptions; + public final Set> exceptions; - public MultipleUnderlyingStorageExceptions( Set> exceptions ) + public MultipleUnderlyingStorageExceptions( Set> exceptions ) { super( buildMessage( exceptions ) ); this.exceptions = Collections.unmodifiableSet( exceptions ); - for ( Pair exception : exceptions ) + for ( Pair exception : exceptions ) { this.addSuppressed( exception.other() ); } } - private static String buildMessage( Set> exceptions ) + private static String buildMessage( Set> exceptions ) { StringBuilder builder = new StringBuilder( ); builder.append("Errors when closing (flushing) index updaters:"); - for ( Pair pair : exceptions ) + for ( Pair pair : exceptions ) { builder.append( format( " (%s) %s", pair.first().toString(), pair.other().getMessage() ) ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/record/IndexRule.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/record/IndexRule.java index 79d355168e86..60fbd73c0d01 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/record/IndexRule.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/record/IndexRule.java @@ -20,7 +20,7 @@ package org.neo4j.kernel.impl.store.record; import org.neo4j.graphdb.Label; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.index.IndexProvider; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; import org.neo4j.storageengine.api.schema.SchemaRule; @@ -143,7 +143,7 @@ public String toString() } @Override - public LabelSchemaDescriptor schema() + public SchemaDescriptor schema() { return descriptor.schema(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/command/IndexUpdatesWork.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/command/IndexUpdatesWork.java index 47c620790291..00525bfe65ad 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/command/IndexUpdatesWork.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/command/IndexUpdatesWork.java @@ -27,7 +27,7 @@ import org.neo4j.collection.primitive.PrimitiveLongObjectMap; import org.neo4j.concurrent.Work; import org.neo4j.helpers.collection.NestingIterator; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.index.IndexEntryUpdate; import org.neo4j.kernel.impl.api.index.IndexingUpdateService; @@ -73,12 +73,12 @@ private IndexUpdates combinedUpdates() return new IndexUpdates() { @Override - public Iterator> iterator() + public Iterator> iterator() { - return new NestingIterator,IndexUpdates>( updates.iterator() ) + return new NestingIterator,IndexUpdates>( updates.iterator() ) { @Override - protected Iterator> createNestedIterator( IndexUpdates item ) + protected Iterator> createNestedIterator( IndexUpdates item ) { return item.iterator(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DirectIndexUpdates.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DirectIndexUpdates.java index 8edb80c9ec6e..0d1a4dd5fadb 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DirectIndexUpdates.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DirectIndexUpdates.java @@ -23,7 +23,7 @@ import java.util.List; import org.neo4j.collection.primitive.PrimitiveLongObjectMap; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.index.IndexEntryUpdate; import org.neo4j.kernel.impl.transaction.command.Command.NodeCommand; import org.neo4j.kernel.impl.transaction.command.Command.PropertyCommand; @@ -33,15 +33,15 @@ */ public class DirectIndexUpdates implements IndexUpdates { - private final Iterable> updates; + private final Iterable> updates; - public DirectIndexUpdates( Iterable> updates ) + public DirectIndexUpdates( Iterable> updates ) { this.updates = updates; } @Override - public Iterator> iterator() + public Iterator> iterator() { return updates.iterator(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/IndexUpdates.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/IndexUpdates.java index e1f575af3930..e5eaf6856384 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/IndexUpdates.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/IndexUpdates.java @@ -22,7 +22,7 @@ import java.util.List; import org.neo4j.collection.primitive.PrimitiveLongObjectMap; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.index.IndexEntryUpdate; import org.neo4j.kernel.impl.transaction.command.Command.NodeCommand; import org.neo4j.kernel.impl.transaction.command.Command.PropertyCommand; @@ -30,7 +30,7 @@ /** * Set of updates ({@link IndexEntryUpdate}) to apply to indexes. */ -public interface IndexUpdates extends Iterable> +public interface IndexUpdates extends Iterable> { /** * Feeds updates raw material in the form of node/property commands, to create updates from. diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/OnlineIndexUpdates.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/OnlineIndexUpdates.java index a7630432e26a..d004738b320a 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/OnlineIndexUpdates.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/OnlineIndexUpdates.java @@ -29,7 +29,7 @@ import org.neo4j.collection.primitive.PrimitiveLongObjectMap; import org.neo4j.collection.primitive.PrimitiveLongSet; import org.neo4j.helpers.collection.Iterables; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.index.IndexEntryUpdate; import org.neo4j.kernel.impl.api.index.IndexingUpdateService; import org.neo4j.kernel.impl.api.index.NodeUpdates; @@ -57,7 +57,7 @@ public class OnlineIndexUpdates implements IndexUpdates private final NodeStore nodeStore; private final IndexingUpdateService updateService; private final PropertyPhysicalToLogicalConverter converter; - private final Collection> updates = new ArrayList<>(); + private final Collection> updates = new ArrayList<>(); private NodeRecord nodeRecord; public OnlineIndexUpdates( NodeStore nodeStore, @@ -70,7 +70,7 @@ public OnlineIndexUpdates( NodeStore nodeStore, } @Override - public Iterator> iterator() + public Iterator> iterator() { return updates.iterator(); } @@ -111,7 +111,7 @@ private void gatherUpdatesFor( long nodeId, NodeCommand nodeCommand, List update : updateService.convertToIndexUpdates( nodeUpdates ) ) + for ( IndexEntryUpdate update : updateService.convertToIndexUpdates( nodeUpdates ) ) { updates.add( update ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/dbstructure/DbStructureArgumentFormatter.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/dbstructure/DbStructureArgumentFormatter.java index bea5ff775310..48bc121ed314 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/dbstructure/DbStructureArgumentFormatter.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/dbstructure/DbStructureArgumentFormatter.java @@ -28,6 +28,7 @@ import org.neo4j.helpers.Strings; import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.RelationTypeSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import org.neo4j.kernel.api.schema.constaints.ConstraintDescriptorFactory; import org.neo4j.kernel.api.schema.constaints.NodeExistenceConstraintDescriptor; @@ -50,7 +51,7 @@ public enum DbStructureArgumentFormatter implements ArgumentFormatter RelExistenceConstraintDescriptor.class.getCanonicalName(), NodeExistenceConstraintDescriptor.class.getCanonicalName(), NodeKeyConstraintDescriptor.class.getCanonicalName(), - LabelSchemaDescriptor.class.getCanonicalName(), + SchemaDescriptor.class.getCanonicalName(), SchemaDescriptorFactory.class.getCanonicalName(), SchemaIndexDescriptor.class.getCanonicalName(), SchemaIndexDescriptorFactory.class.getCanonicalName() @@ -105,7 +106,7 @@ else if ( arg instanceof SchemaIndexDescriptor ) { SchemaIndexDescriptor descriptor = (SchemaIndexDescriptor) arg; String className = SchemaIndexDescriptorFactory.class.getSimpleName(); - int labelId = descriptor.schema().getLabelId(); + int labelId = descriptor.schema().keyId(); String methodName = descriptor.type() == GENERAL ? "forLabel" : "uniqueForLabel"; builder.append( format( "%s.%s( %d, %s )", className, methodName, labelId, asString( descriptor.schema().getPropertyIds() ) ) ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/dbstructure/DbStructureCollector.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/dbstructure/DbStructureCollector.java index 5dc16fcc5572..45215c7eb66f 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/dbstructure/DbStructureCollector.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/dbstructure/DbStructureCollector.java @@ -30,8 +30,8 @@ import org.neo4j.collection.primitive.hopscotch.IntKeyLongValueTable; import org.neo4j.helpers.collection.Iterators; import org.neo4j.helpers.collection.Pair; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.LabelSchemaSupplier; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import org.neo4j.kernel.api.schema.constaints.NodeExistenceConstraintDescriptor; import org.neo4j.kernel.api.schema.constaints.NodeKeyConstraintDescriptor; @@ -145,7 +145,7 @@ public long cardinalityByLabelsAndRelationshipType( int fromLabelId, int relType @Override public double indexSelectivity( int labelId, int... propertyKeyIds ) { - LabelSchemaDescriptor descriptor = SchemaDescriptorFactory.forLabel( labelId, propertyKeyIds ); + SchemaDescriptor descriptor = SchemaDescriptorFactory.forLabel( labelId, propertyKeyIds ); IndexStatistics result1 = regularIndices.getIndex( descriptor ); IndexStatistics result2 = result1 == null ? uniqueIndices.getIndex( descriptor ) : result1; return result2 == null ? Double.NaN : result2.uniqueValuesPercentage; @@ -154,7 +154,7 @@ public double indexSelectivity( int labelId, int... propertyKeyIds ) @Override public double indexPropertyExistsSelectivity( int labelId, int... propertyKeyIds ) { - LabelSchemaDescriptor descriptor = SchemaDescriptorFactory.forLabel( labelId, propertyKeyIds ); + SchemaDescriptor descriptor = SchemaDescriptorFactory.forLabel( labelId, propertyKeyIds ); IndexStatistics result1 = regularIndices.getIndex( descriptor ); IndexStatistics result2 = result1 == null ? uniqueIndices.getIndex( descriptor ) : result1; return result2 == null ? Double.NaN : result2.size; @@ -346,14 +346,14 @@ private IndexStatistics( double uniqueValuesPercentage, long size ) private class IndexDescriptorMap implements Iterable> { private final String indexType; - private final Map indexMap = new HashMap<>(); + private final Map indexMap = new HashMap<>(); IndexDescriptorMap( String indexType ) { this.indexType = indexType; } - public void putIndex( LabelSchemaDescriptor descriptor, String userDescription, double uniqueValuesPercentage, long size ) + public void putIndex( SchemaDescriptor descriptor, String userDescription, double uniqueValuesPercentage, long size ) { if ( indexMap.containsKey( descriptor ) ) { @@ -366,7 +366,7 @@ public void putIndex( LabelSchemaDescriptor descriptor, String userDescription, indexMap.put( descriptor, new IndexStatistics( uniqueValuesPercentage, size ) ); } - public IndexStatistics getIndex( LabelSchemaDescriptor descriptor ) + public IndexStatistics getIndex( SchemaDescriptor descriptor ) { return indexMap.get( descriptor ); } @@ -374,7 +374,7 @@ public IndexStatistics getIndex( LabelSchemaDescriptor descriptor ) @Override public Iterator> iterator() { - final Iterator iterator = indexMap.keySet().iterator(); + final Iterator iterator = indexMap.keySet().iterator(); return new Iterator>() { @Override @@ -387,8 +387,8 @@ public boolean hasNext() public Pair next() { //TODO: Add support for composite indexes - LabelSchemaDescriptor next = iterator.next(); - String label = labels.byIdOrFail( next.getLabelId() ); + SchemaDescriptor next = iterator.next(); + String label = labels.byIdOrFail( next.keyId() ); String[] propertyKeyNames = propertyKeys.byIdOrFail( next.getPropertyIds() ); return Pair.of( label, propertyKeyNames ); } diff --git a/community/kernel/src/main/java/org/neo4j/storageengine/api/StoreReadLayer.java b/community/kernel/src/main/java/org/neo4j/storageengine/api/StoreReadLayer.java index 21993e9a2949..b6b423342557 100644 --- a/community/kernel/src/main/java/org/neo4j/storageengine/api/StoreReadLayer.java +++ b/community/kernel/src/main/java/org/neo4j/storageengine/api/StoreReadLayer.java @@ -34,7 +34,6 @@ import org.neo4j.internal.kernel.api.exceptions.LabelNotFoundKernelException; import org.neo4j.internal.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.internal.kernel.api.exceptions.schema.TooManyLabelsException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; import org.neo4j.kernel.api.AssertOpen; @@ -145,12 +144,12 @@ long indexGetCommittedId( SchemaIndexDescriptor index ) * @param descriptor a description of the index. * @return {@link SchemaIndexDescriptor} for matching index, or {@code null} if not found. */ - SchemaIndexDescriptor indexGetForSchema( LabelSchemaDescriptor descriptor ); + SchemaIndexDescriptor indexGetForSchema( SchemaDescriptor descriptor ); /** * Returns state of a stored index. * - * @param descriptor {@link LabelSchemaDescriptor} to get state for. + * @param descriptor {@link SchemaIndexDescriptor} to get state for. * @return {@link InternalIndexState} for index. * @throws IndexNotFoundKernelException if index not found. */ @@ -159,7 +158,7 @@ long indexGetCommittedId( SchemaIndexDescriptor index ) /** * Return index provider descriptor of a stored index. * - * @param descriptor {@link LabelSchemaDescriptor} to get provider descriptor for. + * @param descriptor {@link SchemaIndexDescriptor} to get provider descriptor for. * @return {@link IndexProvider.Descriptor} for index. * @throws IndexNotFoundKernelException if index not found. */ @@ -168,28 +167,28 @@ long indexGetCommittedId( SchemaIndexDescriptor index ) /** * Return index reference of a stored index. * - * @param descriptor {@link LabelSchemaDescriptor} to get provider reference for. + * @param descriptor {@link SchemaIndexDescriptor} to get provider reference for. * @return {@link IndexProvider.Descriptor} for index. * @throws IndexNotFoundKernelException if index not found. */ CapableIndexReference indexReference( SchemaIndexDescriptor descriptor ) throws IndexNotFoundKernelException; /** - * @param descriptor {@link LabelSchemaDescriptor} to get population progress for. + * @param descriptor {@link SchemaDescriptor} to get population progress for. * @return progress of index population, which is the initial state of an index when it's created. * @throws IndexNotFoundKernelException if index not found. */ - PopulationProgress indexGetPopulationProgress( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException; + PopulationProgress indexGetPopulationProgress( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException; /** * Returns any failure that happened during population or operation of an index. Such failures * are persisted and can be accessed even after restart. * - * @param descriptor {@link LabelSchemaDescriptor} to get failure for. + * @param descriptor {@link SchemaDescriptor} to get failure for. * @return failure of an index, or {@code null} if index is working as it should. * @throws IndexNotFoundKernelException if index not found. */ - String indexGetFailure( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException; + String indexGetFailure( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException; /** * @param labelName name of label. @@ -349,22 +348,22 @@ Cursor relationshipGetProperty( StorageStatement statement, Relati /** * Returns size of index, i.e. number of entities in that index. * - * @param descriptor {@link LabelSchemaDescriptor} to return size for. + * @param descriptor {@link SchemaDescriptor} to return size for. * @return number of entities in the given index. * @throws IndexNotFoundKernelException if no such index exists. */ - long indexSize( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException; + long indexSize( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException; /** * Returns percentage of values in the given {@code index} are unique. A value of {@code 1.0} means that * all values in the index are unique, e.g. that there are no duplicate values. A value of, say {@code 0.9} * means that 10% of the values are duplicates. * - * @param descriptor {@link LabelSchemaDescriptor} to get uniqueness percentage for. + * @param descriptor {@link SchemaDescriptor} to get uniqueness percentage for. * @return percentage of values being unique in this index, max {@code 1.0} for all unique. * @throws IndexNotFoundKernelException if no such index exists. */ - double indexUniqueValuesPercentage( LabelSchemaDescriptor descriptor ) throws IndexNotFoundKernelException; + double indexUniqueValuesPercentage( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException; long nodesGetCount(); @@ -376,10 +375,10 @@ Cursor relationshipGetProperty( StorageStatement statement, Relati int relationshipTypeCount(); - DoubleLongRegister indexUpdatesAndSize( LabelSchemaDescriptor descriptor, DoubleLongRegister target ) + DoubleLongRegister indexUpdatesAndSize( SchemaDescriptor descriptor, DoubleLongRegister target ) throws IndexNotFoundKernelException; - DoubleLongRegister indexSample( LabelSchemaDescriptor descriptor, DoubleLongRegister target ) + DoubleLongRegister indexSample( SchemaDescriptor descriptor, DoubleLongRegister target ) throws IndexNotFoundKernelException; boolean nodeExists( long id ); diff --git a/community/kernel/src/main/java/org/neo4j/storageengine/api/schema/SchemaRule.java b/community/kernel/src/main/java/org/neo4j/storageengine/api/schema/SchemaRule.java index 8f362499d810..e15e95d42745 100644 --- a/community/kernel/src/main/java/org/neo4j/storageengine/api/schema/SchemaRule.java +++ b/community/kernel/src/main/java/org/neo4j/storageengine/api/schema/SchemaRule.java @@ -22,7 +22,7 @@ import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.RelationTypeSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaComputer; -import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptorSupplier; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; import org.neo4j.kernel.api.exceptions.schema.MalformedSchemaRuleException; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; @@ -32,7 +32,7 @@ /** * Represents a stored schema rule. */ -public abstract class SchemaRule implements SchemaDescriptor.Supplier +public abstract class SchemaRule implements SchemaDescriptorSupplier { protected final long id; protected final String name; diff --git a/community/kernel/src/main/java/org/neo4j/unsafe/batchinsert/internal/BatchInserterImpl.java b/community/kernel/src/main/java/org/neo4j/unsafe/batchinsert/internal/BatchInserterImpl.java index 7d936a36230d..433d25e3ca88 100644 --- a/community/kernel/src/main/java/org/neo4j/unsafe/batchinsert/internal/BatchInserterImpl.java +++ b/community/kernel/src/main/java/org/neo4j/unsafe/batchinsert/internal/BatchInserterImpl.java @@ -52,7 +52,8 @@ import org.neo4j.internal.kernel.api.InternalIndexState; import org.neo4j.internal.kernel.api.exceptions.KernelException; import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; -import org.neo4j.internal.kernel.api.schema.LabelSchemaSupplier; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptorSupplier; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.pagecache.IOLimiter; import org.neo4j.io.pagecache.PageCache; @@ -490,7 +491,7 @@ private void repopulateAllIndexes() throws IOException, IndexEntryConflictExcept final IndexRule[] rules = getIndexesNeedingPopulation(); final List populators = new ArrayList<>( rules.length ); - final LabelSchemaDescriptor[] descriptors = new LabelSchemaDescriptor[rules.length]; + final SchemaDescriptor[] descriptors = new LabelSchemaDescriptor[rules.length]; for ( int i = 0; i < rules.length; i++ ) { @@ -522,9 +523,9 @@ private void repopulateAllIndexes() throws IOException, IndexEntryConflictExcept return true; }; - List descriptorList = Arrays.asList( descriptors ); + List descriptorList = Arrays.asList( descriptors ); int[] labelIds = descriptorList.stream() - .mapToInt( LabelSchemaDescriptor::getLabelId ) + .mapToInt( SchemaDescriptor::keyId ) .toArray(); int[] propertyKeyIds = descriptorList.stream() @@ -1301,7 +1302,7 @@ public void forceFlush() } } - private static class IndexPopulatorWithSchema extends IndexPopulator.Adapter implements LabelSchemaSupplier + private static class IndexPopulatorWithSchema extends IndexPopulator.Adapter implements SchemaDescriptorSupplier { private static final int batchSize = 1_000; private final IndexPopulator populator; @@ -1315,7 +1316,7 @@ private static class IndexPopulatorWithSchema extends IndexPopulator.Adapter imp } @Override - public LabelSchemaDescriptor schema() + public SchemaDescriptor schema() { return index.schema(); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/api/CompositeIndexingIT.java b/community/kernel/src/test/java/org/neo4j/kernel/api/CompositeIndexingIT.java index 2448323b7e4c..5800f9701164 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/api/CompositeIndexingIT.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/api/CompositeIndexingIT.java @@ -43,6 +43,7 @@ import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; import org.neo4j.internal.kernel.api.exceptions.schema.ConstraintValidationException; +import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.kernel.api.exceptions.index.IndexNotApplicableKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.schema.constaints.ConstraintDescriptorFactory; @@ -87,7 +88,8 @@ public void setup() throws Exception { if ( index.type() == UNIQUE ) { - statement.schemaWriteOperations().uniquePropertyConstraintCreate( index.schema() ); + statement.schemaWriteOperations().uniquePropertyConstraintCreate( + (LabelSchemaDescriptor) index.schema() ); } else { @@ -273,9 +275,10 @@ public void shouldNotSeeNodesLackingOneProperty() throws Exception DataWriteOperations writeOperations = statement.dataWriteOperations(); long irrelevantNodeID = writeOperations.nodeCreate(); writeOperations.nodeAddLabel( irrelevantNodeID, LABEL_ID ); - for ( int i = 0; i < index.schema().getPropertyIds().length - 1; i++ ) + int[] propertyIds = index.schema().getPropertyIds(); + for ( int i = 0; i < propertyIds.length - 1; i++ ) { - int propID = index.schema().getPropertyIds()[i]; + int propID = propertyIds[i]; writeOperations.nodeSetProperty( irrelevantNodeID, propID, Values.intValue( propID ) ); } PrimitiveLongIterator resultIterator = seek( statement ); @@ -312,10 +315,11 @@ private PrimitiveLongIterator seek( Statement statement ) throws IndexNotFoundKe private IndexQuery[] exactQuery() { - IndexQuery[] query = new IndexQuery[index.schema().getPropertyIds().length]; + int[] propertyIds = index.schema().getPropertyIds(); + IndexQuery[] query = new IndexQuery[propertyIds.length]; for ( int i = 0; i < query.length; i++ ) { - int propID = index.schema().getPropertyIds()[i]; + int propID = propertyIds[i]; query[i] = IndexQuery.exact( propID, Values.of( propID ) ); } return query; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/api/exceptions/index/IndexPopulationFailedKernelExceptionTest.java b/community/kernel/src/test/java/org/neo4j/kernel/api/exceptions/index/IndexPopulationFailedKernelExceptionTest.java index 075473296f47..4c3106f7e958 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/api/exceptions/index/IndexPopulationFailedKernelExceptionTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/api/exceptions/index/IndexPopulationFailedKernelExceptionTest.java @@ -23,6 +23,7 @@ import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; @@ -36,7 +37,7 @@ public class IndexPopulationFailedKernelExceptionTest public void shouldHandleMultiplePropertiesInConstructor1() { // Given - LabelSchemaDescriptor descriptor = new LabelSchemaDescriptor( 0, 42, 43, 44 ); + LabelSchemaDescriptor descriptor = SchemaDescriptorFactory.forLabel( 0, 42, 43, 44 ); TokenNameLookup lookup = mock( TokenNameLookup.class ); when( lookup.labelGetName( 0 ) ).thenReturn( "L" ); when( lookup.propertyKeyGetName( 42 ) ).thenReturn( "FOO" ); @@ -56,7 +57,7 @@ public void shouldHandleMultiplePropertiesInConstructor1() public void shouldHandleMultiplePropertiesInConstructor2() { // Given - LabelSchemaDescriptor descriptor = new LabelSchemaDescriptor( 0, 42, 43, 44 ); + LabelSchemaDescriptor descriptor = SchemaDescriptorFactory.forLabel( 0, 42, 43, 44 ); TokenNameLookup lookup = mock( TokenNameLookup.class ); when( lookup.labelGetName( 0 ) ).thenReturn( "L" ); when( lookup.propertyKeyGetName( 42 ) ).thenReturn( "FOO" ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/api/index/CompositeIndexAccessorCompatibility.java b/community/kernel/src/test/java/org/neo4j/kernel/api/index/CompositeIndexAccessorCompatibility.java index bb9d556cb0db..a9a76ec23f3b 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/api/index/CompositeIndexAccessorCompatibility.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/api/index/CompositeIndexAccessorCompatibility.java @@ -22,7 +22,7 @@ import org.junit.Ignore; import org.junit.Test; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptorFactory; import org.neo4j.values.storable.CoordinateReferenceSystem; @@ -172,7 +172,7 @@ public void closingAnOnlineIndexUpdaterMustNotThrowEvenIfItHasBeenFedConflicting } } - private static IndexEntryUpdate add( long nodeId, LabelSchemaDescriptor schema, Object value1, Object value2 ) + private static IndexEntryUpdate add( long nodeId, SchemaDescriptor schema, Object value1, Object value2 ) { return IndexEntryUpdate.add( nodeId, schema, Values.of( value1 ), Values.of( value2 ) ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/api/index/IndexQueryHelper.java b/community/kernel/src/test/java/org/neo4j/kernel/api/index/IndexQueryHelper.java index cb669fcc8dd5..2fae35a24fb4 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/api/index/IndexQueryHelper.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/api/index/IndexQueryHelper.java @@ -20,7 +20,7 @@ package org.neo4j.kernel.api.index; import org.neo4j.internal.kernel.api.IndexQuery; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.values.storable.Value; import org.neo4j.values.storable.Values; @@ -35,26 +35,26 @@ public static IndexQuery exact( int propertyKeyId, Object value ) return IndexQuery.exact( propertyKeyId, Values.of( value ) ); } - public static IndexEntryUpdate add( - long nodeId, LabelSchemaDescriptor schema, Object... objects ) + public static IndexEntryUpdate add( + long nodeId, SchemaDescriptor schema, Object... objects ) { return IndexEntryUpdate.add( nodeId, schema, toValues( objects ) ); } - public static IndexEntryUpdate remove( - long nodeId, LabelSchemaDescriptor schema, Object... objects ) + public static IndexEntryUpdate remove( + long nodeId, SchemaDescriptor schema, Object... objects ) { return IndexEntryUpdate.remove( nodeId, schema, toValues( objects ) ); } - public static IndexEntryUpdate change( - long nodeId, LabelSchemaDescriptor schema, Object o1, Object o2 ) + public static IndexEntryUpdate change( + long nodeId, SchemaDescriptor schema, Object o1, Object o2 ) { return IndexEntryUpdate.change( nodeId, schema, Values.of( o1 ), Values.of( o2 ) ); } - public static IndexEntryUpdate change( - long nodeId, LabelSchemaDescriptor schema, Object[] o1, Object[] o2 ) + public static IndexEntryUpdate change( + long nodeId, SchemaDescriptor schema, Object[] o1, Object[] o2 ) { return IndexEntryUpdate.change( nodeId, schema, toValues( o1 ), toValues( o2 ) ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/api/index/NodePropertyAccessor.java b/community/kernel/src/test/java/org/neo4j/kernel/api/index/NodePropertyAccessor.java index 0efafb6eb005..e085c5cd12d1 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/api/index/NodePropertyAccessor.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/api/index/NodePropertyAccessor.java @@ -22,7 +22,7 @@ import java.util.HashMap; import java.util.Map; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.values.storable.Value; import org.neo4j.values.storable.Values; @@ -30,18 +30,19 @@ public class NodePropertyAccessor implements PropertyAccessor { private final Map> nodePropertyMap; - NodePropertyAccessor( long nodeId, LabelSchemaDescriptor schema, Value... values ) + NodePropertyAccessor( long nodeId, SchemaDescriptor schema, Value... values ) { nodePropertyMap = new HashMap<>(); addNode( nodeId, schema, values ); } - public void addNode( long nodeId, LabelSchemaDescriptor schema, Value... values ) + public void addNode( long nodeId, SchemaDescriptor schema, Value... values ) { Map propertyMap = new HashMap<>(); - for ( int i = 0; i < schema.getPropertyIds().length; i++ ) + int[] propertyIds = schema.getPropertyIds(); + for ( int i = 0; i < propertyIds.length; i++ ) { - propertyMap.put( schema.getPropertyIds()[i], values[i] ); + propertyMap.put( propertyIds[i], values[i] ); } nodePropertyMap.put( nodeId, propertyMap ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/api/index/SimpleIndexPopulatorCompatibility.java b/community/kernel/src/test/java/org/neo4j/kernel/api/index/SimpleIndexPopulatorCompatibility.java index 43607d10794e..31c901b184f3 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/api/index/SimpleIndexPopulatorCompatibility.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/api/index/SimpleIndexPopulatorCompatibility.java @@ -28,11 +28,11 @@ import org.neo4j.collection.primitive.PrimitiveLongCollections; import org.neo4j.collection.primitive.PrimitiveLongIterator; -import org.neo4j.helpers.collection.Iterables; import org.neo4j.helpers.Exceptions; +import org.neo4j.helpers.collection.Iterables; import org.neo4j.internal.kernel.api.IndexOrder; import org.neo4j.internal.kernel.api.IndexQuery; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.exceptions.index.IndexNotApplicableKernelException; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; @@ -137,7 +137,7 @@ public void shouldApplyUpdatesIdempotently() throws Exception long nodeId = 1; // update using populator... - IndexEntryUpdate update = add( nodeId, descriptor.schema(), propertyValue ); + IndexEntryUpdate update = add( nodeId, descriptor.schema(), propertyValue ); p.add( singletonList( update ) ); // ...is the same as update using updater try ( IndexUpdater updater = p.newPopulatingUpdater( ( node, propertyId ) -> propertyValue ) ) diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/LockingStatementOperationsTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/LockingStatementOperationsTest.java index 2b8acd3246ef..4c813131261e 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/LockingStatementOperationsTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/LockingStatementOperationsTest.java @@ -228,7 +228,7 @@ public void shouldAcquireSchemaWriteLockBeforeRemovingIndexRule() throws Excepti lockingOps.indexDrop( state, index ); // then - order.verify( locks ).acquireExclusive( LockTracer.NONE, ResourceTypes.LABEL, index.schema().getLabelId() ); + order.verify( locks ).acquireExclusive( LockTracer.NONE, ResourceTypes.LABEL, index.schema().keyId() ); order.verify( schemaWriteOps ).indexDrop( state, index ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/BatchingMultipleIndexPopulatorTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/BatchingMultipleIndexPopulatorTest.java index 17af7c78151e..62da09cd8137 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/BatchingMultipleIndexPopulatorTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/BatchingMultipleIndexPopulatorTest.java @@ -349,7 +349,7 @@ private static IndexPopulator addPopulator( BatchingMultipleIndexPopulator batch flipper.setFlipTarget( indexProxyFactory ); batchingPopulator.addPopulator( - populator, descriptor.schema().getLabelId(), + populator, descriptor.schema().keyId(), new IndexMeta( 1, descriptor, new IndexProvider.Descriptor( "foo", "1" ), NO_CAPABILITY ), flipper, failedIndexProxyFactory, "testIndex" ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexMapTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexMapTest.java index e49fa34e140b..5fd204b859fd 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexMapTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexMapTest.java @@ -27,6 +27,7 @@ import org.neo4j.collection.primitive.PrimitiveIntSet; import org.neo4j.collection.primitive.PrimitiveLongObjectMap; import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import static org.hamcrest.MatcherAssert.assertThat; @@ -103,19 +104,19 @@ public void shouldHandleUnrelated() { assertThat( indexMap.getRelatedIndexes( noLabel, noLabel, emptySet() ), - emptyIterableOf( LabelSchemaDescriptor.class ) ); + emptyIterableOf( SchemaDescriptor.class ) ); assertThat( indexMap.getRelatedIndexes( label( 2 ), noLabel, emptySet() ), - emptyIterableOf( LabelSchemaDescriptor.class ) ); + emptyIterableOf( SchemaDescriptor.class ) ); assertThat( indexMap.getRelatedIndexes( noLabel, label( 2 ), properties( 1 ) ), - emptyIterableOf( LabelSchemaDescriptor.class ) ); + emptyIterableOf( SchemaDescriptor.class ) ); assertThat( indexMap.getRelatedIndexes( label( 2 ), label( 2 ), properties( 1 ) ), - emptyIterableOf( LabelSchemaDescriptor.class ) ); + emptyIterableOf( SchemaDescriptor.class ) ); } // HELPERS diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexingServiceTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexingServiceTest.java index 0f83028a746b..441136c7f68e 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexingServiceTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexingServiceTest.java @@ -52,6 +52,7 @@ import org.neo4j.internal.kernel.api.InternalIndexState; import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.pagecache.IOLimiter; import org.neo4j.io.pagecache.PageCache; @@ -606,7 +607,7 @@ public void applicationOfIndexUpdatesShouldThrowIfServiceIsShutdown() } } - private IndexUpdates updates( Iterable> updates ) + private IndexUpdates updates( Iterable> updates ) { return new DirectIndexUpdates( updates ); } @@ -716,9 +717,9 @@ private IndexUpdates nodeIdsAsIndexUpdates( long... nodeIds ) return new IndexUpdates() { @Override - public Iterator> iterator() + public Iterator> iterator() { - List> updates = new ArrayList<>(); + List> updates = new ArrayList<>(); for ( long nodeId : nodeIds ) { updates.add( IndexEntryUpdate.add( nodeId, index.schema(), Values.of( 1 ) ) ); @@ -1183,12 +1184,12 @@ private NodeUpdates addNodeUpdate( long nodeId, Object propertyValue, int labelI .added( index.schema().getPropertyId(), Values.of( propertyValue ) ).build(); } - private IndexEntryUpdate add( long nodeId, Object propertyValue ) + private IndexEntryUpdate add( long nodeId, Object propertyValue ) { return IndexEntryUpdate.add( nodeId, index.schema(), Values.of( propertyValue ) ); } - private IndexEntryUpdate add( long nodeId, Object propertyValue, int labelId ) + private IndexEntryUpdate add( long nodeId, Object propertyValue, int labelId ) { LabelSchemaDescriptor schema = SchemaDescriptorFactory.forLabel( labelId, index.schema().getPropertyId() ); return IndexEntryUpdate.add( nodeId, schema, Values.of( propertyValue ) ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/inmemory/UniqueInMemoryIndex.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/inmemory/UniqueInMemoryIndex.java index 6b4fd0c02e7e..fd61b6c9db59 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/inmemory/UniqueInMemoryIndex.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/inmemory/UniqueInMemoryIndex.java @@ -24,7 +24,7 @@ import java.util.Set; import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.index.IndexEntryUpdate; import org.neo4j.kernel.api.index.IndexUpdater; @@ -37,7 +37,7 @@ class UniqueInMemoryIndex extends InMemoryIndex { - private final LabelSchemaDescriptor schema; + private final SchemaDescriptor schema; UniqueInMemoryIndex( SchemaIndexDescriptor descriptor ) { diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/IndexTxStateUpdaterTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/IndexTxStateUpdaterTest.java index fe008b8e1368..a8d129070b5b 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/IndexTxStateUpdaterTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/IndexTxStateUpdaterTest.java @@ -29,7 +29,7 @@ import org.neo4j.collection.primitive.PrimitiveIntCollections; import org.neo4j.collection.primitive.PrimitiveIntSet; import org.neo4j.cursor.Cursor; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.properties.PropertyKeyValue; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptorFactory; @@ -220,7 +220,7 @@ private ValueTuple values( Object... values ) } private void verifyIndexUpdate( - LabelSchemaDescriptor schema, long nodeId, ValueTuple before, ValueTuple after ) + SchemaDescriptor schema, long nodeId, ValueTuple before, ValueTuple after ) { verify( txState ).indexDoUpdateEntry( eq( schema ), eq( nodeId), eq( before ), eq( after ) ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/TxStateTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/TxStateTest.java index 6c2c6e0a03a2..ac3ca2ce0f00 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/TxStateTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/TxStateTest.java @@ -271,7 +271,7 @@ public void shouldAddAndGetByLabel() // THEN assertEquals( asSet( indexOn_1_1 ), - state.indexDiffSetsByLabel( indexOn_1_1.schema().getLabelId() ).getAdded() ); + state.indexDiffSetsByLabel( indexOn_1_1.schema().keyId() ).getAdded() ); } @Test @@ -1773,7 +1773,7 @@ public void withBooleanProperties( Collection> nodesWithValue private void withProperties( Collection> nodesWithValues ) { - final int labelId = descriptor.schema().getLabelId(); + final int labelId = descriptor.schema().keyId(); final int propertyKeyId = descriptor.schema().getPropertyId(); for ( Pair entry : nodesWithValues ) { diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/index/schema/NativeStringIndexingIT.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/index/schema/NativeStringIndexingIT.java index 364e79cd80ed..6abb55450425 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/index/schema/NativeStringIndexingIT.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/index/schema/NativeStringIndexingIT.java @@ -82,7 +82,7 @@ public void shouldHandleKeySizesCloseToTheSizeLimit() throws IOException, IndexE { for ( int i = 0; i < strings.size(); i++ ) { - try ( PrimitiveLongResourceIterator result = reader.query( exact( descriptor.schema().getPropertyIds()[0], strings.get( i ) ) ) ) + try ( PrimitiveLongResourceIterator result = reader.query( exact( descriptor.schema().getPropertyId(), strings.get( i ) ) ) ) { assertEquals( i, single( result, -1 ) ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/newapi/AbstractNodeValueIndexCursorTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/newapi/AbstractNodeValueIndexCursorTest.java index 246f56b67451..c30a3073f064 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/newapi/AbstractNodeValueIndexCursorTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/newapi/AbstractNodeValueIndexCursorTest.java @@ -24,6 +24,7 @@ import org.neo4j.kernel.api.SchemaWriteOperations; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.TokenWriteOperations; +import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import org.neo4j.kernel.impl.core.ThreadToStatementContextBridge; import org.neo4j.kernel.internal.GraphDatabaseAPI; @@ -41,7 +42,7 @@ protected void createCompositeIndex( GraphDatabaseService graphDb, String label, statement.schemaWriteOperations(); TokenWriteOperations token = statement.tokenWriteOperations(); schemaWriteOperations.indexCreate( - new org.neo4j.kernel.api.schema.LabelSchemaDescriptor( token.labelGetOrCreateForName( "Person" ), + SchemaDescriptorFactory.forLabel( token.labelGetOrCreateForName( "Person" ), token.propertyKeyGetOrCreateForName( "firstname" ), token.propertyKeyGetOrCreateForName( "surname" ) ) ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/newapi/IndexTxStateUpdaterTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/newapi/IndexTxStateUpdaterTest.java index a5f461c9990c..d42a68b414f6 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/newapi/IndexTxStateUpdaterTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/newapi/IndexTxStateUpdaterTest.java @@ -28,7 +28,7 @@ import org.neo4j.internal.kernel.api.helpers.StubNodeCursor; import org.neo4j.internal.kernel.api.helpers.StubPropertyCursor; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptorFactory; import org.neo4j.kernel.api.txstate.TransactionState; @@ -205,7 +205,7 @@ private ValueTuple values( Object... values ) } private void verifyIndexUpdate( - LabelSchemaDescriptor schema, long nodeId, ValueTuple before, ValueTuple after ) + SchemaDescriptor schema, long nodeId, ValueTuple before, ValueTuple after ) { verify( txState ).indexDoUpdateEntry( eq( schema ), eq( nodeId ), eq( before ), eq( after ) ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/TransactionRecordStateTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/TransactionRecordStateTest.java index d7fc90465e62..dcd770acd8b3 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/TransactionRecordStateTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/TransactionRecordStateTest.java @@ -37,7 +37,7 @@ import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.helpers.collection.Iterables; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.TransactionFailureException; import org.neo4j.kernel.api.index.IndexEntryUpdate; import org.neo4j.kernel.impl.api.BatchTransactionApplier; @@ -1409,7 +1409,7 @@ public void apply( IndexUpdates updates ) } @Override - public Iterable> convertToIndexUpdates( NodeUpdates nodeUpdates ) + public Iterable> convertToIndexUpdates( NodeUpdates nodeUpdates ) { nodeUpdatesList.add( nodeUpdates ); return Iterables.empty(); diff --git a/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/NonUniqueDatabaseIndexPopulatingUpdaterTest.java b/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/NonUniqueDatabaseIndexPopulatingUpdaterTest.java index 64e932ecf924..775cd6e097b6 100644 --- a/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/NonUniqueDatabaseIndexPopulatingUpdaterTest.java +++ b/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/NonUniqueDatabaseIndexPopulatingUpdaterTest.java @@ -24,7 +24,7 @@ import java.io.IOException; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.impl.schema.writer.LuceneIndexWriter; import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import org.neo4j.kernel.impl.api.index.sampling.DefaultNonUniqueIndexSampler; @@ -45,9 +45,9 @@ public class NonUniqueDatabaseIndexPopulatingUpdaterTest { - private static final LabelSchemaDescriptor SCHEMA_DESCRIPTOR = SchemaDescriptorFactory.forLabel( 1, 42 ); + private static final SchemaDescriptor SCHEMA_DESCRIPTOR = SchemaDescriptorFactory.forLabel( 1, 42 ); private static final int SAMPLING_BUFFER_SIZE_LIMIT = 100; - private static final LabelSchemaDescriptor COMPOSITE_SCHEMA_DESCRIPTOR = SchemaDescriptorFactory + private static final SchemaDescriptor COMPOSITE_SCHEMA_DESCRIPTOR = SchemaDescriptorFactory .forLabel( 1, 42, 43 ); @Test diff --git a/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/NonUniqueDatabaseIndexPopulatorTest.java b/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/NonUniqueDatabaseIndexPopulatorTest.java index 1c9b8d8bf758..e7ccf94b1f11 100644 --- a/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/NonUniqueDatabaseIndexPopulatorTest.java +++ b/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/NonUniqueDatabaseIndexPopulatorTest.java @@ -31,14 +31,14 @@ import org.neo4j.collection.primitive.PrimitiveLongCollections; import org.neo4j.collection.primitive.PrimitiveLongIterator; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.IndexQuery; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.io.IOUtils; import org.neo4j.kernel.api.impl.index.storage.DirectoryFactory; import org.neo4j.kernel.api.impl.index.storage.PartitionedIndexStorage; import org.neo4j.kernel.api.impl.schema.LuceneSchemaIndexBuilder; import org.neo4j.kernel.api.impl.schema.SchemaIndex; import org.neo4j.kernel.api.index.IndexEntryUpdate; -import org.neo4j.internal.kernel.api.IndexQuery; import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptorFactory; @@ -64,7 +64,7 @@ public class NonUniqueDatabaseIndexPopulatorTest private SchemaIndex index; private NonUniqueLuceneIndexPopulator populator; - private final LabelSchemaDescriptor labelSchemaDescriptor = SchemaDescriptorFactory.forLabel( 0, 0 ); + private final SchemaDescriptor labelSchemaDescriptor = SchemaDescriptorFactory.forLabel( 0, 0 ); @Before public void setUp() diff --git a/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/UniqueDatabaseIndexPopulatingUpdaterTest.java b/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/UniqueDatabaseIndexPopulatingUpdaterTest.java index 7c215de7dc63..e580bc3365c2 100644 --- a/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/UniqueDatabaseIndexPopulatingUpdaterTest.java +++ b/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/UniqueDatabaseIndexPopulatingUpdaterTest.java @@ -25,7 +25,7 @@ import java.io.IOException; import java.util.List; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.impl.schema.SchemaIndex; import org.neo4j.kernel.api.impl.schema.writer.LuceneIndexWriter; @@ -52,7 +52,7 @@ public class UniqueDatabaseIndexPopulatingUpdaterTest { - private static final LabelSchemaDescriptor descriptor = SchemaDescriptorFactory.forLabel( 1, 42 ); + private static final SchemaDescriptor descriptor = SchemaDescriptorFactory.forLabel( 1, 42 ); @Test public void closeVerifiesUniquenessOfAddedValues() throws Exception @@ -246,7 +246,7 @@ private static UniqueLuceneIndexPopulatingUpdater newUpdater( SchemaIndex index, mock( PropertyAccessor.class ), sampler ); } - private void verifyVerifyUniqueness( SchemaIndex index, LabelSchemaDescriptor descriptor, Object... values ) + private void verifyVerifyUniqueness( SchemaIndex index, SchemaDescriptor descriptor, Object... values ) throws IOException, IndexEntryConflictException { @SuppressWarnings( "unchecked" ) diff --git a/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/UniqueDatabaseIndexPopulatorTest.java b/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/UniqueDatabaseIndexPopulatorTest.java index 5f6cb6adb9f3..6d39ac841767 100644 --- a/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/UniqueDatabaseIndexPopulatorTest.java +++ b/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/populator/UniqueDatabaseIndexPopulatorTest.java @@ -36,6 +36,7 @@ import org.neo4j.collection.primitive.PrimitiveLongIterator; import org.neo4j.internal.kernel.api.IndexQuery; import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.io.IOUtils; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.impl.index.storage.DirectoryFactory; @@ -92,7 +93,7 @@ public class UniqueDatabaseIndexPopulatorTest private PartitionedIndexStorage indexStorage; private SchemaIndex index; private UniqueLuceneIndexPopulator populator; - private LabelSchemaDescriptor schemaDescriptor; + private SchemaDescriptor schemaDescriptor; @Before public void setUp() diff --git a/community/lucene-index/src/test/java/org/neo4j/kernel/impl/newapi/ConstraintTest.java b/community/lucene-index/src/test/java/org/neo4j/kernel/impl/newapi/ConstraintTest.java index bad853fe5bc4..231816097292 100644 --- a/community/lucene-index/src/test/java/org/neo4j/kernel/impl/newapi/ConstraintTest.java +++ b/community/lucene-index/src/test/java/org/neo4j/kernel/impl/newapi/ConstraintTest.java @@ -22,6 +22,7 @@ import org.neo4j.internal.kernel.api.ConstraintTestBase; import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; +import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import org.neo4j.kernel.api.schema.constaints.ConstraintDescriptorFactory; public class ConstraintTest extends ConstraintTestBase @@ -35,7 +36,7 @@ public WriteTestSupport newTestSupport() @Override protected LabelSchemaDescriptor labelSchemaDescriptor( int labelId, int... propertyIds ) { - return new org.neo4j.kernel.api.schema.LabelSchemaDescriptor( labelId, propertyIds ); + return SchemaDescriptorFactory.forLabel( labelId, propertyIds ); } @Override diff --git a/community/neo4j/src/test/java/migration/Start3_2DbOn3_3AndCreateFusionIndexIT.java b/community/neo4j/src/test/java/migration/Start3_2DbOn3_3AndCreateFusionIndexIT.java index 37d21e590ad2..2322fe6a2857 100644 --- a/community/neo4j/src/test/java/migration/Start3_2DbOn3_3AndCreateFusionIndexIT.java +++ b/community/neo4j/src/test/java/migration/Start3_2DbOn3_3AndCreateFusionIndexIT.java @@ -39,7 +39,7 @@ import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import org.neo4j.kernel.api.schema.index.SchemaIndexDescriptor; import org.neo4j.kernel.impl.api.KernelStatement; import org.neo4j.kernel.impl.core.ThreadToStatementContextBridge; @@ -170,7 +170,7 @@ private int countIndexedNodes( GraphDatabaseAPI db, Label label, String... keys propertyKeyIds[i] = read.propertyKeyGetForName( keys[i] ); } - SchemaIndexDescriptor index = read.indexGetForSchema( new LabelSchemaDescriptor( labelId, propertyKeyIds ) ); + SchemaIndexDescriptor index = read.indexGetForSchema( SchemaDescriptorFactory.forLabel( labelId, propertyKeyIds ) ); int count; StorageStatement storeStatement = ((KernelStatement)statement).getStoreStatement(); IndexReader reader = storeStatement.getIndexReader( index ); diff --git a/community/neo4j/src/test/java/org/neo4j/locking/QueryExecutionLocksIT.java b/community/neo4j/src/test/java/org/neo4j/locking/QueryExecutionLocksIT.java index 663ae6f1508f..3ef2c118439a 100644 --- a/community/neo4j/src/test/java/org/neo4j/locking/QueryExecutionLocksIT.java +++ b/community/neo4j/src/test/java/org/neo4j/locking/QueryExecutionLocksIT.java @@ -72,7 +72,6 @@ import org.neo4j.internal.kernel.api.procs.QualifiedName; import org.neo4j.internal.kernel.api.procs.UserFunctionHandle; import org.neo4j.internal.kernel.api.procs.UserFunctionSignature; -import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor; import org.neo4j.internal.kernel.api.security.LoginContext; @@ -827,7 +826,7 @@ public Cursor relationshipGetProperties( RelationshipItem relation } @Override - public SchemaIndexDescriptor indexGetForSchema( LabelSchemaDescriptor descriptor ) throws SchemaRuleNotFoundException + public SchemaIndexDescriptor indexGetForSchema( SchemaDescriptor descriptor ) throws SchemaRuleNotFoundException { return readOperations.indexGetForSchema( descriptor ); } diff --git a/community/neo4j/src/test/java/schema/MultiIndexPopulationConcurrentUpdatesIT.java b/community/neo4j/src/test/java/schema/MultiIndexPopulationConcurrentUpdatesIT.java index 85e9e3d0a43e..053393c58eb0 100644 --- a/community/neo4j/src/test/java/schema/MultiIndexPopulationConcurrentUpdatesIT.java +++ b/community/neo4j/src/test/java/schema/MultiIndexPopulationConcurrentUpdatesIT.java @@ -45,6 +45,7 @@ import org.neo4j.internal.kernel.api.InternalIndexState; import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; +import org.neo4j.internal.kernel.api.schema.SchemaDescriptor; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.SilentTokenNameLookup; @@ -625,7 +626,7 @@ public void run() { for ( NodeUpdates update : updates ) { - Iterable> entryUpdates = + Iterable> entryUpdates = indexService.convertToIndexUpdates( update ); DirectIndexUpdates directIndexUpdates = new DirectIndexUpdates( entryUpdates ); indexService.apply( directIndexUpdates ); diff --git a/enterprise/kernel/src/test/java/org/neo4j/kernel/impl/newapi/SchemaReadWriteTest.java b/enterprise/kernel/src/test/java/org/neo4j/kernel/impl/newapi/SchemaReadWriteTest.java index d49be648187f..1003b90ca0ee 100644 --- a/enterprise/kernel/src/test/java/org/neo4j/kernel/impl/newapi/SchemaReadWriteTest.java +++ b/enterprise/kernel/src/test/java/org/neo4j/kernel/impl/newapi/SchemaReadWriteTest.java @@ -22,6 +22,7 @@ import org.neo4j.internal.kernel.api.SchemaReadWriteTestBase; import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.internal.kernel.api.schema.RelationTypeSchemaDescriptor; +import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import static org.neo4j.kernel.api.schema.SchemaDescriptorFactory.forRelType; @@ -36,7 +37,7 @@ public EnterpriseWriteTestSupport newTestSupport() @Override protected LabelSchemaDescriptor labelDescriptor( int label, int... props ) { - return new org.neo4j.kernel.api.schema.LabelSchemaDescriptor( label, props ); + return SchemaDescriptorFactory.forLabel( label, props ); } @Override diff --git a/tools/src/main/java/org/neo4j/tools/dump/DumpCountsStore.java b/tools/src/main/java/org/neo4j/tools/dump/DumpCountsStore.java index cfa2585bd10d..c2a4b05b1c7a 100644 --- a/tools/src/main/java/org/neo4j/tools/dump/DumpCountsStore.java +++ b/tools/src/main/java/org/neo4j/tools/dump/DumpCountsStore.java @@ -167,7 +167,7 @@ public void visitIndexStatistics( long indexId, long updates, long size ) { SchemaIndexDescriptor index = indexes.get( indexId ); out.printf( "\tIndexStatistics[(%s {%s})]:\tupdates=%d, size=%d%n", - label( index.schema().getLabelId() ), propertyKeys( index.schema().getPropertyIds() ), updates, size ); + label( index.schema().keyId() ), propertyKeys( index.schema().getPropertyIds() ), updates, size ); } @Override @@ -175,7 +175,7 @@ public void visitIndexSample( long indexId, long unique, long size ) { SchemaIndexDescriptor index = indexes.get( indexId ); out.printf( "\tIndexSample[(%s {%s})]:\tunique=%d, size=%d%n", - label( index.schema().getLabelId() ), propertyKeys( index.schema().getPropertyIds() ), unique, size ); + label( index.schema().keyId() ), propertyKeys( index.schema().getPropertyIds() ), unique, size ); } @Override