Skip to content

Commit

Permalink
Use primitive long diff set for index state diffs
Browse files Browse the repository at this point in the history
  • Loading branch information
MishaDemianenko committed Jan 9, 2018
1 parent deec9de commit 66f4d22
Show file tree
Hide file tree
Showing 18 changed files with 804 additions and 561 deletions.
Expand Up @@ -102,6 +102,7 @@
import org.neo4j.storageengine.api.schema.IndexReader;
import org.neo4j.storageengine.api.schema.PopulationProgress;
import org.neo4j.storageengine.api.txstate.NodeState;
import org.neo4j.storageengine.api.txstate.PrimitiveLongReadableDiffSets;
import org.neo4j.storageengine.api.txstate.ReadableDiffSets;
import org.neo4j.values.storable.Value;
import org.neo4j.values.storable.ValueTuple;
Expand Down Expand Up @@ -947,7 +948,7 @@ private PrimitiveLongResourceIterator filterIndexStateChangesForScan(
{
if ( state.hasTxStateWithChanges() )
{
ReadableDiffSets<Long> labelPropertyChanges =
PrimitiveLongReadableDiffSets labelPropertyChanges =
state.txState().indexUpdatesForScan( index );
ReadableDiffSets<Long> nodes = state.txState().addedAndRemovedNodes();

Expand All @@ -963,7 +964,7 @@ private PrimitiveLongResourceIterator filterIndexStateChangesForSeek(
{
if ( state.hasTxStateWithChanges() )
{
ReadableDiffSets<Long> labelPropertyChanges =
PrimitiveLongReadableDiffSets labelPropertyChanges =
state.txState().indexUpdatesForSeek( index, propertyValues );
ReadableDiffSets<Long> nodes = state.txState().addedAndRemovedNodes();

Expand All @@ -981,10 +982,10 @@ private PrimitiveLongResourceIterator filterIndexStateChangesForRangeSeekByNumbe
{
if ( state.hasTxStateWithChanges() )
{
ReadableDiffSets<Long> labelPropertyChangesForNumber =
state.txState().indexUpdatesForRangeSeekByNumber(
index, lower, includeLower, upper, includeUpper );
ReadableDiffSets<Long> nodes = state.txState().addedAndRemovedNodes();
TransactionState txState = state.txState();
PrimitiveLongReadableDiffSets labelPropertyChangesForNumber =
txState.indexUpdatesForRangeSeekByNumber( index, lower, includeLower, upper, includeUpper );
ReadableDiffSets<Long> nodes = txState.addedAndRemovedNodes();

// Apply to actual index lookup
return nodes.augmentWithRemovals( labelPropertyChangesForNumber.augment( nodeIds ) );
Expand All @@ -1001,10 +1002,10 @@ private PrimitiveLongResourceIterator filterIndexStateChangesForRangeSeekByStrin
{
if ( state.hasTxStateWithChanges() )
{
ReadableDiffSets<Long> labelPropertyChangesForString =
state.txState().indexUpdatesForRangeSeekByString(
TransactionState txState = state.txState();
PrimitiveLongReadableDiffSets labelPropertyChangesForString = txState.indexUpdatesForRangeSeekByString(
index, lower, includeLower, upper, includeUpper );
ReadableDiffSets<Long> nodes = state.txState().addedAndRemovedNodes();
ReadableDiffSets<Long> nodes = txState.addedAndRemovedNodes();

// Apply to actual index lookup
return nodes.augmentWithRemovals( labelPropertyChangesForString.augment( nodeIds ) );
Expand All @@ -1020,9 +1021,10 @@ private PrimitiveLongResourceIterator filterIndexStateChangesForRangeSeekByPrefi
{
if ( state.hasTxStateWithChanges() )
{
ReadableDiffSets<Long> labelPropertyChangesForPrefix =
state.txState().indexUpdatesForRangeSeekByPrefix( index, prefix );
ReadableDiffSets<Long> nodes = state.txState().addedAndRemovedNodes();
TransactionState txState = state.txState();
PrimitiveLongReadableDiffSets labelPropertyChangesForPrefix =
txState.indexUpdatesForRangeSeekByPrefix( index, prefix );
ReadableDiffSets<Long> nodes = txState.addedAndRemovedNodes();

// Apply to actual index lookup
return nodes.augmentWithRemovals( labelPropertyChangesForPrefix.augment( nodeIds ) );
Expand Down
Expand Up @@ -19,8 +19,7 @@
*/
package org.neo4j.kernel.impl.api.state;

import java.util.Collections;
import java.util.IdentityHashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

Expand All @@ -31,6 +30,7 @@
import org.neo4j.internal.kernel.api.exceptions.schema.ConstraintValidationException;
import org.neo4j.kernel.impl.api.state.RelationshipChangesForNode.DiffStrategy;
import org.neo4j.kernel.impl.util.diffsets.DiffSets;
import org.neo4j.kernel.impl.util.diffsets.PrimitiveLongDiffSets;
import org.neo4j.storageengine.api.Direction;
import org.neo4j.storageengine.api.StorageProperty;
import org.neo4j.storageengine.api.txstate.NodeState;
Expand All @@ -45,7 +45,8 @@ public class NodeStateImpl extends PropertyContainerStateImpl implements NodeSta
private DiffSets<Integer> labelDiffSets;
private RelationshipChangesForNode relationshipsAdded;
private RelationshipChangesForNode relationshipsRemoved;
private Set<DiffSets<Long>> indexDiffs; // TODO: does this really fill any function?

private Set<PrimitiveLongDiffSets> indexDiffs;
private final TxState state;

NodeStateImpl( long id, TxState state )
Expand Down Expand Up @@ -176,16 +177,16 @@ public PrimitiveIntSet relationshipTypes()
return intSet();
}

void addIndexDiff( DiffSets<Long> diff )
void addIndexDiff( PrimitiveLongDiffSets diff )
{
if ( indexDiffs == null )
{
indexDiffs = Collections.newSetFromMap( new IdentityHashMap<DiffSets<Long>, Boolean>() );
indexDiffs = new HashSet<>();
}
indexDiffs.add( diff );
}

void removeIndexDiff( DiffSets<Long> diff )
void removeIndexDiff( PrimitiveLongDiffSets diff )
{
if ( indexDiffs != null )
{
Expand All @@ -197,7 +198,7 @@ void clearIndexDiffs( long nodeId )
{
if ( indexDiffs != null )
{
for ( DiffSets<Long> diff : indexDiffs )
for ( PrimitiveLongDiffSets diff : indexDiffs )
{
if ( diff.getAdded().contains( nodeId ) )
{
Expand Down

0 comments on commit 66f4d22

Please sign in to comment.