Skip to content

Commit

Permalink
Rename PrimitiveLongDiffSets
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrei Koval committed May 16, 2018
1 parent ad38481 commit 805b0a5
Show file tree
Hide file tree
Showing 13 changed files with 145 additions and 146 deletions.
Expand Up @@ -33,7 +33,7 @@
import org.neo4j.kernel.impl.api.state.RelationshipChangesForNode.DiffStrategy;
import org.neo4j.kernel.impl.newapi.RelationshipDirection;
import org.neo4j.kernel.impl.util.diffsets.DiffSets;
import org.neo4j.kernel.impl.util.diffsets.PrimitiveLongDiffSets;
import org.neo4j.kernel.impl.util.diffsets.MutableLongDiffSets;
import org.neo4j.storageengine.api.Direction;
import org.neo4j.storageengine.api.StorageProperty;
import org.neo4j.storageengine.api.txstate.NodeState;
Expand Down Expand Up @@ -187,7 +187,7 @@ public LongIterator getAddedRelationships( RelationshipDirection direction, int
private RelationshipChangesForNode relationshipsAdded;
private RelationshipChangesForNode relationshipsRemoved;

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

NodeStateImpl( long id, TxState state )
Expand Down Expand Up @@ -332,16 +332,16 @@ public IntSet relationshipTypes()
return new IntHashSet();
}

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

