From 95f746c4b50e8d5c3563b5e3852a5190f2ddeef9 Mon Sep 17 00:00:00 2001 From: Pontus Melke Date: Wed, 22 Nov 2017 12:35:26 +0100 Subject: [PATCH] Support autoindexing for all operations In order to do this we had to move some exceptions out of kernel and with that we also moved EntityType --- .../internal/codegen/CompiledExpandUtils.java | 2 +- .../v2_3/TransactionBoundQueryContext.scala | 37 +-- .../v3_1/TransactionBoundQueryContext.scala | 33 +-- .../codegen/CompiledExpandUtilsTest.java | 2 +- .../interpreted/JavaConversionSupport.scala | 3 +- .../TransactionBoundQueryContext.scala | 33 +-- .../kernel/api/ExplicitIndexWrite.java | 32 ++- .../org/neo4j/internal/kernel/api/Write.java | 12 +- .../exceptions/EntityNotFoundException.java | 4 +- ...InvalidTransactionTypeKernelException.java | 4 +- .../AutoIndexingKernelException.java | 2 +- .../ExplicitIndexNotFoundKernelException.java | 2 +- .../neo4j/storageengine/api/EntityType.java | 0 .../api/ExplicitIndexCursorTestBase.java | 1 - .../ExplicitIndexCursorWritesTestBase.java | 236 +++++++++++++++++- .../neo4j/kernel/api/DataWriteOperations.java | 11 +- .../org/neo4j/kernel/api/ExplicitIndex.java | 2 +- .../org/neo4j/kernel/api/ReadOperations.java | 4 +- .../java/org/neo4j/kernel/api/Statement.java | 2 +- .../explicitindex/AutoIndexOperations.java | 34 +-- .../kernel/api/index/PropertyAccessor.java | 2 +- .../ExplicitIndexTransactionState.java | 2 +- .../RelationshipChangeVisitorAdapter.java | 2 +- .../TransactionCountingStateVisitor.java | 2 +- .../builtinprocs/BuiltInProcedures.java | 4 +- .../CachingExplicitIndexTransactionState.java | 2 +- .../ConstraintEnforcingEntityOperations.java | 8 +- .../kernel/impl/api/KernelStatement.java | 4 +- .../api/KernelTransactionImplementation.java | 2 +- .../impl/api/LockingStatementOperations.java | 8 +- .../neo4j/kernel/impl/api/LookupFilter.java | 2 +- .../kernel/impl/api/OperationsFacade.java | 12 +- .../kernel/impl/api/SchemaWriteGuard.java | 2 +- .../api/StateHandlingStatementOperations.java | 8 +- .../TwoPhaseNodeForRelationshipLocking.java | 2 +- .../InternalAutoIndexOperations.java | 89 ++----- .../kernel/impl/api/index/IndexStoreView.java | 2 +- .../api/operations/EntityReadOperations.java | 2 +- .../api/operations/EntityWriteOperations.java | 6 +- .../ExplicitIndexReadOperations.java | 2 +- .../ExplicitIndexWriteOperations.java | 4 +- .../ExplicitIndexTransactionStateImpl.java | 2 +- .../impl/api/state/IndexTxStateUpdater.java | 2 +- .../impl/api/store/NodeLoadingIterator.java | 2 +- .../kernel/impl/api/store/StorageLayer.java | 2 +- .../impl/core/GraphPropertiesProxy.java | 2 +- .../org/neo4j/kernel/impl/core/NodeProxy.java | 6 +- .../kernel/impl/core/RelationshipProxy.java | 6 +- .../impl/coreapi/ExplicitIndexProxy.java | 6 +- .../kernel/impl/coreapi/IndexManagerImpl.java | 4 +- .../impl/coreapi/IndexProviderImpl.java | 2 +- .../RelationshipExplicitIndexProxy.java | 2 +- .../TxStateTransactionDataSnapshot.java | 2 +- .../impl/coreapi/schema/SchemaImpl.java | 2 +- .../impl/factory/GraphDatabaseFacade.java | 4 +- .../kernel/impl/index/ExplicitIndexStore.java | 2 +- .../kernel/impl/newapi/AllStoreHolder.java | 8 +- .../neo4j/kernel/impl/newapi/Operations.java | 102 +++++++- .../storeview/DynamicIndexStoreView.java | 2 +- .../storeview/NeoStoreIndexStoreView.java | 2 +- .../storageengine/api/StoreReadLayer.java | 2 +- .../neo4j/kernel/api/CompositeIndexingIT.java | 6 +- .../api/TransactionStatementSequenceTest.java | 4 +- .../api/index/NodePropertyAccessor.java | 2 +- .../kernel/builtinprocs/StubStatement.java | 2 +- .../org/neo4j/kernel/impl/api/KernelTest.java | 2 +- .../api/LockingStatementOperationsTest.java | 6 +- ...woPhaseNodeForRelationshipLockingTest.java | 2 +- .../impl/api/index/IndexStatisticsTest.java | 4 +- .../index/inmemory/UniqueInMemoryIndex.java | 2 +- .../impl/api/integrationtest/KernelIT.java | 4 +- .../impl/api/integrationtest/PropertyIT.java | 2 +- .../api/state/IndexTxStateUpdaterTest.java | 2 +- .../api/state/LabelTransactionStateTest.java | 2 +- .../StateOperationsAutoIndexingTest.java | 2 +- .../api/store/NodeLoadingIteratorTest.java | 2 +- .../core/NodeProxySingleRelationshipTest.java | 2 +- .../impl/newapi/IndexTxStateUpdaterTest.java | 2 +- .../kernel/impl/store/NeoStoresTest.java | 4 +- .../storeview/NeoStoreIndexStoreViewTest.java | 2 +- .../GraphDbStructureGuideTest.java | 2 +- .../impl/lucene/explicit/CommitContext.java | 2 +- .../explicit/IndexReferenceFactory.java | 2 +- .../impl/lucene/explicit/IndexTypeCache.java | 2 +- .../lucene/explicit/LuceneCommandApplier.java | 2 +- .../lucene/explicit/LuceneDataSource.java | 2 +- .../lucene/explicit/LuceneExplicitIndex.java | 2 +- .../ReadOnlyIndexReferenceFactory.java | 2 +- .../WritableIndexReferenceFactory.java | 2 +- ...erationsFacadeSchemaIndexIteratorTest.java | 2 +- .../neo4j/locking/QueryExecutionLocksIT.java | 4 +- .../internal/spi/v3_4/codegen/Templates.scala | 3 +- .../factory/HighlyAvailableEditionModule.java | 2 +- .../org/neo4j/kernel/api/ConstraintHaIT.java | 2 +- .../neo4j/kernel/ha/lock/ClusterLocksIT.java | 2 +- 95 files changed, 575 insertions(+), 297 deletions(-) rename community/{kernel/src/main/java/org/neo4j => kernel-api/src/main/java/org/neo4j/internal}/kernel/api/exceptions/EntityNotFoundException.java (94%) rename community/{kernel/src/main/java/org/neo4j => kernel-api/src/main/java/org/neo4j/internal}/kernel/api/exceptions/InvalidTransactionTypeKernelException.java (90%) rename community/{kernel/src/main/java/org/neo4j => kernel-api/src/main/java/org/neo4j/internal}/kernel/api/exceptions/explicitindex/AutoIndexingKernelException.java (94%) rename community/{kernel/src/main/java/org/neo4j => kernel-api/src/main/java/org/neo4j/internal}/kernel/api/exceptions/explicitindex/ExplicitIndexNotFoundKernelException.java (94%) rename community/{kernel => kernel-api}/src/main/java/org/neo4j/storageengine/api/EntityType.java (100%) diff --git a/community/cypher/cypher/src/main/java/org/neo4j/cypher/internal/codegen/CompiledExpandUtils.java b/community/cypher/cypher/src/main/java/org/neo4j/cypher/internal/codegen/CompiledExpandUtils.java index 18e6dd7899d0b..9b976360e9c1c 100644 --- a/community/cypher/cypher/src/main/java/org/neo4j/cypher/internal/codegen/CompiledExpandUtils.java +++ b/community/cypher/cypher/src/main/java/org/neo4j/cypher/internal/codegen/CompiledExpandUtils.java @@ -20,8 +20,8 @@ package org.neo4j.cypher.internal.codegen; import org.neo4j.graphdb.Direction; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.ReadOperations; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.impl.api.RelationshipDataExtractor; import org.neo4j.kernel.impl.api.RelationshipVisitor; import org.neo4j.kernel.impl.api.store.RelationshipIterator; diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/TransactionBoundQueryContext.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/TransactionBoundQueryContext.scala index 6b5722f312b21..e38509b93f7ca 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/TransactionBoundQueryContext.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/TransactionBoundQueryContext.scala @@ -43,14 +43,15 @@ import org.neo4j.graphdb.RelationshipType._ import org.neo4j.graphdb._ import org.neo4j.graphdb.security.URLAccessValidationError import org.neo4j.graphdb.traversal.{Evaluators, TraversalDescription, Uniqueness} +import org.neo4j.internal.kernel.api import org.neo4j.internal.kernel.api.IndexQuery import org.neo4j.kernel.GraphDatabaseQueryService +import org.neo4j.kernel.api._ import org.neo4j.kernel.api.exceptions.schema.{AlreadyConstrainedException, AlreadyIndexedException} import org.neo4j.kernel.api.index.InternalIndexState +import org.neo4j.kernel.api.schema.SchemaDescriptorFactory import org.neo4j.kernel.api.schema.constaints.ConstraintDescriptorFactory import org.neo4j.kernel.api.schema.index.IndexDescriptorFactory -import org.neo4j.kernel.api.schema.SchemaDescriptorFactory -import org.neo4j.kernel.api.{exceptions, _} import org.neo4j.kernel.impl.core.NodeManager import org.neo4j.values.storable.Values @@ -276,7 +277,7 @@ final class TransactionBoundQueryContext(tc: TransactionalContextWrapper) try { tc.statement.dataWriteOperations().nodeDelete(obj.getId) } catch { - case _: exceptions.EntityNotFoundException => // node has been deleted by another transaction, oh well... + case _: api.exceptions.EntityNotFoundException => // node has been deleted by another transaction, oh well... } } @@ -284,7 +285,7 @@ final class TransactionBoundQueryContext(tc: TransactionalContextWrapper) try { tc.statement.dataWriteOperations().nodeDetachDelete(obj.getId) } catch { - case _: exceptions.EntityNotFoundException => // the node has been deleted by another transaction, oh well... + case _: api.exceptions.EntityNotFoundException => // the node has been deleted by another transaction, oh well... 0 } } @@ -300,35 +301,35 @@ final class TransactionBoundQueryContext(tc: TransactionalContextWrapper) override def next(): Int = try { inner.next() } catch { - case _: org.neo4j.kernel.api.exceptions.EntityNotFoundException => null.asInstanceOf[Int] + case _: api.exceptions.EntityNotFoundException => null.asInstanceOf[Int] } } } catch { - case _: exceptions.EntityNotFoundException => Iterator.empty + case _: api.exceptions.EntityNotFoundException => Iterator.empty } def getProperty(id: Long, propertyKeyId: Int): Any = try { tc.statement.readOperations().nodeGetProperty(id, propertyKeyId).asObject() } catch { - case _: org.neo4j.kernel.api.exceptions.EntityNotFoundException => null.asInstanceOf[Int] + case _: api.exceptions.EntityNotFoundException => null.asInstanceOf[Int] } def hasProperty(id: Long, propertyKey: Int): Boolean = try { tc.statement.readOperations().nodeHasProperty(id, propertyKey) } catch { - case _: org.neo4j.kernel.api.exceptions.EntityNotFoundException => false + case _: api.exceptions.EntityNotFoundException => false } def removeProperty(id: Long, propertyKeyId: Int): Unit = try { tc.statement.dataWriteOperations().nodeRemoveProperty(id, propertyKeyId) } catch { - case _: org.neo4j.kernel.api.exceptions.EntityNotFoundException => //ignore + case _: api.exceptions.EntityNotFoundException => //ignore } def setProperty(id: Long, propertyKeyId: Int, value: Any): Unit = try { tc.statement.dataWriteOperations().nodeSetProperty(id, propertyKeyId, Values.of(value)) } catch { - case _: org.neo4j.kernel.api.exceptions.EntityNotFoundException => //ignore + case _: api.exceptions.EntityNotFoundException => //ignore } override def getById(id: Long) = try { @@ -355,7 +356,7 @@ final class TransactionBoundQueryContext(tc: TransactionalContextWrapper) try { tc.statement.dataWriteOperations().relationshipDelete(obj.getId) } catch { - case _: exceptions.EntityNotFoundException => // node has been deleted by another transaction, oh well... + case _: api.exceptions.EntityNotFoundException => // node has been deleted by another transaction, oh well... } } @@ -370,35 +371,35 @@ final class TransactionBoundQueryContext(tc: TransactionalContextWrapper) override def next(): Int = try { inner.next() } catch { - case _: org.neo4j.kernel.api.exceptions.EntityNotFoundException => null.asInstanceOf[Int] + case _: api.exceptions.EntityNotFoundException => null.asInstanceOf[Int] } } } catch { - case _: exceptions.EntityNotFoundException => Iterator.empty + case _: api.exceptions.EntityNotFoundException => Iterator.empty } override def getProperty(id: Long, propertyKeyId: Int): Any = try { tc.statement.readOperations().relationshipGetProperty(id, propertyKeyId).asObject() } catch { - case _: exceptions.EntityNotFoundException => null + case _: api.exceptions.EntityNotFoundException => null } override def hasProperty(id: Long, propertyKey: Int): Boolean = try { tc.statement.readOperations().relationshipHasProperty(id, propertyKey) } catch { - case _: exceptions.EntityNotFoundException => false + case _: api.exceptions.EntityNotFoundException => false } override def removeProperty(id: Long, propertyKeyId: Int): Unit = try { tc.statement.dataWriteOperations().relationshipRemoveProperty(id, propertyKeyId) } catch { - case _: exceptions.EntityNotFoundException => //ignore + case _: api.exceptions.EntityNotFoundException => //ignore } override def setProperty(id: Long, propertyKeyId: Int, value: Any): Unit = try { tc.statement.dataWriteOperations().relationshipSetProperty(id, propertyKeyId, Values.of(value)) } catch { - case _: exceptions.EntityNotFoundException => //ignore + case _: api.exceptions.EntityNotFoundException => //ignore } override def getById(id: Long) = try { @@ -617,7 +618,7 @@ final class TransactionBoundQueryContext(tc: TransactionalContextWrapper) try { tc.statement.dataWriteOperations().nodeDetachDelete(node.getId) } catch { - case _: exceptions.EntityNotFoundException => // the node has been deleted by another transaction, oh well... + case _: api.exceptions.EntityNotFoundException => // the node has been deleted by another transaction, oh well... 0 } } diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_1/TransactionBoundQueryContext.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_1/TransactionBoundQueryContext.scala index 971766b3c7a8d..857ea80414f81 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_1/TransactionBoundQueryContext.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_1/TransactionBoundQueryContext.scala @@ -25,6 +25,7 @@ import java.util.function.Predicate import org.neo4j.collection.RawIterator import org.neo4j.collection.primitive.PrimitiveLongIterator import org.neo4j.collection.primitive.base.Empty.EMPTY_PRIMITIVE_LONG_COLLECTION +import org.neo4j.cypher.InternalException import org.neo4j.cypher.internal.compiler.v3_1.MinMaxOrdering.{BY_NUMBER, BY_STRING, BY_VALUE} import org.neo4j.cypher.internal.compiler.v3_1._ import org.neo4j.cypher.internal.compiler.v3_1.ast.convert.commands.DirectionConverter.toGraphDb @@ -39,13 +40,13 @@ import org.neo4j.cypher.internal.frontend.v3_1.{Bound, EntityNotFoundException, import org.neo4j.cypher.internal.javacompat.GraphDatabaseCypherService import org.neo4j.cypher.internal.runtime.interpreted.BeansAPIRelationshipIterator import org.neo4j.cypher.internal.spi.v3_1.TransactionBoundQueryContext.IndexSearchMonitor -import org.neo4j.cypher.{InternalException, internal} import org.neo4j.graphalgo.impl.path.ShortestPath import org.neo4j.graphalgo.impl.path.ShortestPath.ShortestPathPredicate import org.neo4j.graphdb.RelationshipType._ import org.neo4j.graphdb._ import org.neo4j.graphdb.security.URLAccessValidationError import org.neo4j.graphdb.traversal.{Evaluators, TraversalDescription, Uniqueness} +import org.neo4j.internal.kernel.api import org.neo4j.internal.kernel.api.IndexQuery import org.neo4j.kernel.GraphDatabaseQueryService import org.neo4j.kernel.api._ @@ -54,9 +55,9 @@ import org.neo4j.kernel.api.exceptions.ProcedureException import org.neo4j.kernel.api.exceptions.schema.{AlreadyConstrainedException, AlreadyIndexedException} import org.neo4j.kernel.api.index.InternalIndexState import org.neo4j.kernel.api.proc.{QualifiedName => KernelQualifiedName} +import org.neo4j.kernel.api.schema.SchemaDescriptorFactory import org.neo4j.kernel.api.schema.constaints.ConstraintDescriptorFactory import org.neo4j.kernel.api.schema.index.IndexDescriptorFactory -import org.neo4j.kernel.api.schema.SchemaDescriptorFactory import org.neo4j.kernel.impl.core.NodeManager import org.neo4j.kernel.impl.locking.ResourceTypes import org.neo4j.values.storable.Values @@ -111,7 +112,7 @@ final class TransactionBoundQueryContext(txContext: TransactionalContextWrapper) override def getLabelsForNode(node: Long) = try { JavaConversionSupport.asScala(txContext.statement.readOperations().nodeGetLabels(node)) } catch { - case e: org.neo4j.kernel.api.exceptions.EntityNotFoundException => + case e: api.exceptions.EntityNotFoundException => if (nodeOps.isDeletedInThisTx(node)) throw new EntityNotFoundException(s"Node with id $node has been deleted in this transaction", e) else @@ -294,20 +295,20 @@ final class TransactionBoundQueryContext(txContext: TransactionalContextWrapper) try { txContext.statement.dataWriteOperations().nodeDelete(obj.getId) } catch { - case _: exceptions.EntityNotFoundException => // node has been deleted by another transaction, oh well... + case _: api.exceptions.EntityNotFoundException => // node has been deleted by another transaction, oh well... } } override def propertyKeyIds(id: Long): Iterator[Int] = try { JavaConversionSupport.asScalaENFXSafe(txContext.statement.readOperations().nodeGetPropertyKeys(id)) } catch { - case _: exceptions.EntityNotFoundException => Iterator.empty + case _: api.exceptions.EntityNotFoundException => Iterator.empty } override def getProperty(id: Long, propertyKeyId: Int): Any = try { txContext.statement.readOperations().nodeGetProperty(id, propertyKeyId).asObject() } catch { - case e: org.neo4j.kernel.api.exceptions.EntityNotFoundException => + case e: api.exceptions.EntityNotFoundException => if (isDeletedInThisTx(id)) throw new EntityNotFoundException(s"Node with id $id has been deleted in this transaction", e) else @@ -317,14 +318,14 @@ final class TransactionBoundQueryContext(txContext: TransactionalContextWrapper) override def hasProperty(id: Long, propertyKey: Int): Boolean = try { txContext.statement.readOperations().nodeHasProperty(id, propertyKey) } catch { - case _: exceptions.EntityNotFoundException => false + case _: api.exceptions.EntityNotFoundException => false } override def removeProperty(id: Long, propertyKeyId: Int): Unit = { try { txContext.statement.dataWriteOperations().nodeRemoveProperty(id, propertyKeyId) } catch { - case _: exceptions.EntityNotFoundException => //ignore + case _: api.exceptions.EntityNotFoundException => //ignore } } @@ -332,7 +333,7 @@ final class TransactionBoundQueryContext(txContext: TransactionalContextWrapper) try { txContext.statement.dataWriteOperations().nodeSetProperty(id, propertyKeyId, Values.of(value) ) } catch { - case _: exceptions.EntityNotFoundException => //ignore + case _: api.exceptions.EntityNotFoundException => //ignore } } @@ -369,20 +370,20 @@ final class TransactionBoundQueryContext(txContext: TransactionalContextWrapper) try { txContext.statement.dataWriteOperations().relationshipDelete(obj.getId) } catch { - case _: exceptions.EntityNotFoundException => // node has been deleted by another transaction, oh well... + case _: api.exceptions.EntityNotFoundException => // node has been deleted by another transaction, oh well... } } override def propertyKeyIds(id: Long): Iterator[Int] = try { asScalaENFXSafe(txContext.statement.readOperations().relationshipGetPropertyKeys(id)) } catch { - case _: exceptions.EntityNotFoundException => Iterator.empty + case _: api.exceptions.EntityNotFoundException => Iterator.empty } override def getProperty(id: Long, propertyKeyId: Int): Any = try { txContext.statement.readOperations().relationshipGetProperty(id, propertyKeyId).asObject() } catch { - case e: org.neo4j.kernel.api.exceptions.EntityNotFoundException => + case e: api.exceptions.EntityNotFoundException => if (isDeletedInThisTx(id)) throw new EntityNotFoundException(s"Relationship with id $id has been deleted in this transaction", e) else @@ -392,14 +393,14 @@ final class TransactionBoundQueryContext(txContext: TransactionalContextWrapper) override def hasProperty(id: Long, propertyKey: Int): Boolean = try { txContext.statement.readOperations().relationshipHasProperty(id, propertyKey) } catch { - case _: exceptions.EntityNotFoundException => false + case _: api.exceptions.EntityNotFoundException => false } override def removeProperty(id: Long, propertyKeyId: Int): Unit = { try { txContext.statement.dataWriteOperations().relationshipRemoveProperty(id, propertyKeyId) } catch { - case _: exceptions.EntityNotFoundException => //ignore + case _: api.exceptions.EntityNotFoundException => //ignore } } @@ -407,7 +408,7 @@ final class TransactionBoundQueryContext(txContext: TransactionalContextWrapper) try { txContext.statement.dataWriteOperations().relationshipSetProperty(id, propertyKeyId, Values.of(value) ) } catch { - case _: exceptions.EntityNotFoundException => //ignore + case _: api.exceptions.EntityNotFoundException => //ignore } } @@ -697,7 +698,7 @@ final class TransactionBoundQueryContext(txContext: TransactionalContextWrapper) try { txContext.statement.dataWriteOperations().nodeDetachDelete(node.getId) } catch { - case _: exceptions.EntityNotFoundException => 0 // node has been deleted by another transaction, oh well... + case _: api.exceptions.EntityNotFoundException => 0 // node has been deleted by another transaction, oh well... } } diff --git a/community/cypher/cypher/src/test/java/org/neo4j/cypher/internal/codegen/CompiledExpandUtilsTest.java b/community/cypher/cypher/src/test/java/org/neo4j/cypher/internal/codegen/CompiledExpandUtilsTest.java index e348c0060f5a5..82c7e8f85ae04 100644 --- a/community/cypher/cypher/src/test/java/org/neo4j/cypher/internal/codegen/CompiledExpandUtilsTest.java +++ b/community/cypher/cypher/src/test/java/org/neo4j/cypher/internal/codegen/CompiledExpandUtilsTest.java @@ -22,8 +22,8 @@ import org.junit.Test; import org.neo4j.graphdb.Direction; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.ReadOperations; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; diff --git a/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/JavaConversionSupport.scala b/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/JavaConversionSupport.scala index 4bcb0baf48f0d..c648f113e6f6f 100644 --- a/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/JavaConversionSupport.scala +++ b/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/JavaConversionSupport.scala @@ -21,6 +21,7 @@ package org.neo4j.cypher.internal.runtime.interpreted import org.neo4j.collection.primitive.{PrimitiveIntIterator, PrimitiveLongIterator} import org.neo4j.cypher.internal.util.v3_4.EntityNotFoundException +import org.neo4j.internal.kernel.api.exceptions object JavaConversionSupport { @@ -44,7 +45,7 @@ object JavaConversionSupport { try { _next = Some(f(more())) } catch { - case _: org.neo4j.kernel.api.exceptions.EntityNotFoundException => // IGNORE + case _: exceptions.EntityNotFoundException => // IGNORE case _: EntityNotFoundException => // IGNORE } } diff --git a/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/TransactionBoundQueryContext.scala b/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/TransactionBoundQueryContext.scala index b924b4fa28a31..c8424821be642 100644 --- a/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/TransactionBoundQueryContext.scala +++ b/community/cypher/interpreted-runtime/src/main/scala/org/neo4j/cypher/internal/runtime/interpreted/TransactionBoundQueryContext.scala @@ -42,6 +42,7 @@ import org.neo4j.graphdb.RelationshipType._ import org.neo4j.graphdb._ import org.neo4j.graphdb.security.URLAccessValidationError import org.neo4j.graphdb.traversal.{Evaluators, TraversalDescription, Uniqueness} +import org.neo4j.internal.kernel.api import org.neo4j.internal.kernel.api.IndexQuery import org.neo4j.kernel.GraphDatabaseQueryService import org.neo4j.kernel.api._ @@ -134,7 +135,7 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional override def getLabelsForNode(node: Long) = try { JavaConversionSupport.asScala(transactionalContext.statement.readOperations().nodeGetLabels(node)) } catch { - case e: org.neo4j.kernel.api.exceptions.EntityNotFoundException => + case e: api.exceptions.EntityNotFoundException => if (nodeOps.isDeletedInThisTx(node)) throw new EntityNotFoundException(s"Node with id $node has been deleted in this transaction", e) else @@ -378,20 +379,20 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional try { writes().nodeDelete(id) } catch { - case _: exceptions.EntityNotFoundException => // node has been deleted by another transaction, oh well... + case _: api.exceptions.EntityNotFoundException => // node has been deleted by another transaction, oh well... } } override def propertyKeyIds(id: Long): Iterator[Int] = try { JavaConversionSupport.asScalaENFXSafe(transactionalContext.statement.readOperations().nodeGetPropertyKeys(id)) } catch { - case _: exceptions.EntityNotFoundException => Iterator.empty + case _: api.exceptions.EntityNotFoundException => Iterator.empty } override def getProperty(id: Long, propertyKeyId: Int): Value = try { transactionalContext.statement.readOperations().nodeGetProperty(id, propertyKeyId) } catch { - case e: org.neo4j.kernel.api.exceptions.EntityNotFoundException => + case e: api.exceptions.EntityNotFoundException => if (isDeletedInThisTx(id)) throw new EntityNotFoundException(s"Node with id $id has been deleted in this transaction", e) else @@ -401,14 +402,14 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional override def hasProperty(id: Long, propertyKey: Int): Boolean = try { transactionalContext.statement.readOperations().nodeHasProperty(id, propertyKey) } catch { - case _: exceptions.EntityNotFoundException => false + case _: api.exceptions.EntityNotFoundException => false } override def removeProperty(id: Long, propertyKeyId: Int): Unit = { try { transactionalContext.statement.dataWriteOperations().nodeRemoveProperty(id, propertyKeyId) } catch { - case _: exceptions.EntityNotFoundException => //ignore + case _: api.exceptions.EntityNotFoundException => //ignore } } @@ -416,7 +417,7 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional try { transactionalContext.statement.dataWriteOperations().nodeSetProperty(id, propertyKeyId, value) } catch { - case _: exceptions.EntityNotFoundException => //ignore + case _: api.exceptions.EntityNotFoundException => //ignore } } @@ -467,7 +468,7 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional try { transactionalContext.statement.dataWriteOperations().relationshipDelete(id) } catch { - case _: exceptions.EntityNotFoundException => // node has been deleted by another transaction, oh well... + case _: api.exceptions.EntityNotFoundException => // node has been deleted by another transaction, oh well... } } @@ -475,13 +476,13 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional JavaConversionSupport .asScalaENFXSafe(transactionalContext.statement.readOperations().relationshipGetPropertyKeys(id)) } catch { - case _: exceptions.EntityNotFoundException => Iterator.empty + case _: api.exceptions.EntityNotFoundException => Iterator.empty } override def getProperty(id: Long, propertyKeyId: Int): Value = try { transactionalContext.statement.readOperations().relationshipGetProperty(id, propertyKeyId) } catch { - case e: org.neo4j.kernel.api.exceptions.EntityNotFoundException => + case e: api.exceptions.EntityNotFoundException => if (isDeletedInThisTx(id)) throw new EntityNotFoundException(s"Relationship with id $id has been deleted in this transaction", e) else @@ -491,14 +492,14 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional override def hasProperty(id: Long, propertyKey: Int): Boolean = try { transactionalContext.statement.readOperations().relationshipHasProperty(id, propertyKey) } catch { - case _: exceptions.EntityNotFoundException => false + case _: api.exceptions.EntityNotFoundException => false } override def removeProperty(id: Long, propertyKeyId: Int): Unit = { try { transactionalContext.statement.dataWriteOperations().relationshipRemoveProperty(id, propertyKeyId) } catch { - case _: exceptions.EntityNotFoundException => //ignore + case _: api.exceptions.EntityNotFoundException => //ignore } } @@ -506,7 +507,7 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional try { transactionalContext.statement.dataWriteOperations().relationshipSetProperty(id, propertyKeyId, value) } catch { - case _: exceptions.EntityNotFoundException => //ignore + case _: api.exceptions.EntityNotFoundException => //ignore } } @@ -525,7 +526,7 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional }) Option(relationship) } catch { - case e: exceptions.EntityNotFoundException => None + case e: api.exceptions.EntityNotFoundException => None } override def all: Iterator[Relationship] = { @@ -559,7 +560,7 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional transactionalContext.statement.readOperations().relationshipVisit(id, NoopVisitor) true } catch { - case e: exceptions.EntityNotFoundException => false + case e: api.exceptions.EntityNotFoundException => false } } } @@ -862,7 +863,7 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional try { transactionalContext.statement.dataWriteOperations().nodeDetachDelete(node) } catch { - case _: exceptions.EntityNotFoundException => 0 // node has been deleted by another transaction, oh well... + case _: api.exceptions.EntityNotFoundException => 0 // node has been deleted by another transaction, oh well... } } diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/ExplicitIndexWrite.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/ExplicitIndexWrite.java index c3c775f214be1..e2e8d9d420eaf 100644 --- a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/ExplicitIndexWrite.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/ExplicitIndexWrite.java @@ -21,20 +21,42 @@ import java.util.Map; -import org.neo4j.internal.kernel.api.exceptions.KernelException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; /** * Operations for creating and modifying explicit indexes. */ public interface ExplicitIndexWrite { + void nodeAddToExplicitIndex( String indexName, long node, String key, Object value ) + throws EntityNotFoundException, ExplicitIndexNotFoundKernelException; + + void nodeRemoveFromExplicitIndex( String indexName, long node, String key, Object value ) + throws ExplicitIndexNotFoundKernelException; + + void nodeRemoveFromExplicitIndex( String indexName, long node, String key ) throws + ExplicitIndexNotFoundKernelException; + /** * Removes a given node from an explicit index * * @param indexName The name of the index from which the node is to be removed. * @param node The node id of the node to remove */ - void nodeRemoveFromExplicitIndex( String indexName, long node ) throws KernelException; + void nodeRemoveFromExplicitIndex( String indexName, long node ) throws ExplicitIndexNotFoundKernelException; + + void relationshipAddToExplicitIndex( String indexName, long relationship, String key, Object value ) + throws EntityNotFoundException, ExplicitIndexNotFoundKernelException; + + void relationshipRemoveFromExplicitIndex( String indexName, long relationship, String key, Object value ) + throws ExplicitIndexNotFoundKernelException, EntityNotFoundException; + + void relationshipRemoveFromExplicitIndex( String indexName, long relationship, String key ) + throws ExplicitIndexNotFoundKernelException, EntityNotFoundException; + + void relationshipRemoveFromExplicitIndex( String indexName, long relationship ) + throws ExplicitIndexNotFoundKernelException, EntityNotFoundException; /** * Creates an explicit index in a separate transaction if not yet available. @@ -42,4 +64,10 @@ public interface ExplicitIndexWrite * @param customConfig The configuration of the explicit index. */ void nodeExplicitIndexCreateLazily( String indexName, Map customConfig ); + + void nodeExplicitIndexCreate( String indexName, Map customConfig ); + + void relationshipExplicitIndexCreateLazily( String indexName, Map customConfig ); + + void relationshipExplicitIndexCreate( String indexName, Map customConfig ); } diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/Write.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/Write.java index 4d8e9420d01e9..179b0a9914783 100644 --- a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/Write.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/Write.java @@ -19,7 +19,9 @@ */ package org.neo4j.internal.kernel.api; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.internal.kernel.api.exceptions.KernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; import org.neo4j.values.storable.Value; /** @@ -61,7 +63,7 @@ public interface Write * @param nodeLabel the internal id of the label to add * @return true if a label was added otherwise false */ - boolean nodeAddLabel( long node, int nodeLabel ) throws KernelException; + boolean nodeAddLabel( long node, int nodeLabel ) throws EntityNotFoundException; /** * Remove a label from a node @@ -69,7 +71,7 @@ public interface Write * @param nodeLabel the internal id of the label to remove * @return true if node was removed otherwise false */ - boolean nodeRemoveLabel( long node, int nodeLabel ) throws KernelException; + boolean nodeRemoveLabel( long node, int nodeLabel ) throws EntityNotFoundException; /** * Set a property on a node @@ -78,7 +80,8 @@ public interface Write * @param value the value to set * @return The replaced value, or Values.NO_VALUE if the node did not have the property before */ - Value nodeSetProperty( long node, int propertyKey, Value value ) throws KernelException; + Value nodeSetProperty( long node, int propertyKey, Value value ) + throws EntityNotFoundException, AutoIndexingKernelException; /** * Remove a property from a node @@ -86,7 +89,8 @@ public interface Write * @param propertyKey the property key id * @return The removed value, or Values.NO_VALUE if the node did not have the property before */ - Value nodeRemoveProperty( long node, int propertyKey ) throws KernelException; + Value nodeRemoveProperty( long node, int propertyKey ) throws EntityNotFoundException, + AutoIndexingKernelException; /** * Set a property on a relationship diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/EntityNotFoundException.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/EntityNotFoundException.java similarity index 94% rename from community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/EntityNotFoundException.java rename to community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/EntityNotFoundException.java index 523c3bf0b574c..94aae37d6e727 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/EntityNotFoundException.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/EntityNotFoundException.java @@ -17,9 +17,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.neo4j.kernel.api.exceptions; +package org.neo4j.internal.kernel.api.exceptions; -import org.neo4j.internal.kernel.api.exceptions.KernelException; +import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.storageengine.api.EntityType; public class EntityNotFoundException extends KernelException diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/InvalidTransactionTypeKernelException.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/InvalidTransactionTypeKernelException.java similarity index 90% rename from community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/InvalidTransactionTypeKernelException.java rename to community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/InvalidTransactionTypeKernelException.java index d3d071daefe67..9ff5cfc9ab5a5 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/InvalidTransactionTypeKernelException.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/InvalidTransactionTypeKernelException.java @@ -17,9 +17,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.neo4j.kernel.api.exceptions; +package org.neo4j.internal.kernel.api.exceptions; -import org.neo4j.internal.kernel.api.exceptions.KernelException; +import org.neo4j.kernel.api.exceptions.Status; public class InvalidTransactionTypeKernelException extends KernelException { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/explicitindex/AutoIndexingKernelException.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/explicitindex/AutoIndexingKernelException.java similarity index 94% rename from community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/explicitindex/AutoIndexingKernelException.java rename to community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/explicitindex/AutoIndexingKernelException.java index 04f2bbddb4d19..a48a5b5cff2de 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/explicitindex/AutoIndexingKernelException.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/explicitindex/AutoIndexingKernelException.java @@ -17,7 +17,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.neo4j.kernel.api.exceptions.explicitindex; +package org.neo4j.internal.kernel.api.exceptions.explicitindex; import org.neo4j.internal.kernel.api.exceptions.KernelException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/explicitindex/ExplicitIndexNotFoundKernelException.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/explicitindex/ExplicitIndexNotFoundKernelException.java similarity index 94% rename from community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/explicitindex/ExplicitIndexNotFoundKernelException.java rename to community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/explicitindex/ExplicitIndexNotFoundKernelException.java index 5942ca24b40db..5d5bb871acbc3 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/exceptions/explicitindex/ExplicitIndexNotFoundKernelException.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/exceptions/explicitindex/ExplicitIndexNotFoundKernelException.java @@ -17,7 +17,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.neo4j.kernel.api.exceptions.explicitindex; +package org.neo4j.internal.kernel.api.exceptions.explicitindex; import org.neo4j.internal.kernel.api.exceptions.KernelException; import org.neo4j.kernel.api.exceptions.Status; diff --git a/community/kernel/src/main/java/org/neo4j/storageengine/api/EntityType.java b/community/kernel-api/src/main/java/org/neo4j/storageengine/api/EntityType.java similarity index 100% rename from community/kernel/src/main/java/org/neo4j/storageengine/api/EntityType.java rename to community/kernel-api/src/main/java/org/neo4j/storageengine/api/EntityType.java diff --git a/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/ExplicitIndexCursorTestBase.java b/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/ExplicitIndexCursorTestBase.java index c028538b9b9ec..bc330ff6a0ef0 100644 --- a/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/ExplicitIndexCursorTestBase.java +++ b/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/ExplicitIndexCursorTestBase.java @@ -163,5 +163,4 @@ public void shouldFindRelationshipByQuery() throws Exception assertFoundRelationships( cursor, 0, relationships ); } } - } diff --git a/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/ExplicitIndexCursorWritesTestBase.java b/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/ExplicitIndexCursorWritesTestBase.java index e808a21e5182d..5b5f02d8297e8 100644 --- a/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/ExplicitIndexCursorWritesTestBase.java +++ b/community/kernel-api/src/test/java/org/neo4j/internal/kernel/api/ExplicitIndexCursorWritesTestBase.java @@ -19,11 +19,14 @@ */ package org.neo4j.internal.kernel.api; +import org.junit.Ignore; import org.junit.Test; import java.util.HashMap; import org.neo4j.graphdb.Node; +import org.neo4j.graphdb.Relationship; +import org.neo4j.graphdb.RelationshipType; import org.neo4j.graphdb.index.IndexHits; import static org.hamcrest.CoreMatchers.equalTo; @@ -31,6 +34,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +@SuppressWarnings( "Duplicates" ) public abstract class ExplicitIndexCursorWritesTestBase extends KernelAPIWriteTestBase { @@ -38,6 +42,71 @@ public abstract class ExplicitIndexCursorWritesTestBase config = new HashMap<>(); + config.put( "type", "exact" ); + config.put( "provider", "lucene" ); + indexWrite.nodeExplicitIndexCreate( INDEX_NAME, config ); + tx.success(); + } + + // Then + try ( org.neo4j.graphdb.Transaction ctx = graphDb.beginTx() ) + { + assertTrue( graphDb.index().existsForNodes( INDEX_NAME ) ); + ctx.success(); + } + } + + @Test + public void shouldCreateExplicitNodeIndexLazily() throws Exception + { + // When + try ( Transaction tx = session.beginTransaction() ) + { + ExplicitIndexWrite indexWrite = tx.indexWrite(); + HashMap config = new HashMap<>(); + config.put( "type", "exact" ); + config.put( "provider", "lucene" ); + indexWrite.nodeExplicitIndexCreateLazily( INDEX_NAME, config ); + tx.success(); + } + + // Then + try ( org.neo4j.graphdb.Transaction ctx = graphDb.beginTx() ) + { + assertTrue( graphDb.index().existsForNodes( INDEX_NAME ) ); + ctx.success(); + } + } + + @Test + public void shouldAddNodeToExplicitIndex() throws Exception + { + long nodeId; + try ( Transaction tx = session.beginTransaction() ) + { + nodeId = tx.dataWrite().nodeCreate(); + ExplicitIndexWrite indexWrite = tx.indexWrite(); + indexWrite.nodeAddToExplicitIndex( INDEX_NAME, nodeId, KEY, VALUE ); + tx.success(); + } + + // Then + try ( org.neo4j.graphdb.Transaction ctx = graphDb.beginTx() ) + { + IndexHits hits = graphDb.index().forNodes( INDEX_NAME ).get( KEY, "this is it" ); + assertThat( hits.next().getId(), equalTo( nodeId ) ); + hits.close(); + ctx.success(); + } + } @Test public void shouldRemoveNodeFromExplicitIndex() throws Exception @@ -119,11 +188,32 @@ public void shouldRemoveNonExistingNodeFromExplicitIndex() throws Exception } } + @Test - public void shouldCreateExplicitIndex() throws Exception + public void shouldCreateExplicitRelationshipIndexEagerly() throws Exception { - // Given + // When + try ( Transaction tx = session.beginTransaction() ) + { + ExplicitIndexWrite indexWrite = tx.indexWrite(); + HashMap config = new HashMap<>(); + config.put( "type", "exact" ); + config.put( "provider", "lucene" ); + indexWrite.relationshipExplicitIndexCreate( INDEX_NAME, config ); + tx.success(); + } + // Then + try ( org.neo4j.graphdb.Transaction ctx = graphDb.beginTx() ) + { + assertTrue( graphDb.index().existsForRelationships( INDEX_NAME ) ); + ctx.success(); + } + } + + @Test + public void shouldCreateExplicitRelationshipIndexLazily() throws Exception + { // When try ( Transaction tx = session.beginTransaction() ) { @@ -131,14 +221,14 @@ public void shouldCreateExplicitIndex() throws Exception HashMap config = new HashMap<>(); config.put( "type", "exact" ); config.put( "provider", "lucene" ); - indexWrite.nodeExplicitIndexCreateLazily( INDEX_NAME, config ); + indexWrite.relationshipExplicitIndexCreateLazily( INDEX_NAME, config ); tx.success(); } // Then try ( org.neo4j.graphdb.Transaction ctx = graphDb.beginTx() ) { - assertTrue( graphDb.index().existsForNodes( INDEX_NAME ) ); + assertTrue( graphDb.index().existsForRelationships( INDEX_NAME ) ); ctx.success(); } } @@ -174,16 +264,144 @@ public void shouldCreateExplicitIndexTwice() throws Exception } } - private long addNodeToExplicitIndex() + //TODO unignore when we support relationship creation. + @Ignore + public void shouldAddRelationshipToExplicitIndex() throws Exception { - long nodeId; + long relId; + try ( org.neo4j.graphdb.Transaction ctx = graphDb.beginTx() ) + { + relId = graphDb.createNode().createRelationshipTo( graphDb.createNode(), RelationshipType.withName( "R" ) ) + .getId(); + ctx.success(); + } + + try ( Transaction tx = session.beginTransaction() ) + { + ExplicitIndexWrite indexWrite = tx.indexWrite(); + indexWrite.relationshipAddToExplicitIndex( INDEX_NAME, relId, KEY, VALUE ); + tx.success(); + } + + // Then + try ( org.neo4j.graphdb.Transaction ctx = graphDb.beginTx() ) + { + IndexHits hits = graphDb.index().forRelationships( INDEX_NAME ).get( KEY, VALUE ); + assertThat( hits.next().getId(), equalTo( relId ) ); + hits.close(); + ctx.success(); + } + } + + @Test + public void shouldRemoveRelationshipFromExplicitIndex() throws Exception + { + // Given + long relId = addRelationshipToExplicitIndex(); + + // When + try ( Transaction tx = session.beginTransaction() ) + { + ExplicitIndexWrite indexWrite = tx.indexWrite(); + indexWrite.relationshipRemoveFromExplicitIndex( INDEX_NAME, relId ); + tx.success(); + } + + // Then + try ( org.neo4j.graphdb.Transaction ctx = graphDb.beginTx() ) + { + IndexHits hits = graphDb.index().forNodes( INDEX_NAME ).get( KEY, "this is it" ); + assertFalse( hits.hasNext() ); + hits.close(); + ctx.success(); + } + } + + @Test + public void shouldHandleRemoveRelationshipFromExplicitIndexTwice() throws Exception + { + // Given + long relId = addRelationshipToExplicitIndex(); + + // When + try ( Transaction tx = session.beginTransaction() ) + { + ExplicitIndexWrite indexWrite = tx.indexWrite(); + indexWrite.relationshipRemoveFromExplicitIndex( INDEX_NAME, relId ); + tx.success(); + } + + try ( Transaction tx = session.beginTransaction() ) + { + ExplicitIndexWrite indexWrite = tx.indexWrite(); + indexWrite.relationshipRemoveFromExplicitIndex( INDEX_NAME, relId ); + tx.success(); + } + + // Then try ( org.neo4j.graphdb.Transaction ctx = graphDb.beginTx() ) { - Node node = graphDb.createNode(); - nodeId = node.getId(); - graphDb.index().forNodes( INDEX_NAME ).add( node, KEY, VALUE ); + IndexHits hits = graphDb.index().forRelationships( INDEX_NAME ).get( KEY, "this is it" ); + assertFalse( hits.hasNext() ); + hits.close(); ctx.success(); } + } + + @Test + public void shouldRemoveNonExistingRelationshipFromExplicitIndex() throws Exception + { + // Given + long relId = addRelationshipToExplicitIndex(); + + // When + try ( Transaction tx = session.beginTransaction() ) + { + ExplicitIndexWrite indexWrite = tx.indexWrite(); + indexWrite.relationshipRemoveFromExplicitIndex( INDEX_NAME, relId + 1 ); + tx.success(); + } + + // Then + try ( org.neo4j.graphdb.Transaction ctx = graphDb.beginTx() ) + { + IndexHits hits = graphDb.index().forRelationships( INDEX_NAME ).get( KEY, VALUE ); + assertThat( hits.next().getId(), equalTo( relId ) ); + assertFalse( hits.hasNext() ); + hits.close(); + ctx.success(); + } + } + + private long addNodeToExplicitIndex() throws Exception + { + long nodeId; + try ( Transaction tx = session.beginTransaction() ) + { + nodeId = tx.dataWrite().nodeCreate(); + ExplicitIndexWrite indexWrite = tx.indexWrite(); + HashMap config = new HashMap<>(); + config.put( "type", "exact" ); + config.put( "provider", "lucene" ); + indexWrite.nodeExplicitIndexCreateLazily( INDEX_NAME, config ); + indexWrite.nodeAddToExplicitIndex( INDEX_NAME, nodeId, KEY, VALUE ); + tx.success(); + } return nodeId; } + + private long addRelationshipToExplicitIndex() throws Exception + { + long relId; + try ( org.neo4j.graphdb.Transaction ctx = graphDb.beginTx() ) + { + Relationship rel = + graphDb.createNode().createRelationshipTo( graphDb.createNode(), RelationshipType.withName( "R" ) ); + relId = rel + .getId(); + graphDb.index().forRelationships( INDEX_NAME ).add( rel, KEY, VALUE ); + ctx.success(); + } + return relId; + } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/DataWriteOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/api/DataWriteOperations.java index 612fb8e13b401..235b8150db7ad 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/DataWriteOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/DataWriteOperations.java @@ -21,16 +21,17 @@ import java.util.Map; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.ExplicitIndexWrite; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.internal.kernel.api.exceptions.KernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.schema.ConstraintValidationException; import org.neo4j.values.storable.Value; -public interface DataWriteOperations +public interface DataWriteOperations extends ExplicitIndexWrite { //=========================================== //== DATA OPERATIONS ======================== diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/ExplicitIndex.java b/community/kernel/src/main/java/org/neo4j/kernel/api/ExplicitIndex.java index 606a24fc96116..4adfc1a5aabd2 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/ExplicitIndex.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/ExplicitIndex.java @@ -19,7 +19,7 @@ */ package org.neo4j.kernel.api; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; /** * The main way to access an explicit index. Even pure reads will need to get a hold of an object of this class 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 66136492429d8..2e378d328705c 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 @@ -31,12 +31,12 @@ import org.neo4j.cursor.Cursor; import org.neo4j.graphdb.Direction; import org.neo4j.internal.kernel.api.IndexQuery; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.LabelNotFoundKernelException; import org.neo4j.kernel.api.exceptions.ProcedureException; import org.neo4j.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotApplicableKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.schema.IndexBrokenKernelException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/Statement.java b/community/kernel/src/main/java/org/neo4j/kernel/api/Statement.java index 7df3ffa220605..20b65ab1b0298 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/Statement.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/Statement.java @@ -20,7 +20,7 @@ package org.neo4j.kernel.api; import org.neo4j.graphdb.Resource; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; /** * A statement which is a smaller coherent unit of work inside a {@link KernelTransaction}. diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/explicitindex/AutoIndexOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/api/explicitindex/AutoIndexOperations.java index b57db3f28145e..e7f22e4ba294f 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/explicitindex/AutoIndexOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/explicitindex/AutoIndexOperations.java @@ -22,9 +22,7 @@ import java.util.Set; import org.neo4j.internal.kernel.api.ExplicitIndexWrite; -import org.neo4j.internal.kernel.api.exceptions.KernelException; -import org.neo4j.kernel.api.DataWriteOperations; -import org.neo4j.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; import org.neo4j.values.storable.Value; /** @@ -40,16 +38,12 @@ */ public interface AutoIndexOperations { - void propertyAdded( DataWriteOperations ops, long entityId, int propertyKeyId, Value value ) throws AutoIndexingKernelException; - void propertyChanged( DataWriteOperations ops, long entityId, int propertyKeyId, Value oldValue, Value newValue ) - throws AutoIndexingKernelException; - void propertyRemoved( DataWriteOperations ops, long entityId, int propertyKey ) - throws AutoIndexingKernelException; - - //TODO this method should be removed once fully migrated - void entityRemoved( DataWriteOperations ops, long entityId ) throws AutoIndexingKernelException; - - void entityRemoved( ExplicitIndexWrite write, long entityId ) throws KernelException; + void propertyAdded( ExplicitIndexWrite write, long entityId, int propertyKeyId, Value value ) throws AutoIndexingKernelException; + void propertyChanged( ExplicitIndexWrite write, long entityId, int propertyKeyId, Value oldValue, Value newValue ) + throws AutoIndexingKernelException; + void propertyRemoved(ExplicitIndexWrite write, long entityId, int propertyKey ) + throws AutoIndexingKernelException; + void entityRemoved( ExplicitIndexWrite write, long entityId ) throws AutoIndexingKernelException; boolean enabled(); void enabled( boolean enabled ); @@ -64,29 +58,25 @@ void propertyRemoved( DataWriteOperations ops, long entityId, int propertyKey ) */ AutoIndexOperations UNSUPPORTED = new AutoIndexOperations() { + @Override - public void propertyAdded( DataWriteOperations ops, long entityId, int propertyKeyId, Value value ) + public void propertyAdded( ExplicitIndexWrite write, long entityId, int propertyKeyId, Value value ) throws AutoIndexingKernelException { throw new UnsupportedOperationException(); } @Override - public void propertyChanged( DataWriteOperations ops, long entityId, int propertyKeyId, Value oldValue, + public void propertyChanged( ExplicitIndexWrite write, long entityId, int propertyKeyId, Value oldValue, Value newValue ) throws AutoIndexingKernelException { throw new UnsupportedOperationException(); } - @Override - public void propertyRemoved( DataWriteOperations ops, long entityId, int propertyKey ) throws - AutoIndexingKernelException - { - throw new UnsupportedOperationException(); - } @Override - public void entityRemoved( DataWriteOperations ops, long entityId ) throws AutoIndexingKernelException + public void propertyRemoved( ExplicitIndexWrite write, long entityId, int propertyKey ) + throws AutoIndexingKernelException { throw new UnsupportedOperationException(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/index/PropertyAccessor.java b/community/kernel/src/main/java/org/neo4j/kernel/api/index/PropertyAccessor.java index dcd04d9d1158e..4fda462474325 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/index/PropertyAccessor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/index/PropertyAccessor.java @@ -19,7 +19,7 @@ */ package org.neo4j.kernel.api.index; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.values.storable.Value; /** diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/ExplicitIndexTransactionState.java b/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/ExplicitIndexTransactionState.java index d64d186390c91..8063d8c72ecce 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/ExplicitIndexTransactionState.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/ExplicitIndexTransactionState.java @@ -21,8 +21,8 @@ import java.util.Map; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.ExplicitIndex; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.impl.index.IndexEntityType; import org.neo4j.kernel.impl.transaction.state.RecordState; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/RelationshipChangeVisitorAdapter.java b/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/RelationshipChangeVisitorAdapter.java index 7261048834c2f..2164a64874bbf 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/RelationshipChangeVisitorAdapter.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/RelationshipChangeVisitorAdapter.java @@ -19,7 +19,7 @@ */ package org.neo4j.kernel.api.txstate; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.schema.ConstraintValidationException; import org.neo4j.kernel.api.exceptions.schema.CreateConstraintFailureException; import org.neo4j.kernel.impl.api.RelationshipVisitor; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/TransactionCountingStateVisitor.java b/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/TransactionCountingStateVisitor.java index c6a5f6201eba0..eb1b44a0e70a9 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/TransactionCountingStateVisitor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/txstate/TransactionCountingStateVisitor.java @@ -25,7 +25,7 @@ import org.neo4j.collection.primitive.PrimitiveIntSet; import org.neo4j.collection.primitive.PrimitiveIntVisitor; import org.neo4j.cursor.Cursor; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.schema.ConstraintValidationException; import org.neo4j.kernel.impl.api.CountsRecordState; import org.neo4j.kernel.impl.api.RelationshipDataExtractor; 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 db16d40895eb3..a1f16812b0e3b 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 @@ -41,15 +41,15 @@ import org.neo4j.graphdb.index.IndexManager; import org.neo4j.graphdb.index.RelationshipIndex; import org.neo4j.helpers.collection.MapUtil; +import org.neo4j.internal.kernel.api.TokenNameLookup; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.ExplicitIndexHits; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.StatementTokenNameLookup; -import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.kernel.api.exceptions.ProcedureException; import org.neo4j.kernel.api.exceptions.Status; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.index.SchemaIndexProvider; import org.neo4j.kernel.api.schema.index.IndexDescriptor; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/CachingExplicitIndexTransactionState.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/CachingExplicitIndexTransactionState.java index df7dfd423c26a..2ed6eb840cd67 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/CachingExplicitIndexTransactionState.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/CachingExplicitIndexTransactionState.java @@ -23,9 +23,9 @@ import java.util.HashMap; import java.util.Map; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.ExplicitIndex; import org.neo4j.kernel.api.exceptions.TransactionFailureException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.txstate.ExplicitIndexTransactionState; import org.neo4j.kernel.impl.index.IndexEntityType; import org.neo4j.storageengine.api.StorageCommand; 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 a52821c51fb78..7d799c5052491 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 @@ -36,9 +36,11 @@ import org.neo4j.internal.kernel.api.IndexQuery.ExactPredicate; import org.neo4j.internal.kernel.api.exceptions.KernelException; import org.neo4j.kernel.api.StatementConstants; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.exceptions.KernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; +import org.neo4j.kernel.api.StatementConstants; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.exceptions.index.IndexNotApplicableKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelStatement.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelStatement.java index 16d66023ebb12..42ae6cfd08629 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelStatement.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelStatement.java @@ -31,6 +31,8 @@ import org.neo4j.graphdb.NotInTransactionException; import org.neo4j.graphdb.TransactionTerminatedException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.security.AccessMode; import org.neo4j.io.pagecache.tracing.cursor.PageCursorTracer; import org.neo4j.kernel.api.AssertOpen; import org.neo4j.kernel.api.DataWriteOperations; @@ -41,10 +43,8 @@ import org.neo4j.kernel.api.SchemaWriteOperations; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.TokenWriteOperations; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.query.ExecutingQuery; -import org.neo4j.internal.kernel.api.security.AccessMode; import org.neo4j.kernel.api.txstate.ExplicitIndexTransactionState; import org.neo4j.kernel.api.txstate.TransactionState; import org.neo4j.kernel.api.txstate.TxStateHolder; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java index 8928950e01a9b..b3ce6c6ffbb20 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java @@ -40,6 +40,7 @@ import org.neo4j.internal.kernel.api.SchemaRead; import org.neo4j.internal.kernel.api.SchemaWrite; import org.neo4j.internal.kernel.api.Write; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.internal.kernel.api.security.AccessMode; import org.neo4j.internal.kernel.api.security.SecurityContext; import org.neo4j.io.pagecache.tracing.cursor.PageCursorTracer; @@ -47,7 +48,6 @@ import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.KeyReadTokenNameLookup; import org.neo4j.kernel.api.exceptions.ConstraintViolationTransactionFailureException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.exceptions.TransactionFailureException; import org.neo4j.kernel.api.exceptions.schema.ConstraintValidationException; 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 5a20de4ec47cf..bd0f89772186e 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 @@ -25,11 +25,11 @@ import java.util.function.Function; import org.neo4j.helpers.collection.Iterators; -import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.internal.kernel.api.exceptions.KernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; +import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException; import org.neo4j.kernel.api.exceptions.schema.AlreadyIndexedException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/LookupFilter.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/LookupFilter.java index a6a16f771c6ae..8f68868da621d 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/LookupFilter.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/LookupFilter.java @@ -26,7 +26,7 @@ import org.neo4j.collection.primitive.PrimitiveLongIterator; import org.neo4j.cursor.Cursor; import org.neo4j.internal.kernel.api.IndexQuery; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.index.PropertyAccessor; import org.neo4j.kernel.impl.api.operations.EntityOperations; import org.neo4j.storageengine.api.NodeItem; 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 0cee5700e5712..0eeccbc55bd32 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 @@ -35,6 +35,12 @@ import org.neo4j.graphdb.Direction; import org.neo4j.internal.kernel.api.IndexQuery; import org.neo4j.internal.kernel.api.exceptions.KernelException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; +import org.neo4j.internal.kernel.api.security.AccessMode; +import org.neo4j.internal.kernel.api.security.SecurityContext; import org.neo4j.io.pagecache.tracing.cursor.PageCursorTracer; import org.neo4j.kernel.api.DataWriteOperations; import org.neo4j.kernel.api.ExecutionStatisticsOperations; @@ -46,14 +52,10 @@ import org.neo4j.kernel.api.SchemaWriteOperations; import org.neo4j.kernel.api.StatementConstants; import org.neo4j.kernel.api.TokenWriteOperations; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.exceptions.LabelNotFoundKernelException; import org.neo4j.kernel.api.exceptions.ProcedureException; import org.neo4j.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotApplicableKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException; @@ -85,8 +87,6 @@ import org.neo4j.kernel.api.schema.constaints.RelExistenceConstraintDescriptor; import org.neo4j.kernel.api.schema.constaints.UniquenessConstraintDescriptor; import org.neo4j.kernel.api.schema.index.IndexDescriptor; -import org.neo4j.internal.kernel.api.security.AccessMode; -import org.neo4j.internal.kernel.api.security.SecurityContext; import org.neo4j.kernel.impl.api.operations.CountsOperations; import org.neo4j.kernel.impl.api.operations.EntityReadOperations; import org.neo4j.kernel.impl.api.operations.EntityWriteOperations; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/SchemaWriteGuard.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/SchemaWriteGuard.java index 3b868502e9256..284de40f67a9e 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/SchemaWriteGuard.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/SchemaWriteGuard.java @@ -19,7 +19,7 @@ */ package org.neo4j.kernel.impl.api; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; public interface SchemaWriteGuard { 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 fa71eb3a88608..69369322d94d8 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 @@ -34,18 +34,18 @@ import org.neo4j.cursor.Cursor; import org.neo4j.graphdb.NotFoundException; import org.neo4j.internal.kernel.api.IndexQuery; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.DataWriteOperations; import org.neo4j.kernel.api.ExplicitIndex; import org.neo4j.kernel.api.ExplicitIndexHits; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.exceptions.LabelNotFoundKernelException; import org.neo4j.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException; import org.neo4j.kernel.api.exceptions.TransactionFailureException; -import org.neo4j.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotApplicableKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/TwoPhaseNodeForRelationshipLocking.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/TwoPhaseNodeForRelationshipLocking.java index 1f172d39d92f5..f6e3194fdd3d2 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/TwoPhaseNodeForRelationshipLocking.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/TwoPhaseNodeForRelationshipLocking.java @@ -26,7 +26,7 @@ import org.neo4j.collection.primitive.PrimitiveLongSet; import org.neo4j.cursor.Cursor; import org.neo4j.function.ThrowingConsumer; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.internal.kernel.api.exceptions.KernelException; import org.neo4j.kernel.impl.api.operations.EntityReadOperations; import org.neo4j.kernel.impl.locking.ResourceTypes; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/explicitindex/InternalAutoIndexOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/explicitindex/InternalAutoIndexOperations.java index fa0f68dd60e95..80ed7f1e63676 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/explicitindex/InternalAutoIndexOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/explicitindex/InternalAutoIndexOperations.java @@ -26,12 +26,11 @@ import java.util.concurrent.atomic.AtomicReference; import org.neo4j.internal.kernel.api.ExplicitIndexWrite; -import org.neo4j.internal.kernel.api.exceptions.KernelException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.DataWriteOperations; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.explicitindex.AutoIndexOperations; import org.neo4j.kernel.impl.core.PropertyKeyTokenHolder; import org.neo4j.kernel.impl.core.TokenNotFoundException; @@ -44,48 +43,33 @@ public enum EntityType NODE { @Override - public void add( DataWriteOperations ops, long entityId, String keyName, Object value ) + public void add( ExplicitIndexWrite ops, long entityId, String keyName, Object value ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException { ops.nodeAddToExplicitIndex( InternalAutoIndexing.NODE_AUTO_INDEX, entityId, keyName, value ); } @Override - public void remove( DataWriteOperations ops, long entityId, String keyName, Object value ) + public void remove( ExplicitIndexWrite ops, long entityId, String keyName, Object value ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException { ops.nodeRemoveFromExplicitIndex( InternalAutoIndexing.NODE_AUTO_INDEX, entityId, keyName, value ); } @Override - public void remove( DataWriteOperations ops, long entityId, String keyName ) + public void remove( ExplicitIndexWrite ops, long entityId, String keyName ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException { ops.nodeRemoveFromExplicitIndex( InternalAutoIndexing.NODE_AUTO_INDEX, entityId, keyName ); } - @Override - public void remove( DataWriteOperations ops, long entityId ) - throws ExplicitIndexNotFoundKernelException, EntityNotFoundException - { - ops.nodeRemoveFromExplicitIndex( InternalAutoIndexing.NODE_AUTO_INDEX, entityId ); - } - @Override public void remove( ExplicitIndexWrite ops, long entityId ) - throws KernelException + throws ExplicitIndexNotFoundKernelException { ops.nodeRemoveFromExplicitIndex( InternalAutoIndexing.NODE_AUTO_INDEX, entityId ); } - @Override - public void ensureIndexExists( DataWriteOperations ops ) throws - ExplicitIndexNotFoundKernelException, EntityNotFoundException - - { - ops.nodeExplicitIndexCreateLazily( InternalAutoIndexing.NODE_AUTO_INDEX, null ); - } - @Override public void ensureIndexExists( ExplicitIndexWrite ops ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException @@ -97,7 +81,7 @@ public void ensureIndexExists( ExplicitIndexWrite ops ) throws RELATIONSHIP { @Override - public void add( DataWriteOperations ops, long entityId, String keyName, Object value ) + public void add( ExplicitIndexWrite ops, long entityId, String keyName, Object value ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException { ops.relationshipAddToExplicitIndex( InternalAutoIndexing.RELATIONSHIP_AUTO_INDEX, entityId, @@ -105,7 +89,7 @@ public void add( DataWriteOperations ops, long entityId, String keyName, Object } @Override - public void remove( DataWriteOperations ops, long entityId, String keyName, Object value ) + public void remove( ExplicitIndexWrite ops, long entityId, String keyName, Object value ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException { ops.relationshipRemoveFromExplicitIndex( InternalAutoIndexing.RELATIONSHIP_AUTO_INDEX, @@ -113,7 +97,7 @@ public void remove( DataWriteOperations ops, long entityId, String keyName, Obje } @Override - public void remove( DataWriteOperations ops, long entityId, String keyName ) + public void remove( ExplicitIndexWrite ops, long entityId, String keyName ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException { ops.relationshipRemoveFromExplicitIndex( InternalAutoIndexing.RELATIONSHIP_AUTO_INDEX, @@ -121,49 +105,31 @@ public void remove( DataWriteOperations ops, long entityId, String keyName ) } @Override - public void remove( DataWriteOperations ops, long entityId ) + public void remove( ExplicitIndexWrite ops, long entityId ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException { ops.relationshipRemoveFromExplicitIndex( InternalAutoIndexing.RELATIONSHIP_AUTO_INDEX, entityId ); } - @Override - public void remove( ExplicitIndexWrite ops, long entityId ) - throws ExplicitIndexNotFoundKernelException, EntityNotFoundException - { - throw new UnsupportedOperationException( "not implemented yet" ); - } @Override - public void ensureIndexExists( DataWriteOperations ops ) + public void ensureIndexExists( ExplicitIndexWrite ops ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException { ops.relationshipExplicitIndexCreateLazily( InternalAutoIndexing.RELATIONSHIP_AUTO_INDEX, null ); } - - @Override - public void ensureIndexExists( ExplicitIndexWrite write ) - throws ExplicitIndexNotFoundKernelException, EntityNotFoundException - { - throw new UnsupportedOperationException( "not implemented yet" ); - } }; - public abstract void add( DataWriteOperations ops, long entityId, String keyName, Object value ) + public abstract void add( ExplicitIndexWrite ops, long entityId, String keyName, Object value ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException; - public abstract void remove( DataWriteOperations ops, long entityId, String keyName, Object value ) + public abstract void remove( ExplicitIndexWrite ops, long entityId, String keyName, Object value ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException; - public abstract void remove( DataWriteOperations ops, long entityId, String keyName ) - throws ExplicitIndexNotFoundKernelException, EntityNotFoundException; - - public abstract void remove( DataWriteOperations ops, long entityId ) + public abstract void remove( ExplicitIndexWrite ops, long entityId, String keyName ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException; public abstract void remove( ExplicitIndexWrite ops, long entityId ) - throws KernelException; - public abstract void ensureIndexExists( DataWriteOperations ops ) throws ExplicitIndexNotFoundKernelException, EntityNotFoundException; public abstract void ensureIndexExists( ExplicitIndexWrite write ) @@ -185,7 +151,7 @@ public InternalAutoIndexOperations( PropertyKeyTokenHolder propertyKeyLookup, En } @Override - public void propertyAdded( DataWriteOperations ops, long entityId, int propertyKeyId, Value value ) throws + public void propertyAdded( ExplicitIndexWrite ops, long entityId, int propertyKeyId, Value value ) throws AutoIndexingKernelException { if ( enabled ) @@ -213,7 +179,7 @@ public void propertyAdded( DataWriteOperations ops, long entityId, int propertyK } @Override - public void propertyChanged( DataWriteOperations ops, long entityId, int propertyKeyId, Value oldValue, + public void propertyChanged( ExplicitIndexWrite ops, long entityId, int propertyKeyId, Value oldValue, Value newValue ) throws AutoIndexingKernelException { @@ -243,7 +209,7 @@ public void propertyChanged( DataWriteOperations ops, long entityId, int propert } @Override - public void propertyRemoved( DataWriteOperations ops, long entityId, int propertyKey ) + public void propertyRemoved( ExplicitIndexWrite ops, long entityId, int propertyKey ) throws AutoIndexingKernelException { if ( enabled ) @@ -271,24 +237,7 @@ public void propertyRemoved( DataWriteOperations ops, long entityId, int propert } @Override - public void entityRemoved( DataWriteOperations ops, long entityId ) throws AutoIndexingKernelException - { - if ( enabled ) - { - try - { - ensureIndexExists( ops ); - type.remove( ops, entityId ); - } - catch ( ExplicitIndexNotFoundKernelException | EntityNotFoundException e ) - { - throw new AutoIndexingKernelException( e ); - } - } - } - - @Override - public void entityRemoved( ExplicitIndexWrite ops, long entityId ) throws KernelException + public void entityRemoved( ExplicitIndexWrite ops, long entityId ) throws AutoIndexingKernelException { if ( enabled ) { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexStoreView.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexStoreView.java index 492035712d0aa..2213ffb3287b4 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexStoreView.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexStoreView.java @@ -23,7 +23,7 @@ import org.neo4j.collection.primitive.PrimitiveIntSet; import org.neo4j.helpers.collection.Visitor; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.index.IndexEntryUpdate; import org.neo4j.kernel.api.index.PropertyAccessor; import org.neo4j.kernel.api.labelscan.NodeLabelUpdate; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/EntityReadOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/EntityReadOperations.java index 11739585a8683..d6a0805ae777d 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/EntityReadOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/EntityReadOperations.java @@ -26,8 +26,8 @@ import org.neo4j.collection.primitive.PrimitiveLongResourceIterator; import org.neo4j.cursor.Cursor; import org.neo4j.internal.kernel.api.IndexQuery; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.StatementConstants; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.index.IndexNotApplicableKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.schema.IndexBrokenKernelException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/EntityWriteOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/EntityWriteOperations.java index 82ce210ab9335..aeedf92bd3629 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/EntityWriteOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/EntityWriteOperations.java @@ -19,10 +19,10 @@ */ package org.neo4j.kernel.impl.api.operations; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.internal.kernel.api.exceptions.KernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; import org.neo4j.kernel.api.exceptions.schema.ConstraintValidationException; import org.neo4j.kernel.impl.api.KernelStatement; import org.neo4j.values.storable.Value; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/ExplicitIndexReadOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/ExplicitIndexReadOperations.java index 0524e5ba245cf..5f6c9776e967f 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/ExplicitIndexReadOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/ExplicitIndexReadOperations.java @@ -21,8 +21,8 @@ import java.util.Map; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.ExplicitIndexHits; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.impl.api.KernelStatement; public interface ExplicitIndexReadOperations diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/ExplicitIndexWriteOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/ExplicitIndexWriteOperations.java index 930849ee606d5..38f74334d0cec 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/ExplicitIndexWriteOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/ExplicitIndexWriteOperations.java @@ -21,8 +21,8 @@ import java.util.Map; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.impl.api.KernelStatement; public interface ExplicitIndexWriteOperations diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/ExplicitIndexTransactionStateImpl.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/ExplicitIndexTransactionStateImpl.java index e3b476c67efca..68faeeaceb4df 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/ExplicitIndexTransactionStateImpl.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/ExplicitIndexTransactionStateImpl.java @@ -29,8 +29,8 @@ import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Relationship; import org.neo4j.graphdb.index.IndexManager; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.ExplicitIndex; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.txstate.ExplicitIndexTransactionState; import org.neo4j.kernel.impl.index.IndexCommand; import org.neo4j.kernel.impl.index.IndexCommand.AddNodeCommand; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/IndexTxStateUpdater.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/IndexTxStateUpdater.java index ee3bb0ee342fc..f65a2c0187c03 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/IndexTxStateUpdater.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/IndexTxStateUpdater.java @@ -26,7 +26,7 @@ import org.neo4j.collection.primitive.Primitive; import org.neo4j.collection.primitive.PrimitiveIntSet; import org.neo4j.cursor.Cursor; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.schema.index.IndexDescriptor; import org.neo4j.kernel.impl.api.KernelStatement; import org.neo4j.kernel.impl.api.operations.EntityReadOperations; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/NodeLoadingIterator.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/NodeLoadingIterator.java index 7eae3cf486e6a..a37a4b38ffc7d 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/NodeLoadingIterator.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/NodeLoadingIterator.java @@ -23,7 +23,7 @@ import org.neo4j.cursor.Cursor; import org.neo4j.function.ThrowingLongFunction; import org.neo4j.helpers.collection.PrefetchingIterator; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.storageengine.api.NodeItem; public class NodeLoadingIterator extends PrefetchingIterator> 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 0201609aa9da8..14f3e750dd58c 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 @@ -32,9 +32,9 @@ import org.neo4j.graphdb.TransactionFailureException; import org.neo4j.helpers.collection.Iterators; import org.neo4j.internal.kernel.api.IndexCapability; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.AssertOpen; import org.neo4j.kernel.api.ReadOperations; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.LabelNotFoundKernelException; import org.neo4j.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/GraphPropertiesProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/GraphPropertiesProxy.java index 96b477a13645c..7f20f650b153f 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/GraphPropertiesProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/GraphPropertiesProxy.java @@ -28,10 +28,10 @@ import org.neo4j.graphdb.ConstraintViolationException; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.NotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.StatementTokenNameLookup; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.kernel.api.exceptions.PropertyNotFoundException; import org.neo4j.kernel.api.exceptions.schema.IllegalTokenNameException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/NodeProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/NodeProxy.java index e184f95f535c7..0a4faef088040 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/NodeProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/NodeProxy.java @@ -39,18 +39,18 @@ import org.neo4j.graphdb.RelationshipType; import org.neo4j.graphdb.ResourceIterable; import org.neo4j.graphdb.ResourceIterator; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.internal.kernel.api.exceptions.KernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.StatementTokenNameLookup; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.exceptions.LabelNotFoundKernelException; import org.neo4j.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.kernel.api.exceptions.PropertyNotFoundException; import org.neo4j.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; import org.neo4j.kernel.api.exceptions.schema.ConstraintValidationException; import org.neo4j.kernel.api.exceptions.schema.IllegalTokenNameException; import org.neo4j.kernel.api.exceptions.schema.TooManyLabelsException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/RelationshipProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/RelationshipProxy.java index 46728011047fc..d4116c45fa25b 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/RelationshipProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/RelationshipProxy.java @@ -35,13 +35,13 @@ import org.neo4j.graphdb.NotInTransactionException; import org.neo4j.graphdb.Relationship; import org.neo4j.graphdb.RelationshipType; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.StatementTokenNameLookup; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.kernel.api.exceptions.PropertyNotFoundException; -import org.neo4j.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; import org.neo4j.kernel.api.exceptions.schema.IllegalTokenNameException; import org.neo4j.kernel.impl.api.RelationshipVisitor; import org.neo4j.kernel.impl.api.operations.KeyReadOperations; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/ExplicitIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/ExplicitIndexProxy.java index 64563a48793eb..0268fa9992cfd 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/ExplicitIndexProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/ExplicitIndexProxy.java @@ -29,13 +29,13 @@ import org.neo4j.graphdb.Relationship; import org.neo4j.graphdb.index.Index; import org.neo4j.graphdb.index.IndexHits; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.DataWriteOperations; import org.neo4j.kernel.api.ExplicitIndexHits; import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.impl.api.KernelStatement; import org.neo4j.kernel.impl.api.explicitindex.AbstractIndexHits; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/IndexManagerImpl.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/IndexManagerImpl.java index e42533aff318c..82615ec4f2354 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/IndexManagerImpl.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/IndexManagerImpl.java @@ -32,9 +32,9 @@ import org.neo4j.graphdb.index.IndexManager; import org.neo4j.graphdb.index.RelationshipAutoIndexer; import org.neo4j.graphdb.index.RelationshipIndex; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.impl.api.explicitindex.InternalAutoIndexing; public class IndexManagerImpl implements IndexManager diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/IndexProviderImpl.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/IndexProviderImpl.java index 7367a6d0f35ff..f1d3e0014845e 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/IndexProviderImpl.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/IndexProviderImpl.java @@ -27,8 +27,8 @@ import org.neo4j.graphdb.Node; import org.neo4j.graphdb.index.Index; import org.neo4j.graphdb.index.RelationshipIndex; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; public class IndexProviderImpl implements IndexProvider { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/RelationshipExplicitIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/RelationshipExplicitIndexProxy.java index fec86c53a8bc2..f9b6cc0f5c610 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/RelationshipExplicitIndexProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/RelationshipExplicitIndexProxy.java @@ -27,8 +27,8 @@ import org.neo4j.graphdb.Relationship; import org.neo4j.graphdb.index.IndexHits; import org.neo4j.graphdb.index.RelationshipIndex; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; public class RelationshipExplicitIndexProxy extends ExplicitIndexProxy implements RelationshipIndex { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/TxStateTransactionDataSnapshot.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/TxStateTransactionDataSnapshot.java index f3ad67a6d720a..4690224e109c0 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/TxStateTransactionDataSnapshot.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/TxStateTransactionDataSnapshot.java @@ -35,8 +35,8 @@ import org.neo4j.graphdb.event.PropertyEntry; import org.neo4j.graphdb.event.TransactionData; import org.neo4j.helpers.collection.IterableWrapper; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.KernelTransaction; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.LabelNotFoundKernelException; import org.neo4j.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.kernel.impl.api.KernelTransactionImplementation; 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 33b64ada023e1..b13c3df51256a 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 @@ -38,12 +38,12 @@ import org.neo4j.graphdb.schema.IndexDefinition; import org.neo4j.graphdb.schema.Schema; import org.neo4j.helpers.collection.Iterables; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.internal.kernel.api.exceptions.KernelException; import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.StatementTokenNameLookup; import org.neo4j.kernel.api.TokenWriteOperations; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.exceptions.LabelNotFoundKernelException; import org.neo4j.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java index f3fda2cfe7399..9154ac26d2424 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java @@ -57,14 +57,14 @@ import org.neo4j.helpers.collection.PrefetchingResourceIterator; import org.neo4j.helpers.collection.ResourceClosingIterator; import org.neo4j.internal.kernel.api.IndexQuery; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.internal.kernel.api.exceptions.KernelException; import org.neo4j.internal.kernel.api.security.SecurityContext; import org.neo4j.kernel.GraphDatabaseQueryService; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.schema.ConstraintValidationException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/ExplicitIndexStore.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/ExplicitIndexStore.java index 5e7b2f75efe6b..ef63d0b3c1dc0 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/ExplicitIndexStore.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/ExplicitIndexStore.java @@ -32,10 +32,10 @@ import org.neo4j.graphdb.Relationship; import org.neo4j.graphdb.TransactionFailureException; import org.neo4j.helpers.collection.MapUtil; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.InwardKernel; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.spi.explicitindex.IndexImplementation; 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 c2cfca3bbb641..31667d156db57 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 @@ -26,12 +26,11 @@ import org.neo4j.function.Suppliers.Lazy; import org.neo4j.internal.kernel.api.CapableIndexReference; import org.neo4j.internal.kernel.api.IndexCapability; -import org.neo4j.internal.kernel.api.IndexReference; import org.neo4j.internal.kernel.api.Token; import org.neo4j.internal.kernel.api.exceptions.KernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.io.pagecache.PageCursor; import org.neo4j.kernel.api.ExplicitIndex; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.kernel.api.schema.index.IndexDescriptor; @@ -302,4 +301,9 @@ void getOrCreateNodeIndexConfig( String indexName, Map customConf { explicitIndexStore.getOrCreateNodeIndexConfig( indexName, customConfig ); } + + void getOrCreateRelationshipIndexConfig( String indexName, Map customConfig ) + { + explicitIndexStore.getOrCreateRelationshipIndexConfig( indexName, customConfig ); + } } 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 617b35ee6d51d..06071b57e6126 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 @@ -42,13 +42,16 @@ import org.neo4j.internal.kernel.api.Scan; import org.neo4j.internal.kernel.api.SchemaRead; import org.neo4j.internal.kernel.api.Write; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.internal.kernel.api.exceptions.KernelException; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.explicitindex.AutoIndexing; import org.neo4j.kernel.impl.api.KernelTransactionImplementation; import org.neo4j.kernel.impl.index.ExplicitIndexStore; import org.neo4j.kernel.impl.locking.ResourceTypes; +import org.neo4j.kernel.impl.index.IndexEntityType; import org.neo4j.storageengine.api.EntityType; import org.neo4j.storageengine.api.StorageEngine; import org.neo4j.storageengine.api.StorageStatement; @@ -337,7 +340,7 @@ public long nodeCreate() } @Override - public boolean nodeDelete( long node ) throws KernelException + public boolean nodeDelete( long node ) throws AutoIndexingKernelException { assertOpen(); @@ -383,7 +386,7 @@ public void relationshipDelete( long relationship ) } @Override - public boolean nodeAddLabel( long node, int nodeLabel ) throws KernelException + public boolean nodeAddLabel( long node, int nodeLabel ) throws EntityNotFoundException { assertOpen(); allStoreHolder.singleNode( node, nodeCursor ); @@ -405,7 +408,7 @@ public boolean nodeAddLabel( long node, int nodeLabel ) throws KernelException } @Override - public boolean nodeRemoveLabel( long node, int nodeLabel ) throws KernelException + public boolean nodeRemoveLabel( long node, int nodeLabel ) throws EntityNotFoundException { assertOpen(); @@ -427,7 +430,8 @@ public boolean nodeRemoveLabel( long node, int nodeLabel ) throws KernelExceptio } @Override - public Value nodeSetProperty( long node, int propertyKey, Value value ) throws EntityNotFoundException + public Value nodeSetProperty( long node, int propertyKey, Value value ) + throws EntityNotFoundException, AutoIndexingKernelException { assertOpen(); @@ -436,7 +440,7 @@ public Value nodeSetProperty( long node, int propertyKey, Value value ) throws E if ( existingValue == NO_VALUE ) { //no existing value, we just add it - //TODO autoIndexing.nodes().propertyAdded( ops, nodeId, propertyKeyId, value ); + autoIndexing.nodes().propertyAdded( this, node, propertyKey, value ); ktx.txState().nodeDoAddProperty( node, propertyKey, value ); updater.onPropertyAdd( nodeCursor, propertyCursor, propertyKey, value ); return NO_VALUE; @@ -446,7 +450,7 @@ public Value nodeSetProperty( long node, int propertyKey, Value value ) throws E if ( !value.equals( existingValue ) ) { //the value has changed to a new value - //TODO autoIndexing.nodes().propertyChanged( ops, nodeId, propertyKeyId, existingValue, value ); + autoIndexing.nodes().propertyChanged( this, node, propertyKey, existingValue, value ); ktx.txState().nodeDoChangeProperty( node, propertyKey, existingValue, value ); updater.onPropertyChange( nodeCursor, propertyCursor, propertyKey, existingValue, value ); } @@ -455,15 +459,16 @@ public Value nodeSetProperty( long node, int propertyKey, Value value ) throws E } @Override - public Value nodeRemoveProperty( long node, int propertyKey ) throws EntityNotFoundException + public Value nodeRemoveProperty( long node, int propertyKey ) + throws EntityNotFoundException, AutoIndexingKernelException { assertOpen(); Value existingValue = readProperty( node, propertyKey ); if ( existingValue != NO_VALUE ) { - //no existing value,® we just add it - //TODO autoIndexing.nodes().propertyRemoved( ops, nodeId, propertyKeyId ); + //no existing value, we just add it + autoIndexing.nodes().propertyRemoved( this, node, propertyKey); ktx.txState().nodeDoRemoveProperty( node, propertyKey, existingValue); updater.onPropertyRemove( nodeCursor, propertyCursor, propertyKey, existingValue ); } @@ -500,12 +505,43 @@ public Value graphRemoveProperty( int propertyKey ) } @Override - public void nodeRemoveFromExplicitIndex( String indexName, long node ) throws KernelException + public void nodeAddToExplicitIndex( String indexName, long node, String key, Object value ) + throws EntityNotFoundException, ExplicitIndexNotFoundKernelException + { + assertOpen(); + ktx.explicitIndexTxState().nodeChanges( indexName ).addNode( node, key, value ); + } + + @Override + public void nodeRemoveFromExplicitIndex( String indexName, long node ) throws ExplicitIndexNotFoundKernelException { assertOpen(); ktx.explicitIndexTxState().nodeChanges( indexName ).remove( node ); } + @Override + public void nodeRemoveFromExplicitIndex( String indexName, long node, String key, Object value ) + throws ExplicitIndexNotFoundKernelException + { + assertOpen(); + ktx.explicitIndexTxState().nodeChanges( indexName ).remove( node, key, value ); + } + + @Override + public void nodeRemoveFromExplicitIndex( String indexName, long node, String key ) + throws ExplicitIndexNotFoundKernelException + { + assertOpen(); + ktx.explicitIndexTxState().nodeChanges( indexName ).remove( node, key ); + } + + @Override + public void nodeExplicitIndexCreate( String indexName, Map customConfig ) + { + assertOpen(); + ktx.explicitIndexTxState().createIndex( IndexEntityType.Node, indexName, customConfig ); + } + @Override public void nodeExplicitIndexCreateLazily( String indexName, Map customConfig ) { @@ -513,6 +549,50 @@ public void nodeExplicitIndexCreateLazily( String indexName, Map allStoreHolder.getOrCreateNodeIndexConfig( indexName, customConfig ); } + @Override + public void relationshipAddToExplicitIndex( String indexName, long relationship, String key, Object value ) + throws EntityNotFoundException, ExplicitIndexNotFoundKernelException + { + throw new UnsupportedOperationException( ); + } + + @Override + public void relationshipRemoveFromExplicitIndex( String indexName, long relationship, String key, Object value ) + throws ExplicitIndexNotFoundKernelException, EntityNotFoundException + { + assertOpen(); + ktx.explicitIndexTxState().relationshipChanges( indexName ).remove( relationship, key, value ); + } + + @Override + public void relationshipRemoveFromExplicitIndex( String indexName, long relationship, String key ) + throws ExplicitIndexNotFoundKernelException, EntityNotFoundException + { + ktx.explicitIndexTxState().relationshipChanges( indexName ).remove( relationship, key ); + + } + + @Override + public void relationshipRemoveFromExplicitIndex( String indexName, long relationship ) + throws ExplicitIndexNotFoundKernelException, EntityNotFoundException + { + ktx.explicitIndexTxState().relationshipChanges( indexName ).remove( relationship ); + } + + @Override + public void relationshipExplicitIndexCreate( String indexName, Map customConfig ) + { + assertOpen(); + ktx.explicitIndexTxState().createIndex( IndexEntityType.Relationship, indexName, customConfig ); + } + + @Override + public void relationshipExplicitIndexCreateLazily( String indexName, Map customConfig ) + { + assertOpen(); + allStoreHolder.getOrCreateRelationshipIndexConfig( indexName, customConfig ); + } + private Value readProperty(long node, int propertyKey) throws EntityNotFoundException { allStoreHolder.singleNode( node, nodeCursor ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/storeview/DynamicIndexStoreView.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/storeview/DynamicIndexStoreView.java index 74296119a194c..3de5d4cd4edae 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/storeview/DynamicIndexStoreView.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/storeview/DynamicIndexStoreView.java @@ -25,7 +25,7 @@ import org.neo4j.collection.primitive.PrimitiveIntSet; import org.neo4j.helpers.collection.Visitor; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.labelscan.LabelScanStore; import org.neo4j.kernel.api.labelscan.NodeLabelUpdate; import org.neo4j.kernel.impl.api.index.IndexStoreView; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/storeview/NeoStoreIndexStoreView.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/storeview/NeoStoreIndexStoreView.java index 37c7fa31d2a8f..5434ce5f0e88d 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/storeview/NeoStoreIndexStoreView.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/storeview/NeoStoreIndexStoreView.java @@ -23,7 +23,7 @@ import org.neo4j.collection.primitive.PrimitiveIntSet; import org.neo4j.helpers.collection.Visitor; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.labelscan.NodeLabelUpdate; import org.neo4j.kernel.impl.api.CountsAccessor; import org.neo4j.kernel.impl.api.index.IndexStoreView; 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 9f9ed8eaad2fc..945851e9ff995 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 @@ -29,8 +29,8 @@ import org.neo4j.collection.primitive.PrimitiveLongResourceIterator; import org.neo4j.cursor.Cursor; import org.neo4j.internal.kernel.api.IndexCapability; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.AssertOpen; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.LabelNotFoundKernelException; import org.neo4j.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException; 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 b02ac097af63b..99768a0029afd 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 @@ -39,9 +39,9 @@ import org.neo4j.graphdb.Transaction; import org.neo4j.helpers.collection.Iterators; import org.neo4j.internal.kernel.api.IndexQuery; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotApplicableKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.schema.ConstraintValidationException; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/api/TransactionStatementSequenceTest.java b/community/kernel/src/test/java/org/neo4j/kernel/api/TransactionStatementSequenceTest.java index a22aea1fc127b..25ee6689fb60f 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/api/TransactionStatementSequenceTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/api/TransactionStatementSequenceTest.java @@ -21,13 +21,13 @@ import org.junit.Test; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.security.AnonymousContext; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; -import static org.neo4j.kernel.api.KernelTransactionFactory.kernelTransaction; import static org.neo4j.internal.kernel.api.security.SecurityContext.AUTH_DISABLED; +import static org.neo4j.kernel.api.KernelTransactionFactory.kernelTransaction; public class TransactionStatementSequenceTest { 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 019a680359235..29b66840aac78 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.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.values.storable.Value; import org.neo4j.values.storable.Values; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/builtinprocs/StubStatement.java b/community/kernel/src/test/java/org/neo4j/kernel/builtinprocs/StubStatement.java index effab1384dc02..cdbab85f75598 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/builtinprocs/StubStatement.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/builtinprocs/StubStatement.java @@ -19,6 +19,7 @@ */ package org.neo4j.kernel.builtinprocs; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.DataWriteOperations; import org.neo4j.kernel.api.ExecutionStatisticsOperations; import org.neo4j.kernel.api.ProcedureCallOperations; @@ -27,7 +28,6 @@ import org.neo4j.kernel.api.SchemaWriteOperations; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.TokenWriteOperations; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; public class StubStatement implements Statement { diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java index 65481d11ae0b7..8dc4e34ddb7a7 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java @@ -26,8 +26,8 @@ import java.util.function.Function; import org.neo4j.graphdb.Transaction; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.core.ThreadToStatementContextBridge; import org.neo4j.kernel.impl.factory.CommunityEditionModule; 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 71dfbee0eec00..d3c2e71c5901c 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 @@ -26,11 +26,11 @@ import java.util.Optional; import org.neo4j.helpers.collection.Iterators; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.internal.kernel.api.exceptions.KernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; import org.neo4j.io.pagecache.tracing.cursor.PageCursorTracer; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.AutoIndexingKernelException; import org.neo4j.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import org.neo4j.kernel.api.schema.constaints.ConstraintDescriptor; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/TwoPhaseNodeForRelationshipLockingTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/TwoPhaseNodeForRelationshipLockingTest.java index dd192033b9463..7ccda301b2cf7 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/TwoPhaseNodeForRelationshipLockingTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/TwoPhaseNodeForRelationshipLockingTest.java @@ -30,7 +30,7 @@ import org.neo4j.cursor.Cursor; import org.neo4j.function.ThrowingConsumer; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.internal.kernel.api.exceptions.KernelException; import org.neo4j.kernel.impl.api.operations.EntityReadOperations; import org.neo4j.kernel.impl.locking.LockTracer; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexStatisticsTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexStatisticsTest.java index b86d69c4f97d1..9803dc93459c6 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexStatisticsTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexStatisticsTest.java @@ -44,9 +44,9 @@ import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.factory.GraphDatabaseSettings; -import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.internal.kernel.api.exceptions.KernelException; +import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; 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 e9ea0b0755557..066da8dc52c46 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.Map; import java.util.Set; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; import org.neo4j.kernel.api.index.IndexEntryUpdate; import org.neo4j.kernel.api.index.IndexUpdater; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/integrationtest/KernelIT.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/integrationtest/KernelIT.java index 9b1136fccfcd1..fbb6ee30e213b 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/integrationtest/KernelIT.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/integrationtest/KernelIT.java @@ -38,13 +38,13 @@ import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.TransactionFailureException; import org.neo4j.graphdb.TransactionTerminatedException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.internal.kernel.api.security.SecurityContext; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.SchemaWriteOperations; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.TokenWriteOperations; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.exceptions.schema.SchemaKernelException; import org.neo4j.kernel.api.schema.LabelSchemaDescriptor; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/integrationtest/PropertyIT.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/integrationtest/PropertyIT.java index 741370ec09dd3..295fc0f36cf60 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/integrationtest/PropertyIT.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/integrationtest/PropertyIT.java @@ -24,10 +24,10 @@ import java.util.Collections; import java.util.Iterator; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.DataWriteOperations; import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.security.AnonymousContext; import org.neo4j.storageengine.api.Token; import org.neo4j.values.storable.Value; 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 688003c13ea1e..9d1282cf150fa 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.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.properties.PropertyKeyValue; import org.neo4j.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.kernel.api.schema.index.IndexDescriptor; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/LabelTransactionStateTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/LabelTransactionStateTest.java index 57762b878112a..80fe59358f8cf 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/LabelTransactionStateTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/LabelTransactionStateTest.java @@ -31,8 +31,8 @@ import org.neo4j.collection.primitive.PrimitiveIntCollections; import org.neo4j.collection.primitive.PrimitiveLongCollections; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.AssertOpen; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.schema.index.IndexDescriptor; import org.neo4j.kernel.api.schema.index.IndexDescriptorFactory; import org.neo4j.kernel.api.txstate.TransactionState; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/StateOperationsAutoIndexingTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/StateOperationsAutoIndexingTest.java index 7d49191a5f51d..78e812e6af5a5 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/StateOperationsAutoIndexingTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/state/StateOperationsAutoIndexingTest.java @@ -23,9 +23,9 @@ import org.junit.Test; import org.neo4j.collection.primitive.PrimitiveIntCollections; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.AssertOpen; import org.neo4j.kernel.api.DataWriteOperations; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.explicitindex.AutoIndexing; import org.neo4j.kernel.impl.api.KernelStatement; import org.neo4j.kernel.impl.api.StateHandlingStatementOperations; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/store/NodeLoadingIteratorTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/store/NodeLoadingIteratorTest.java index 83bed033824fa..0577743c878d1 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/store/NodeLoadingIteratorTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/store/NodeLoadingIteratorTest.java @@ -29,7 +29,7 @@ import org.neo4j.collection.primitive.PrimitiveLongIterator; import org.neo4j.cursor.Cursor; import org.neo4j.function.ThrowingLongFunction; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.storageengine.api.EntityType; import org.neo4j.storageengine.api.NodeItem; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/core/NodeProxySingleRelationshipTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/core/NodeProxySingleRelationshipTest.java index 331597f3015e6..7821765df0035 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/core/NodeProxySingleRelationshipTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/core/NodeProxySingleRelationshipTest.java @@ -26,9 +26,9 @@ import org.neo4j.graphdb.NotFoundException; import org.neo4j.graphdb.Relationship; import org.neo4j.graphdb.RelationshipType; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.impl.api.RelationshipVisitor; import org.neo4j.kernel.impl.api.store.RelationshipIterator; 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 73cbc7b5862c7..de3614d97f10f 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.StubNodeCursor; import org.neo4j.internal.kernel.api.StubPropertyCursor; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.schema.LabelSchemaDescriptor; import org.neo4j.kernel.api.schema.index.IndexDescriptor; import org.neo4j.kernel.api.schema.index.IndexDescriptorFactory; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/NeoStoresTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/NeoStoresTest.java index 4f5f6ec809f85..8d0e078c57878 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/NeoStoresTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/NeoStoresTest.java @@ -45,6 +45,7 @@ import org.neo4j.graphdb.RelationshipType; import org.neo4j.graphdb.mockfs.UncloseableDelegatingFileSystemAbstraction; import org.neo4j.helpers.collection.Pair; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.fs.OpenMode; import org.neo4j.io.fs.StoreChannel; @@ -52,7 +53,6 @@ import org.neo4j.io.pagecache.PageCache; import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.api.KernelTransaction; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.TransactionFailureException; import org.neo4j.kernel.api.properties.PropertyKeyValue; import org.neo4j.kernel.api.txstate.TransactionState; @@ -109,8 +109,8 @@ import static org.neo4j.function.Predicates.ALWAYS_TRUE_INT; import static org.neo4j.graphdb.factory.GraphDatabaseSettings.counts_store_rotation_timeout; import static org.neo4j.helpers.collection.MapUtil.stringMap; -import static org.neo4j.kernel.api.AssertOpen.ALWAYS_OPEN; import static org.neo4j.internal.kernel.api.security.SecurityContext.AUTH_DISABLED; +import static org.neo4j.kernel.api.AssertOpen.ALWAYS_OPEN; import static org.neo4j.kernel.impl.locking.LockService.NO_LOCK; import static org.neo4j.kernel.impl.store.RecordStore.getRecord; import static org.neo4j.kernel.impl.store.format.standard.MetaDataRecordFormat.FIELD_NOT_PRESENT; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/storeview/NeoStoreIndexStoreViewTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/storeview/NeoStoreIndexStoreViewTest.java index c8678b31a7581..d8ea09e3ef681 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/storeview/NeoStoreIndexStoreViewTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/storeview/NeoStoreIndexStoreViewTest.java @@ -36,9 +36,9 @@ import org.neo4j.graphdb.Transaction; import org.neo4j.helpers.collection.Iterables; import org.neo4j.helpers.collection.Visitor; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.internal.kernel.api.exceptions.KernelException; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.index.IndexEntryUpdate; import org.neo4j.kernel.api.labelscan.NodeLabelUpdate; import org.neo4j.kernel.api.schema.LabelSchemaDescriptor; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/util/dbstructure/GraphDbStructureGuideTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/util/dbstructure/GraphDbStructureGuideTest.java index 1a5d7f7b1f5a8..43ecfb0990ed6 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/util/dbstructure/GraphDbStructureGuideTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/util/dbstructure/GraphDbStructureGuideTest.java @@ -30,9 +30,9 @@ import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Transaction; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.schema.SchemaDescriptorFactory; import org.neo4j.kernel.api.schema.constaints.UniquenessConstraintDescriptor; import org.neo4j.kernel.api.schema.index.IndexDescriptor; diff --git a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/CommitContext.java b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/CommitContext.java index 130870e91c280..1089f7f6f88af 100644 --- a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/CommitContext.java +++ b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/CommitContext.java @@ -27,7 +27,7 @@ import java.util.HashMap; import java.util.Map; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; /** * This presents a context for each {@link LuceneCommand} when they are diff --git a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/IndexReferenceFactory.java b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/IndexReferenceFactory.java index 34b87179659cf..8af84fcbb7a4b 100644 --- a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/IndexReferenceFactory.java +++ b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/IndexReferenceFactory.java @@ -28,7 +28,7 @@ import java.io.File; import java.io.IOException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; /** * Factory that build appropriate (read only or writable) {@link IndexReference} for provided {@link IndexIdentifier} diff --git a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/IndexTypeCache.java b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/IndexTypeCache.java index 1785f23ed8fda..957b3ad5542a4 100644 --- a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/IndexTypeCache.java +++ b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/IndexTypeCache.java @@ -24,7 +24,7 @@ import java.util.Map; import org.neo4j.helpers.collection.Pair; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.impl.index.IndexConfigStore; class IndexTypeCache diff --git a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/LuceneCommandApplier.java b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/LuceneCommandApplier.java index a86779b81f285..e3fb6bbb54637 100644 --- a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/LuceneCommandApplier.java +++ b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/LuceneCommandApplier.java @@ -23,7 +23,7 @@ import java.util.HashMap; import java.util.Map; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.impl.api.TransactionApplier; import org.neo4j.kernel.impl.index.IndexCommand; import org.neo4j.kernel.impl.index.IndexCommand.AddNodeCommand; diff --git a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/LuceneDataSource.java b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/LuceneDataSource.java index 1e3851791fa9c..f83a7ad6a4334 100644 --- a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/LuceneDataSource.java +++ b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/LuceneDataSource.java @@ -63,9 +63,9 @@ import org.neo4j.helpers.collection.Iterators; import org.neo4j.helpers.collection.Pair; import org.neo4j.helpers.collection.PrefetchingResourceIterator; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.fs.FileUtils; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.impl.factory.OperationalMode; diff --git a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/LuceneExplicitIndex.java b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/LuceneExplicitIndex.java index dbd9487646980..f3f44cd2b885d 100644 --- a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/LuceneExplicitIndex.java +++ b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/LuceneExplicitIndex.java @@ -48,9 +48,9 @@ import org.neo4j.graphdb.index.IndexHits; import org.neo4j.index.lucene.QueryContext; import org.neo4j.index.lucene.ValueContext; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.ExplicitIndex; import org.neo4j.kernel.api.ExplicitIndexHits; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.impl.index.collector.DocValuesCollector; import org.neo4j.kernel.impl.util.IoPrimitiveUtils; import org.neo4j.kernel.impl.util.Validators; diff --git a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/ReadOnlyIndexReferenceFactory.java b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/ReadOnlyIndexReferenceFactory.java index 22f25ed0cafd3..4172c2e8fc6df 100644 --- a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/ReadOnlyIndexReferenceFactory.java +++ b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/ReadOnlyIndexReferenceFactory.java @@ -26,7 +26,7 @@ import java.io.File; import java.io.IOException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; public class ReadOnlyIndexReferenceFactory extends IndexReferenceFactory { diff --git a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/WritableIndexReferenceFactory.java b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/WritableIndexReferenceFactory.java index 21e56f495b688..49b8fa9ffa707 100644 --- a/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/WritableIndexReferenceFactory.java +++ b/community/lucene-index/src/main/java/org/neo4j/index/impl/lucene/explicit/WritableIndexReferenceFactory.java @@ -33,7 +33,7 @@ import java.io.IOException; import java.io.UncheckedIOException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; class WritableIndexReferenceFactory extends IndexReferenceFactory { diff --git a/community/lucene-index/src/test/java/org/neo4j/kernel/impl/api/OperationsFacadeSchemaIndexIteratorTest.java b/community/lucene-index/src/test/java/org/neo4j/kernel/impl/api/OperationsFacadeSchemaIndexIteratorTest.java index 56f23f4b391ec..798ede7270d19 100644 --- a/community/lucene-index/src/test/java/org/neo4j/kernel/impl/api/OperationsFacadeSchemaIndexIteratorTest.java +++ b/community/lucene-index/src/test/java/org/neo4j/kernel/impl/api/OperationsFacadeSchemaIndexIteratorTest.java @@ -39,9 +39,9 @@ import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Transaction; import org.neo4j.internal.kernel.api.IndexQuery; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotApplicableKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException; 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 b39063a94b33c..b47f5a36d29ae 100644 --- a/community/neo4j/src/test/java/org/neo4j/locking/QueryExecutionLocksIT.java +++ b/community/neo4j/src/test/java/org/neo4j/locking/QueryExecutionLocksIT.java @@ -46,6 +46,8 @@ import org.neo4j.graphdb.PropertyContainer; import org.neo4j.graphdb.Transaction; import org.neo4j.internal.kernel.api.IndexQuery; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.internal.kernel.api.security.SecurityContext; import org.neo4j.kernel.GraphDatabaseQueryService; import org.neo4j.kernel.api.ExplicitIndexHits; @@ -53,12 +55,10 @@ import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.dbms.DbmsOperations; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.LabelNotFoundKernelException; import org.neo4j.kernel.api.exceptions.ProcedureException; import org.neo4j.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException; import org.neo4j.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException; -import org.neo4j.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotApplicableKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.schema.IndexBrokenKernelException; diff --git a/enterprise/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_4/codegen/Templates.scala b/enterprise/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_4/codegen/Templates.scala index 47e7f5cd91002..4fee10d444ec8 100644 --- a/enterprise/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_4/codegen/Templates.scala +++ b/enterprise/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_4/codegen/Templates.scala @@ -38,8 +38,7 @@ import org.neo4j.cypher.internal.util.v3_4.{CypherExecutionException, TaskCloser import org.neo4j.cypher.internal.v3_4.codegen.QueryExecutionTracer import org.neo4j.graphdb.Direction import org.neo4j.internal.kernel.api.TokenNameLookup -import org.neo4j.internal.kernel.api.exceptions.KernelException -import org.neo4j.kernel.api.exceptions.EntityNotFoundException +import org.neo4j.internal.kernel.api.exceptions.{EntityNotFoundException, KernelException} import org.neo4j.kernel.api.{ReadOperations, StatementTokenNameLookup} import org.neo4j.kernel.impl.api.RelationshipDataExtractor import org.neo4j.kernel.impl.core.NodeManager diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java index e37d80dc91843..eb7b8adcaab23 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java @@ -58,6 +58,7 @@ import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.helpers.HostnamePort; import org.neo4j.helpers.NamedThreadFactory; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.internal.kernel.api.exceptions.KernelException; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.pagecache.PageCache; @@ -65,7 +66,6 @@ import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.api.InwardKernel; import org.neo4j.kernel.api.bolt.BoltConnectionTracker; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.configuration.Settings; import org.neo4j.kernel.configuration.ssl.SslPolicyLoader; diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/api/ConstraintHaIT.java b/enterprise/ha/src/test/java/org/neo4j/kernel/api/ConstraintHaIT.java index 46121fd5f41a2..ef1ecadedfcf3 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/api/ConstraintHaIT.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/api/ConstraintHaIT.java @@ -38,10 +38,10 @@ import org.neo4j.graphdb.schema.IndexDefinition; import org.neo4j.helpers.Exceptions; import org.neo4j.helpers.collection.Iterables; +import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.ConstraintHaIT.NodePropertyExistenceConstraintHaIT; import org.neo4j.kernel.api.ConstraintHaIT.RelationshipPropertyExistenceConstraintHaIT; import org.neo4j.kernel.api.ConstraintHaIT.UniquenessConstraintHaIT; -import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.ha.HaSettings; import org.neo4j.kernel.ha.HighlyAvailableGraphDatabase; import org.neo4j.kernel.impl.coreapi.schema.NodePropertyExistenceConstraintDefinition; diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/ClusterLocksIT.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/ClusterLocksIT.java index 217b27c2f3b0b..bc05d27852255 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/ClusterLocksIT.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/ClusterLocksIT.java @@ -34,8 +34,8 @@ import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.TransactionTerminatedException; import org.neo4j.helpers.collection.Iterables; +import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.DeadlockDetectedException; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.ha.HaSettings; import org.neo4j.kernel.ha.HighlyAvailableGraphDatabase; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory;