Skip to content

Commit

Permalink
Remove code for transactionally creating/dropping procedures.
Browse files Browse the repository at this point in the history
- Keeps ProcedureSignature and friends, as well as the getProcedure
  primitive
  • Loading branch information
jakewins committed Jan 7, 2016
1 parent 298d531 commit 61bb655
Show file tree
Hide file tree
Showing 30 changed files with 46 additions and 748 deletions.
Expand Up @@ -490,7 +490,6 @@ public void start() throws IOException
dependencies.satisfyDependency( storageEngine.labelScanStore() ); dependencies.satisfyDependency( storageEngine.labelScanStore() );
dependencies.satisfyDependency( storageEngine.metaDataStore() ); dependencies.satisfyDependency( storageEngine.metaDataStore() );
dependencies.satisfyDependency( storageEngine.neoStores() ); dependencies.satisfyDependency( storageEngine.neoStores() );
dependencies.satisfyDependency( storageEngine.procedureCache() );
dependencies.satisfyDependency( storageEngine.schemaIndexProviderMap() ); dependencies.satisfyDependency( storageEngine.schemaIndexProviderMap() );
dependencies.satisfyDependency( storageEngine.legacyIndexApplierLookup() ); dependencies.satisfyDependency( storageEngine.legacyIndexApplierLookup() );
dependencies.satisfyDependency( storageEngine.storeReadLayer() ); dependencies.satisfyDependency( storageEngine.storeReadLayer() );
Expand Down
Expand Up @@ -30,7 +30,6 @@
import org.neo4j.kernel.api.exceptions.schema.SchemaRuleNotFoundException; import org.neo4j.kernel.api.exceptions.schema.SchemaRuleNotFoundException;
import org.neo4j.kernel.api.index.IndexDescriptor; import org.neo4j.kernel.api.index.IndexDescriptor;
import org.neo4j.kernel.api.index.InternalIndexState; import org.neo4j.kernel.api.index.InternalIndexState;
import org.neo4j.storageengine.api.procedure.ProcedureDescriptor;
import org.neo4j.storageengine.api.procedure.ProcedureSignature; import org.neo4j.storageengine.api.procedure.ProcedureSignature;
import org.neo4j.storageengine.api.procedure.ProcedureSignature.ProcedureName; import org.neo4j.storageengine.api.procedure.ProcedureSignature.ProcedureName;
import org.neo4j.storageengine.api.schema.IndexPopulationProgress; import org.neo4j.storageengine.api.schema.IndexPopulationProgress;
Expand Down Expand Up @@ -107,9 +106,6 @@ IndexDescriptor uniqueIndexGetForLabelAndPropertyKey( int labelId, int propertyK
*/ */
Long indexGetOwningUniquenessConstraintId( IndexDescriptor index ) throws SchemaRuleNotFoundException; Long indexGetOwningUniquenessConstraintId( IndexDescriptor index ) throws SchemaRuleNotFoundException;


/** Get all procedures defined in the system */
Iterator<ProcedureSignature> proceduresGetAll();

/** Fetch a procedure given its signature. */ /** Fetch a procedure given its signature. */
ProcedureDescriptor procedureGet( ProcedureName name ) throws ProcedureException; ProcedureSignature procedureGet( ProcedureName name ) throws ProcedureException;
} }
Expand Up @@ -24,16 +24,12 @@
import org.neo4j.kernel.api.constraints.RelationshipPropertyConstraint; import org.neo4j.kernel.api.constraints.RelationshipPropertyConstraint;
import org.neo4j.kernel.api.constraints.RelationshipPropertyExistenceConstraint; import org.neo4j.kernel.api.constraints.RelationshipPropertyExistenceConstraint;
import org.neo4j.kernel.api.constraints.UniquenessConstraint; import org.neo4j.kernel.api.constraints.UniquenessConstraint;
import org.neo4j.kernel.api.exceptions.ProcedureException;
import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException; import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException;
import org.neo4j.kernel.api.exceptions.schema.AlreadyIndexedException; import org.neo4j.kernel.api.exceptions.schema.AlreadyIndexedException;
import org.neo4j.kernel.api.exceptions.schema.CreateConstraintFailureException; import org.neo4j.kernel.api.exceptions.schema.CreateConstraintFailureException;
import org.neo4j.kernel.api.exceptions.schema.DropConstraintFailureException; import org.neo4j.kernel.api.exceptions.schema.DropConstraintFailureException;
import org.neo4j.kernel.api.exceptions.schema.DropIndexFailureException; import org.neo4j.kernel.api.exceptions.schema.DropIndexFailureException;
import org.neo4j.kernel.api.exceptions.schema.ProcedureConstraintViolation;
import org.neo4j.kernel.api.index.IndexDescriptor; import org.neo4j.kernel.api.index.IndexDescriptor;
import org.neo4j.storageengine.api.procedure.ProcedureSignature;
import org.neo4j.storageengine.api.procedure.ProcedureSignature.ProcedureName;


interface SchemaWrite interface SchemaWrite
{ {
Expand Down Expand Up @@ -65,17 +61,4 @@ RelationshipPropertyExistenceConstraint relationshipPropertyExistenceConstraintC
* That external job should become an internal job, at which point this operation should go away. * That external job should become an internal job, at which point this operation should go away.
*/ */
void uniqueIndexDrop( IndexDescriptor descriptor ) throws DropIndexFailureException; void uniqueIndexDrop( IndexDescriptor descriptor ) throws DropIndexFailureException;

/**
* @param signature the namespace, name, typed inputs and typed outputs
* @param language named procedure language, eg "js"
* @param body the procedure code, format is language-handler specific
*/
void procedureCreate( ProcedureSignature signature, String language, String body ) throws ProcedureException, ProcedureConstraintViolation;

/**
* Drop a procedure from the database.
* @param name
*/
void procedureDrop( ProcedureName name ) throws ProcedureConstraintViolation, ProcedureException;
} }
Expand Up @@ -27,8 +27,6 @@
import org.neo4j.kernel.api.index.IndexDescriptor; import org.neo4j.kernel.api.index.IndexDescriptor;
import org.neo4j.kernel.api.properties.DefinedProperty; import org.neo4j.kernel.api.properties.DefinedProperty;
import org.neo4j.kernel.api.properties.Property; import org.neo4j.kernel.api.properties.Property;
import org.neo4j.storageengine.api.procedure.ProcedureDescriptor;
import org.neo4j.storageengine.api.procedure.ProcedureSignature;
import org.neo4j.storageengine.api.txstate.ReadableTransactionState; import org.neo4j.storageengine.api.txstate.ReadableTransactionState;


/** /**
Expand Down Expand Up @@ -103,8 +101,4 @@ void relationshipDoReplaceProperty( long relationshipId,
boolean constraintIndexDoUnRemove( IndexDescriptor index ); boolean constraintIndexDoUnRemove( IndexDescriptor index );


void indexDoUpdateProperty( IndexDescriptor descriptor, long nodeId, DefinedProperty before, DefinedProperty after ); void indexDoUpdateProperty( IndexDescriptor descriptor, long nodeId, DefinedProperty before, DefinedProperty after );

void procedureDoCreate( ProcedureSignature signature, String language, String code );

void procedureDoDrop( ProcedureDescriptor name );
} }
Expand Up @@ -35,7 +35,6 @@
import org.neo4j.kernel.api.constraints.RelationshipPropertyExistenceConstraint; import org.neo4j.kernel.api.constraints.RelationshipPropertyExistenceConstraint;
import org.neo4j.kernel.api.constraints.UniquenessConstraint; import org.neo4j.kernel.api.constraints.UniquenessConstraint;
import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.EntityNotFoundException;
import org.neo4j.kernel.api.exceptions.ProcedureException;
import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException;
import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException; import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException;
import org.neo4j.kernel.api.exceptions.schema.AlreadyIndexedException; import org.neo4j.kernel.api.exceptions.schema.AlreadyIndexedException;
Expand All @@ -44,7 +43,6 @@
import org.neo4j.kernel.api.exceptions.schema.DropConstraintFailureException; import org.neo4j.kernel.api.exceptions.schema.DropConstraintFailureException;
import org.neo4j.kernel.api.exceptions.schema.DropIndexFailureException; import org.neo4j.kernel.api.exceptions.schema.DropIndexFailureException;
import org.neo4j.kernel.api.exceptions.schema.IndexBrokenKernelException; import org.neo4j.kernel.api.exceptions.schema.IndexBrokenKernelException;
import org.neo4j.kernel.api.exceptions.schema.ProcedureConstraintViolation;
import org.neo4j.kernel.api.exceptions.schema.UnableToValidateConstraintKernelException; import org.neo4j.kernel.api.exceptions.schema.UnableToValidateConstraintKernelException;
import org.neo4j.kernel.api.exceptions.schema.UniquePropertyConstraintViolationKernelException; import org.neo4j.kernel.api.exceptions.schema.UniquePropertyConstraintViolationKernelException;
import org.neo4j.kernel.api.index.IndexDescriptor; import org.neo4j.kernel.api.index.IndexDescriptor;
Expand All @@ -62,7 +60,6 @@
import org.neo4j.storageengine.api.LabelItem; import org.neo4j.storageengine.api.LabelItem;
import org.neo4j.storageengine.api.NodeItem; import org.neo4j.storageengine.api.NodeItem;
import org.neo4j.storageengine.api.RelationshipItem; import org.neo4j.storageengine.api.RelationshipItem;
import org.neo4j.storageengine.api.procedure.ProcedureSignature;


import static org.neo4j.kernel.api.StatementConstants.NO_SUCH_NODE; import static org.neo4j.kernel.api.StatementConstants.NO_SUCH_NODE;
import static org.neo4j.kernel.impl.locking.ResourceTypes.INDEX_ENTRY; import static org.neo4j.kernel.impl.locking.ResourceTypes.INDEX_ENTRY;
Expand Down Expand Up @@ -568,16 +565,4 @@ public void constraintDrop( KernelStatement state, RelationshipPropertyConstrain
schemaWriteOperations.constraintDrop( state, constraint ); schemaWriteOperations.constraintDrop( state, constraint );
} }


@Override
public void procedureCreate( KernelStatement state, ProcedureSignature signature, String language, String code )
throws ProcedureException, ProcedureConstraintViolation
{
schemaWriteOperations.procedureCreate( state, signature, language, code );
}

@Override
public void procedureDrop( KernelStatement statement, ProcedureSignature.ProcedureName name ) throws ProcedureConstraintViolation, ProcedureException
{
schemaWriteOperations.procedureDrop( statement, name );
}
} }
Expand Up @@ -29,7 +29,6 @@
import org.neo4j.kernel.api.constraints.RelationshipPropertyConstraint; import org.neo4j.kernel.api.constraints.RelationshipPropertyConstraint;
import org.neo4j.kernel.api.constraints.RelationshipPropertyExistenceConstraint; import org.neo4j.kernel.api.constraints.RelationshipPropertyExistenceConstraint;
import org.neo4j.kernel.api.constraints.UniquenessConstraint; import org.neo4j.kernel.api.constraints.UniquenessConstraint;
import org.neo4j.kernel.api.exceptions.ProcedureException;
import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException; import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException;
import org.neo4j.kernel.api.exceptions.schema.AlreadyIndexedException; import org.neo4j.kernel.api.exceptions.schema.AlreadyIndexedException;
import org.neo4j.kernel.api.exceptions.schema.CreateConstraintFailureException; import org.neo4j.kernel.api.exceptions.schema.CreateConstraintFailureException;
Expand All @@ -39,14 +38,12 @@
import org.neo4j.kernel.api.exceptions.schema.IndexBelongsToConstraintException; import org.neo4j.kernel.api.exceptions.schema.IndexBelongsToConstraintException;
import org.neo4j.kernel.api.exceptions.schema.NoSuchConstraintException; import org.neo4j.kernel.api.exceptions.schema.NoSuchConstraintException;
import org.neo4j.kernel.api.exceptions.schema.NoSuchIndexException; import org.neo4j.kernel.api.exceptions.schema.NoSuchIndexException;
import org.neo4j.kernel.api.exceptions.schema.ProcedureConstraintViolation;
import org.neo4j.kernel.api.exceptions.schema.TooManyLabelsException; import org.neo4j.kernel.api.exceptions.schema.TooManyLabelsException;
import org.neo4j.kernel.api.exceptions.schema.SchemaKernelException.OperationContext; import org.neo4j.kernel.api.exceptions.schema.SchemaKernelException.OperationContext;
import org.neo4j.kernel.api.index.IndexDescriptor; import org.neo4j.kernel.api.index.IndexDescriptor;
import org.neo4j.kernel.impl.api.operations.KeyWriteOperations; import org.neo4j.kernel.impl.api.operations.KeyWriteOperations;
import org.neo4j.kernel.impl.api.operations.SchemaReadOperations; import org.neo4j.kernel.impl.api.operations.SchemaReadOperations;
import org.neo4j.kernel.impl.api.operations.SchemaWriteOperations; import org.neo4j.kernel.impl.api.operations.SchemaWriteOperations;
import org.neo4j.storageengine.api.procedure.ProcedureSignature;


import static org.neo4j.helpers.collection.IteratorUtil.loop; import static org.neo4j.helpers.collection.IteratorUtil.loop;


Expand Down Expand Up @@ -230,28 +227,6 @@ public void constraintDrop( KernelStatement state, RelationshipPropertyConstrain
schemaWriteDelegate.constraintDrop( state, constraint ); schemaWriteDelegate.constraintDrop( state, constraint );
} }


@Override
public void procedureCreate( KernelStatement state, ProcedureSignature signature, String language, String code )
throws ProcedureException, ProcedureConstraintViolation
{
if( schemaReadDelegate.procedureGet( state, signature.name() ) != null )
{
throw new ProcedureConstraintViolation("%s cannot be created because there is already a procedure with the same " +
"name in the graph.", signature.toString() );
}
schemaWriteDelegate.procedureCreate( state, signature, language, code );
}

@Override
public void procedureDrop( KernelStatement statement, ProcedureSignature.ProcedureName name ) throws ProcedureException, ProcedureConstraintViolation
{
if( schemaReadDelegate.procedureGet( statement, name ) == null )
{
throw new ProcedureConstraintViolation("%s cannot be dropped because there is no such procedure in the graph.", name );
}
schemaWriteDelegate.procedureDrop( statement, name );
}

private void checkIndexExistence( KernelStatement state, OperationContext context, int labelId, int propertyKey ) private void checkIndexExistence( KernelStatement state, OperationContext context, int labelId, int propertyKey )
throws AlreadyIndexedException, AlreadyConstrainedException throws AlreadyIndexedException, AlreadyConstrainedException
{ {
Expand Down
Expand Up @@ -31,15 +31,13 @@
import org.neo4j.kernel.api.constraints.RelationshipPropertyExistenceConstraint; import org.neo4j.kernel.api.constraints.RelationshipPropertyExistenceConstraint;
import org.neo4j.kernel.api.constraints.UniquenessConstraint; import org.neo4j.kernel.api.constraints.UniquenessConstraint;
import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.EntityNotFoundException;
import org.neo4j.kernel.api.exceptions.ProcedureException;
import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException;
import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException; import org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException;
import org.neo4j.kernel.api.exceptions.schema.AlreadyIndexedException; import org.neo4j.kernel.api.exceptions.schema.AlreadyIndexedException;
import org.neo4j.kernel.api.exceptions.schema.ConstraintValidationKernelException; import org.neo4j.kernel.api.exceptions.schema.ConstraintValidationKernelException;
import org.neo4j.kernel.api.exceptions.schema.CreateConstraintFailureException; import org.neo4j.kernel.api.exceptions.schema.CreateConstraintFailureException;
import org.neo4j.kernel.api.exceptions.schema.DropConstraintFailureException; import org.neo4j.kernel.api.exceptions.schema.DropConstraintFailureException;
import org.neo4j.kernel.api.exceptions.schema.DropIndexFailureException; import org.neo4j.kernel.api.exceptions.schema.DropIndexFailureException;
import org.neo4j.kernel.api.exceptions.schema.ProcedureConstraintViolation;
import org.neo4j.kernel.api.exceptions.schema.SchemaRuleNotFoundException; import org.neo4j.kernel.api.exceptions.schema.SchemaRuleNotFoundException;
import org.neo4j.kernel.api.index.IndexDescriptor; import org.neo4j.kernel.api.index.IndexDescriptor;
import org.neo4j.kernel.api.index.InternalIndexState; import org.neo4j.kernel.api.index.InternalIndexState;
Expand All @@ -53,15 +51,9 @@
import org.neo4j.kernel.impl.api.operations.SchemaWriteOperations; import org.neo4j.kernel.impl.api.operations.SchemaWriteOperations;
import org.neo4j.kernel.impl.locking.ResourceTypes; import org.neo4j.kernel.impl.locking.ResourceTypes;
import org.neo4j.storageengine.api.lock.ResourceType; import org.neo4j.storageengine.api.lock.ResourceType;
import org.neo4j.storageengine.api.procedure.ProcedureDescriptor;
import org.neo4j.storageengine.api.procedure.ProcedureSignature;
import org.neo4j.storageengine.api.procedure.ProcedureSignature.ProcedureName;
import org.neo4j.storageengine.api.schema.IndexPopulationProgress; import org.neo4j.storageengine.api.schema.IndexPopulationProgress;
import org.neo4j.storageengine.api.schema.SchemaRule; import org.neo4j.storageengine.api.schema.SchemaRule;


import static org.neo4j.kernel.impl.locking.ResourceTypes.PROCEDURE;
import static org.neo4j.kernel.impl.locking.ResourceTypes.SCHEMA;
import static org.neo4j.kernel.impl.locking.ResourceTypes.procedureResourceId;
import static org.neo4j.kernel.impl.locking.ResourceTypes.schemaResource; import static org.neo4j.kernel.impl.locking.ResourceTypes.schemaResource;


public class LockingStatementOperations implements public class LockingStatementOperations implements
Expand Down Expand Up @@ -410,38 +402,6 @@ public void constraintDrop( KernelStatement state, RelationshipPropertyConstrain
schemaWriteDelegate.constraintDrop( state, constraint ); schemaWriteDelegate.constraintDrop( state, constraint );
} }


@Override
public void procedureCreate( KernelStatement state, ProcedureSignature signature, String language, String code )
throws ProcedureException, ProcedureConstraintViolation
{
// TODO: Document locking logic
// In order to keep other processes from creating procedures with conflicting names, we lock the procedure
// name. We don't exclusively lock the schema, since creating a new procedure will not influence any running
// operation.
state.locks().acquireExclusive( PROCEDURE, procedureResourceId( signature.name() ) );
schemaWriteDelegate.procedureCreate( state, signature, language, code );
}

@Override
public void procedureDrop( KernelStatement state, ProcedureName name ) throws ProcedureConstraintViolation, ProcedureException
{
state.locks().acquireExclusive( SCHEMA, schemaResource() );
state.locks().acquireExclusive( PROCEDURE, procedureResourceId( name ) );
schemaWriteDelegate.procedureDrop( state, name );
}

@Override
public Iterator<ProcedureDescriptor> proceduresGetAll( KernelStatement statement )
{
return schemaReadDelegate.proceduresGetAll( statement );
}

@Override
public ProcedureDescriptor procedureGet( KernelStatement statement, ProcedureName signature ) throws ProcedureException
{
return schemaReadDelegate.procedureGet( statement, signature );
}

@Override @Override
public Property nodeSetProperty( KernelStatement state, long nodeId, DefinedProperty property ) public Property nodeSetProperty( KernelStatement state, long nodeId, DefinedProperty property )
throws ConstraintValidationKernelException, EntityNotFoundException throws ConstraintValidationKernelException, EntityNotFoundException
Expand Down
Expand Up @@ -56,7 +56,6 @@
import org.neo4j.kernel.api.exceptions.schema.IllegalTokenNameException; import org.neo4j.kernel.api.exceptions.schema.IllegalTokenNameException;
import org.neo4j.kernel.api.exceptions.schema.IndexBrokenKernelException; import org.neo4j.kernel.api.exceptions.schema.IndexBrokenKernelException;
import org.neo4j.kernel.api.exceptions.schema.IndexSchemaRuleNotFoundException; import org.neo4j.kernel.api.exceptions.schema.IndexSchemaRuleNotFoundException;
import org.neo4j.kernel.api.exceptions.schema.ProcedureConstraintViolation;
import org.neo4j.kernel.api.exceptions.schema.SchemaRuleNotFoundException; import org.neo4j.kernel.api.exceptions.schema.SchemaRuleNotFoundException;
import org.neo4j.kernel.api.exceptions.schema.TooManyLabelsException; import org.neo4j.kernel.api.exceptions.schema.TooManyLabelsException;
import org.neo4j.kernel.api.index.IndexDescriptor; import org.neo4j.kernel.api.index.IndexDescriptor;
Expand All @@ -78,13 +77,10 @@
import org.neo4j.storageengine.api.RelationshipItem; import org.neo4j.storageengine.api.RelationshipItem;
import org.neo4j.storageengine.api.Token; import org.neo4j.storageengine.api.Token;
import org.neo4j.storageengine.api.lock.ResourceType; import org.neo4j.storageengine.api.lock.ResourceType;
import org.neo4j.storageengine.api.procedure.ProcedureDescriptor;
import org.neo4j.storageengine.api.procedure.ProcedureSignature; import org.neo4j.storageengine.api.procedure.ProcedureSignature;
import org.neo4j.storageengine.api.procedure.ProcedureSignature.ProcedureName; import org.neo4j.storageengine.api.procedure.ProcedureSignature.ProcedureName;
import org.neo4j.storageengine.api.schema.IndexPopulationProgress; import org.neo4j.storageengine.api.schema.IndexPopulationProgress;


import static org.neo4j.helpers.collection.Iterables.map;

public class OperationsFacade implements ReadOperations, DataWriteOperations, SchemaWriteOperations public class OperationsFacade implements ReadOperations, DataWriteOperations, SchemaWriteOperations
{ {
final KernelStatement statement; final KernelStatement statement;
Expand Down Expand Up @@ -636,26 +632,9 @@ public Long indexGetOwningUniquenessConstraintId( IndexDescriptor index ) throws
} }


@Override @Override
public Iterator<ProcedureSignature> proceduresGetAll() public ProcedureSignature procedureGet( ProcedureName signature ) throws ProcedureException
{
statement.assertOpen();
// There is a mapping layer here because "inside" the kernel we use the definition object, rather than the signature,
// but we prefer to avoid leaking that outside the kernel.
return map( new Function<ProcedureDescriptor,ProcedureSignature>()
{
@Override
public ProcedureSignature apply( ProcedureDescriptor o )
{
return o.signature();
}
}, schemaRead().proceduresGetAll( statement ) );
}

@Override
public ProcedureDescriptor procedureGet( ProcedureName signature ) throws ProcedureException
{ {
statement.assertOpen(); throw new UnsupportedOperationException();
return schemaRead().procedureGet( statement, signature );
} }


@Override @Override
Expand Down Expand Up @@ -1022,20 +1001,6 @@ public void uniqueIndexDrop( IndexDescriptor descriptor ) throws DropIndexFailur
schemaWrite().uniqueIndexDrop( statement, descriptor ); schemaWrite().uniqueIndexDrop( statement, descriptor );
} }


@Override
public void procedureCreate( ProcedureSignature signature, String language, String body )
throws ProcedureException, ProcedureConstraintViolation
{
statement.assertOpen();
schemaWrite().procedureCreate( statement, signature, language, body );
}

@Override
public void procedureDrop( ProcedureName name ) throws ProcedureConstraintViolation, ProcedureException
{
statement.assertOpen();
schemaWrite().procedureDrop( statement, name );
}
// </SchemaWrite> // </SchemaWrite>


// <Locking> // <Locking>
Expand Down
Expand Up @@ -42,7 +42,6 @@
import org.neo4j.kernel.api.constraints.UniquenessConstraint; import org.neo4j.kernel.api.constraints.UniquenessConstraint;
import org.neo4j.kernel.api.exceptions.EntityNotFoundException; import org.neo4j.kernel.api.exceptions.EntityNotFoundException;
import org.neo4j.kernel.api.exceptions.LabelNotFoundKernelException; 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.PropertyKeyIdNotFoundKernelException;
import org.neo4j.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException; import org.neo4j.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException;
import org.neo4j.kernel.api.exceptions.TransactionFailureException; import org.neo4j.kernel.api.exceptions.TransactionFailureException;
Expand All @@ -56,7 +55,6 @@
import org.neo4j.kernel.api.exceptions.schema.DropIndexFailureException; import org.neo4j.kernel.api.exceptions.schema.DropIndexFailureException;
import org.neo4j.kernel.api.exceptions.schema.IllegalTokenNameException; import org.neo4j.kernel.api.exceptions.schema.IllegalTokenNameException;
import org.neo4j.kernel.api.exceptions.schema.IndexBrokenKernelException; import org.neo4j.kernel.api.exceptions.schema.IndexBrokenKernelException;
import org.neo4j.kernel.api.exceptions.schema.ProcedureConstraintViolation;
import org.neo4j.kernel.api.exceptions.schema.SchemaRuleNotFoundException; import org.neo4j.kernel.api.exceptions.schema.SchemaRuleNotFoundException;
import org.neo4j.kernel.api.exceptions.schema.TooManyLabelsException; import org.neo4j.kernel.api.exceptions.schema.TooManyLabelsException;
import org.neo4j.kernel.api.index.IndexDescriptor; import org.neo4j.kernel.api.index.IndexDescriptor;
Expand Down Expand Up @@ -90,9 +88,6 @@
import org.neo4j.storageengine.api.StorageStatement; import org.neo4j.storageengine.api.StorageStatement;
import org.neo4j.storageengine.api.StoreReadLayer; import org.neo4j.storageengine.api.StoreReadLayer;
import org.neo4j.storageengine.api.Token; import org.neo4j.storageengine.api.Token;
import org.neo4j.storageengine.api.procedure.ProcedureDescriptor;
import org.neo4j.storageengine.api.procedure.ProcedureSignature;
import org.neo4j.storageengine.api.procedure.ProcedureSignature.ProcedureName;
import org.neo4j.storageengine.api.schema.IndexPopulationProgress; import org.neo4j.storageengine.api.schema.IndexPopulationProgress;
import org.neo4j.storageengine.api.schema.IndexReader; import org.neo4j.storageengine.api.schema.IndexReader;
import org.neo4j.storageengine.api.schema.SchemaRule; import org.neo4j.storageengine.api.schema.SchemaRule;
Expand Down Expand Up @@ -647,41 +642,6 @@ public void constraintDrop( KernelStatement state, RelationshipPropertyConstrain
state.txState().constraintDoDrop( constraint ); state.txState().constraintDoDrop( constraint );
} }


@Override
public void procedureCreate( KernelStatement state, ProcedureSignature signature, String language, String code )
{
state.txState().procedureDoCreate( signature, language, code );
}

@Override
public void procedureDrop( KernelStatement statement, ProcedureName name ) throws ProcedureException, ProcedureConstraintViolation
{
statement.txState().procedureDoDrop( procedureGet( statement, name ) );
}

@Override
public Iterator<ProcedureDescriptor> proceduresGetAll( KernelStatement statement )
{
Iterator<ProcedureDescriptor> procs = storeLayer.proceduresGetAll();
return statement.hasTxStateWithChanges() ? statement.txState().augmentProcedures( procs ) : procs;
}

@Override
public ProcedureDescriptor procedureGet( KernelStatement statement, ProcedureName name )
throws ProcedureException
{
if(statement.hasTxStateWithChanges())
{
TransactionState state = statement.txState();
ProcedureDescriptor procedure = state.getProcedure( name );
if( procedure != null )
{
return procedure;
}
}
return storeLayer.procedureGet( name );
}

@Override @Override
public IndexDescriptor indexGetForLabelAndPropertyKey( KernelStatement state, int labelId, int propertyKey ) public IndexDescriptor indexGetForLabelAndPropertyKey( KernelStatement state, int labelId, int propertyKey )
{ {
Expand Down

0 comments on commit 61bb655

Please sign in to comment.