void removeIndexDiff( PrimitiveLongDiffSets diff )
void removeIndexDiff( MutableLongDiffSets diff )
{
if ( indexDiffs != null )
{
Expand All @@ -353,7 +353,7 @@ void clearIndexDiffs( long nodeId )
{
if ( indexDiffs != null )
{
for ( PrimitiveLongDiffSets diff : indexDiffs )
for ( MutableLongDiffSets diff : indexDiffs )
{
if ( diff.getAdded().contains( nodeId ) )
{
Expand Down
Expand Up @@ -60,16 +60,16 @@
import org.neo4j.kernel.impl.util.collection.CollectionsFactory;
import org.neo4j.kernel.impl.util.collection.OnHeapCollectionsFactory;
import org.neo4j.kernel.impl.util.diffsets.DiffSets;
import org.neo4j.kernel.impl.util.diffsets.PrimitiveLongDiffSets;
import org.neo4j.kernel.impl.util.diffsets.MutableLongDiffSets;
import org.neo4j.kernel.impl.util.diffsets.RelationshipDiffSets;
import org.neo4j.storageengine.api.Direction;
import org.neo4j.storageengine.api.NodeItem;
import org.neo4j.storageengine.api.PropertyItem;
import org.neo4j.storageengine.api.RelationshipItem;
import org.neo4j.storageengine.api.StorageProperty;
import org.neo4j.storageengine.api.txstate.DiffSetsVisitor;
import org.neo4j.storageengine.api.txstate.LongDiffSets;
import org.neo4j.storageengine.api.txstate.NodeState;
import org.neo4j.storageengine.api.txstate.PrimitiveLongReadableDiffSets;
import org.neo4j.storageengine.api.txstate.PropertyContainerState;
import org.neo4j.storageengine.api.txstate.ReadableDiffSets;
import org.neo4j.storageengine.api.txstate.ReadableRelationshipDiffSets;
Expand Down Expand Up @@ -121,7 +121,7 @@ public class TxState implements TransactionState, RelationshipVisitor.Home

private MutableObjectLongMap<IndexBackedConstraintDescriptor> createdConstraintIndexesByConstraint;

private Map<SchemaDescriptor,Map<ValueTuple,PrimitiveLongDiffSets>> indexUpdates;
private Map<SchemaDescriptor, Map<ValueTuple, MutableLongDiffSets>> indexUpdates;

private InstanceCache<TxSingleNodeCursor> singleNodeCursor;
private InstanceCache<TxIteratorRelationshipCursor> iteratorRelationshipCursor;
Expand Down Expand Up @@ -991,19 +991,19 @@ public Long indexCreatedForConstraint( ConstraintDescriptor constraint )
}

@Override
public PrimitiveLongReadableDiffSets indexUpdatesForScan( SchemaIndexDescriptor descriptor )
public LongDiffSets indexUpdatesForScan( SchemaIndexDescriptor descriptor )
{
if ( indexUpdates == null )
{
return PrimitiveLongReadableDiffSets.EMPTY;
return LongDiffSets.EMPTY;
}
Map<ValueTuple, PrimitiveLongDiffSets> updates = indexUpdates.get( descriptor.schema() );
Map<ValueTuple, MutableLongDiffSets> updates = indexUpdates.get( descriptor.schema() );
if ( updates == null )
{
return PrimitiveLongReadableDiffSets.EMPTY;
return LongDiffSets.EMPTY;
}
PrimitiveLongDiffSets diffs = new PrimitiveLongDiffSets();
for ( PrimitiveLongDiffSets diffSet : updates.values() )
MutableLongDiffSets diffs = new MutableLongDiffSets();
for ( MutableLongDiffSets diffSet : updates.values() )
{
diffs.addAll( diffSet.getAdded().longIterator() );
diffs.removeAll( diffSet.getRemoved().longIterator() );
Expand All @@ -1012,26 +1012,26 @@ public PrimitiveLongReadableDiffSets indexUpdatesForScan( SchemaIndexDescriptor
}

@Override
public PrimitiveLongReadableDiffSets indexUpdatesForSuffixOrContains( SchemaIndexDescriptor descriptor, IndexQuery query )
public LongDiffSets indexUpdatesForSuffixOrContains( SchemaIndexDescriptor descriptor, IndexQuery query )
{
assert descriptor.schema().getPropertyIds().length == 1 :
"Suffix and contains queries are only supported for single property queries";

if ( indexUpdates == null )
{
return PrimitiveLongReadableDiffSets.EMPTY;
return LongDiffSets.EMPTY;
}
Map<ValueTuple, PrimitiveLongDiffSets> updates = indexUpdates.get( descriptor.schema() );
Map<ValueTuple, MutableLongDiffSets> updates = indexUpdates.get( descriptor.schema() );
if ( updates == null )
{
return PrimitiveLongReadableDiffSets.EMPTY;
return LongDiffSets.EMPTY;
}
PrimitiveLongDiffSets diffs = new PrimitiveLongDiffSets();
for ( Map.Entry<ValueTuple,PrimitiveLongDiffSets> entry : updates.entrySet() )
MutableLongDiffSets diffs = new MutableLongDiffSets();
for ( Map.Entry<ValueTuple, MutableLongDiffSets> entry : updates.entrySet() )
{
if ( query.acceptsValue( entry.getKey().getOnlyValue() ) )
{
PrimitiveLongDiffSets diffsets = entry.getValue();
MutableLongDiffSets diffsets = entry.getValue();
diffs.addAll( diffsets.getAdded().longIterator() );
diffs.removeAll( diffsets.getRemoved().longIterator() );
}
Expand All @@ -1040,23 +1040,23 @@ public PrimitiveLongReadableDiffSets indexUpdatesForSuffixOrContains( SchemaInde
}

@Override
public PrimitiveLongReadableDiffSets indexUpdatesForSeek( SchemaIndexDescriptor descriptor, ValueTuple values )
public LongDiffSets indexUpdatesForSeek( SchemaIndexDescriptor descriptor, ValueTuple values )
{
PrimitiveLongDiffSets indexUpdatesForSeek = getIndexUpdatesForSeek( descriptor.schema(), values, /*create=*/false );
return indexUpdatesForSeek == null ? PrimitiveLongReadableDiffSets.EMPTY : indexUpdatesForSeek;
MutableLongDiffSets indexUpdatesForSeek = getIndexUpdatesForSeek( descriptor.schema(), values, /*create=*/false );
return indexUpdatesForSeek == null ? LongDiffSets.EMPTY : indexUpdatesForSeek;
}

@Override
public PrimitiveLongReadableDiffSets indexUpdatesForRangeSeek( SchemaIndexDescriptor descriptor, ValueGroup valueGroup,
public LongDiffSets indexUpdatesForRangeSeek( SchemaIndexDescriptor descriptor, ValueGroup valueGroup,
Value lower, boolean includeLower,
Value upper, boolean includeUpper )
{
assert lower != null && upper != null : "Use Values.NO_VALUE to encode the lack of a bound";

TreeMap<ValueTuple, PrimitiveLongDiffSets> sortedUpdates = getSortedIndexUpdates( descriptor.schema() );
TreeMap<ValueTuple, MutableLongDiffSets> sortedUpdates = getSortedIndexUpdates( descriptor.schema() );
if ( sortedUpdates == null )
{
return PrimitiveLongReadableDiffSets.EMPTY;
return LongDiffSets.EMPTY;
}

ValueTuple selectedLower;
Expand Down Expand Up @@ -1090,13 +1090,13 @@ public PrimitiveLongReadableDiffSets indexUpdatesForRangeSeek( SchemaIndexDescri
return indexUpdatesForRangeSeek( sortedUpdates, selectedLower, selectedIncludeLower, selectedUpper, selectedIncludeUpper );
}

private PrimitiveLongReadableDiffSets indexUpdatesForRangeSeek( TreeMap<ValueTuple,PrimitiveLongDiffSets> sortedUpdates, ValueTuple lower,
private LongDiffSets indexUpdatesForRangeSeek( TreeMap<ValueTuple, MutableLongDiffSets> sortedUpdates, ValueTuple lower,
boolean includeLower, ValueTuple upper, boolean includeUpper )
{
PrimitiveLongDiffSets diffs = new PrimitiveLongDiffSets();
MutableLongDiffSets diffs = new MutableLongDiffSets();

Collection<PrimitiveLongDiffSets> inRange = sortedUpdates.subMap( lower, includeLower, upper, includeUpper ).values();
for ( PrimitiveLongDiffSets diffForSpecificValue : inRange )
Collection<MutableLongDiffSets> inRange = sortedUpdates.subMap( lower, includeLower, upper, includeUpper ).values();
for ( MutableLongDiffSets diffForSpecificValue : inRange )
{
diffs.addAll( diffForSpecificValue.getAdded().longIterator() );
diffs.removeAll( diffForSpecificValue.getRemoved().longIterator() );
Expand All @@ -1105,21 +1105,21 @@ private PrimitiveLongReadableDiffSets indexUpdatesForRangeSeek( TreeMap<ValueTup
}

@Override
public PrimitiveLongReadableDiffSets indexUpdatesForRangeSeekByPrefix( SchemaIndexDescriptor descriptor, String prefix )
public LongDiffSets indexUpdatesForRangeSeekByPrefix( SchemaIndexDescriptor descriptor, String prefix )
{
TreeMap<ValueTuple, PrimitiveLongDiffSets> sortedUpdates = getSortedIndexUpdates( descriptor.schema() );
TreeMap<ValueTuple, MutableLongDiffSets> sortedUpdates = getSortedIndexUpdates( descriptor.schema() );
if ( sortedUpdates == null )
{
return PrimitiveLongReadableDiffSets.EMPTY;
return LongDiffSets.EMPTY;
}
ValueTuple floor = ValueTuple.of( Values.stringValue( prefix ) );
PrimitiveLongDiffSets diffs = new PrimitiveLongDiffSets();
for ( Map.Entry<ValueTuple,PrimitiveLongDiffSets> entry : sortedUpdates.tailMap( floor ).entrySet() )
MutableLongDiffSets diffs = new MutableLongDiffSets();
for ( Map.Entry<ValueTuple, MutableLongDiffSets> entry : sortedUpdates.tailMap( floor ).entrySet() )
{
ValueTuple key = entry.getKey();
if ( ((TextValue) key.getOnlyValue()).stringValue().startsWith( prefix ) )
{
PrimitiveLongDiffSets diffSets = entry.getValue();
MutableLongDiffSets diffSets = entry.getValue();
diffs.addAll( diffSets.getAdded().longIterator() );
diffs.removeAll( diffSets.getRemoved().longIterator() );
}
Expand All @@ -1134,21 +1134,21 @@ public PrimitiveLongReadableDiffSets indexUpdatesForRangeSeekByPrefix( SchemaInd
// Ensure sorted index updates for a given index. This is needed for range query support and
// may involve converting the existing hash map first
//
private TreeMap<ValueTuple, PrimitiveLongDiffSets> getSortedIndexUpdates( SchemaDescriptor descriptor )
private TreeMap<ValueTuple, MutableLongDiffSets> getSortedIndexUpdates( SchemaDescriptor descriptor )
{
if ( indexUpdates == null )
{
return null;
}
Map<ValueTuple, PrimitiveLongDiffSets> updates = indexUpdates.get( descriptor );
Map<ValueTuple, MutableLongDiffSets> updates = indexUpdates.get( descriptor );
if ( updates == null )
{
return null;
}
TreeMap<ValueTuple,PrimitiveLongDiffSets> sortedUpdates;
TreeMap<ValueTuple, MutableLongDiffSets> sortedUpdates;
if ( updates instanceof TreeMap )
{
sortedUpdates = (TreeMap<ValueTuple,PrimitiveLongDiffSets>) updates;
sortedUpdates = (TreeMap<ValueTuple, MutableLongDiffSets>) updates;
}
else
{
Expand All @@ -1164,10 +1164,10 @@ public void indexDoUpdateEntry( SchemaDescriptor descriptor, long nodeId,
ValueTuple propertiesBefore, ValueTuple propertiesAfter )
{
NodeStateImpl nodeState = getOrCreateNodeState( nodeId );
Map<ValueTuple,PrimitiveLongDiffSets> updates = getIndexUpdatesByDescriptor( descriptor, true);
Map<ValueTuple, MutableLongDiffSets> updates = getIndexUpdatesByDescriptor( descriptor, true );
if ( propertiesBefore != null )
{
PrimitiveLongDiffSets before = getIndexUpdatesForSeek( updates, propertiesBefore, true );
MutableLongDiffSets before = getIndexUpdatesForSeek( updates, propertiesBefore, true );
//noinspection ConstantConditions
before.remove( nodeId );
if ( before.getRemoved().contains( nodeId ) )
Expand All @@ -1181,7 +1181,7 @@ public void indexDoUpdateEntry( SchemaDescriptor descriptor, long nodeId,
}
if ( propertiesAfter != null )
{
PrimitiveLongDiffSets after = getIndexUpdatesForSeek( updates, propertiesAfter, true );
MutableLongDiffSets after = getIndexUpdatesForSeek( updates, propertiesAfter, true );
//noinspection ConstantConditions
after.add( nodeId );
if ( after.getAdded().contains( nodeId ) )
Expand All @@ -1195,24 +1195,24 @@ public void indexDoUpdateEntry( SchemaDescriptor descriptor, long nodeId,
}
}

private PrimitiveLongDiffSets getIndexUpdatesForSeek(
private MutableLongDiffSets getIndexUpdatesForSeek(
SchemaDescriptor schema, ValueTuple values, boolean create )
{
Map<ValueTuple,PrimitiveLongDiffSets> updates = getIndexUpdatesByDescriptor( schema, create );
Map<ValueTuple, MutableLongDiffSets> updates = getIndexUpdatesByDescriptor( schema, create );
if ( updates != null )
{
return getIndexUpdatesForSeek( updates, values, create );
}
return null;
}

private PrimitiveLongDiffSets getIndexUpdatesForSeek( Map<ValueTuple,PrimitiveLongDiffSets> updates,
private MutableLongDiffSets getIndexUpdatesForSeek( Map<ValueTuple, MutableLongDiffSets> updates,
ValueTuple values, boolean create )
{
return create ? updates.computeIfAbsent( values, value -> new PrimitiveLongDiffSets() ) : updates.get( values );
return create ? updates.computeIfAbsent( values, value -> new MutableLongDiffSets() ) : updates.get( values );
}

private Map<ValueTuple,PrimitiveLongDiffSets> getIndexUpdatesByDescriptor( SchemaDescriptor schema,
private Map<ValueTuple, MutableLongDiffSets> getIndexUpdatesByDescriptor( SchemaDescriptor schema,
boolean create )
{
if ( indexUpdates == null )
Expand All @@ -1223,7 +1223,7 @@ private Map<ValueTuple,PrimitiveLongDiffSets> getIndexUpdatesByDescriptor( Schem
}
indexUpdates = new HashMap<>();
}
Map<ValueTuple, PrimitiveLongDiffSets> updates = indexUpdates.get( schema );
Map<ValueTuple, MutableLongDiffSets> updates = indexUpdates.get( schema );
if ( updates == null )
{
if ( !create )
Expand Down
Expand Up @@ -35,14 +35,13 @@
import org.neo4j.kernel.api.txstate.TransactionState;
import org.neo4j.storageengine.api.schema.IndexProgressor;
import org.neo4j.storageengine.api.schema.IndexProgressor.NodeValueClient;
import org.neo4j.storageengine.api.txstate.PrimitiveLongReadableDiffSets;
import org.neo4j.storageengine.api.txstate.LongDiffSets;
import org.neo4j.values.storable.Value;
import org.neo4j.values.storable.ValueCategory;
import org.neo4j.values.storable.ValueGroup;

import static java.util.Arrays.stream;
import static org.neo4j.collection.PrimitiveLongCollections.asSet;
import static org.neo4j.collection.PrimitiveLongResourceCollections.emptyIterator;
import static org.neo4j.kernel.impl.store.record.AbstractBaseRecord.NO_ID;

final class DefaultNodeValueIndexCursor extends IndexCursor<IndexProgressor>
Expand Down Expand Up @@ -243,7 +242,7 @@ private void prefixQuery( SchemaIndexDescriptor descriptor, IndexQuery.StringPre
if ( read.hasTxStateWithChanges() )
{
TransactionState txState = read.txState();
PrimitiveLongReadableDiffSets changes = txState
LongDiffSets changes = txState
.indexUpdatesForRangeSeekByPrefix( descriptor, predicate.prefix() );
added = changes.augment( ImmutableEmptyLongIterator.INSTANCE );
removed = removed( txState, changes );
Expand All @@ -258,7 +257,7 @@ private void rangeQuery( SchemaIndexDescriptor descriptor, IndexQuery.RangePredi
if ( read.hasTxStateWithChanges() )
{
TransactionState txState = read.txState();
PrimitiveLongReadableDiffSets changes = txState.indexUpdatesForRangeSeek(
LongDiffSets changes = txState.indexUpdatesForRangeSeek(
descriptor, valueGroup,
predicate.fromValue(), predicate.fromInclusive(),
predicate.toValue(), predicate.toInclusive() );
Expand All @@ -273,7 +272,7 @@ private void scanQuery( SchemaIndexDescriptor descriptor )
if ( read.hasTxStateWithChanges() )
{
TransactionState txState = read.txState();
PrimitiveLongReadableDiffSets changes = txState.indexUpdatesForScan( descriptor );
LongDiffSets changes = txState.indexUpdatesForScan( descriptor );
added = changes.augment( ImmutableEmptyLongIterator.INSTANCE );
removed = removed( txState, changes );
}
Expand All @@ -285,7 +284,7 @@ private void suffixOrContainsQuery( SchemaIndexDescriptor descriptor, IndexQuery
if ( read.hasTxStateWithChanges() )
{
TransactionState txState = read.txState();
PrimitiveLongReadableDiffSets changes = txState.indexUpdatesForSuffixOrContains( descriptor, query );
LongDiffSets changes = txState.indexUpdatesForSuffixOrContains( descriptor, query );
added = changes.augment( ImmutableEmptyLongIterator.INSTANCE );
removed = removed( txState, changes );
}
Expand All @@ -298,14 +297,14 @@ private void seekQuery( SchemaIndexDescriptor descriptor, IndexQuery[] query )
if ( read.hasTxStateWithChanges() )
{
TransactionState txState = read.txState();
PrimitiveLongReadableDiffSets changes = read.txState()
LongDiffSets changes = read.txState()
.indexUpdatesForSeek( descriptor, IndexQuery.asValueTuple( exactPreds ) );
added = changes.augment( ImmutableEmptyLongIterator.INSTANCE );
removed = removed( txState, changes );
}
}

private LongSet removed( TransactionState txState, PrimitiveLongReadableDiffSets changes )
private LongSet removed( TransactionState txState, LongDiffSets changes )
{
final MutableLongSet longSet = asSet( txState.addedAndRemovedNodes().getRemoved() );
longSet.addAll( changes.getRemoved() );
Expand Down
Expand Up @@ -25,7 +25,7 @@
import org.eclipse.collections.api.set.primitive.MutableLongSet;

import org.neo4j.kernel.impl.api.state.TxState;
import org.neo4j.kernel.impl.util.diffsets.PrimitiveLongDiffSets;
import org.neo4j.kernel.impl.util.diffsets.MutableLongDiffSets;
import org.neo4j.memory.MemoryTracker;

/**
Expand All @@ -42,7 +42,7 @@ public interface CollectionsFactory

<V> MutableIntObjectMap<V> newIntObjectMap();

PrimitiveLongDiffSets newLongDiffSets();
MutableLongDiffSets newLongDiffSets();

MemoryTracker getMemoryTracker();

Expand Down

0 comments on commit 805b0a5

Please sign in to comment.