private List<IndexEntryUpdate<?>> generateUpdatesFromValues( List<ValueTuple> values ) { List<IndexEntryUpdate<?>> updates = new ArrayList<>(); int id = 0; for ( ValueTuple value : values ) { updates.add( add( id++, descriptor.schema(), (Object[]) value.getValues() ) ); } return updates; } }
private static AddedWithValuesAndRemoved indexUpdatesWithValuesScanAndFilter( ReadableTransactionState txState, IndexDescriptor descriptor, IndexQuery filter, IndexOrder indexOrder ) { Map<ValueTuple,? extends LongDiffSets> updates = getUpdates( txState, descriptor, indexOrder ); if ( updates == null ) { return EMPTY_ADDED_AND_REMOVED_WITH_VALUES; } MutableList<NodeWithPropertyValues> added = Lists.mutable.empty(); MutableLongSet removed = LongSets.mutable.empty(); for ( Map.Entry<ValueTuple,? extends LongDiffSets> entry : updates.entrySet() ) { ValueTuple key = entry.getKey(); if ( filter == null || filter.acceptsValue( key.getOnlyValue() ) ) { Value[] values = key.getValues(); LongDiffSets diffSet = entry.getValue(); diffSet.getAdded().each( nodeId -> added.add( new NodeWithPropertyValues( nodeId, values ) ) ); removed.addAll( diffSet.getRemoved() ); } } return new AddedWithValuesAndRemoved( indexOrder == IndexOrder.DESCENDING ? added.asReversed() : added, removed ); }
static AddedWithValuesAndRemoved indexUpdatesWithValuesForRangeSeekByPrefix( ReadableTransactionState txState, IndexDescriptor descriptor, TextValue prefix, IndexOrder indexOrder ) { NavigableMap<ValueTuple,? extends LongDiffSets> sortedUpdates = txState.getSortedIndexUpdates( descriptor.schema() ); if ( sortedUpdates == null ) { return EMPTY_ADDED_AND_REMOVED_WITH_VALUES; } ValueTuple floor = ValueTuple.of( prefix ); MutableList<NodeWithPropertyValues> added = Lists.mutable.empty(); MutableLongSet removed = LongSets.mutable.empty(); for ( Map.Entry<ValueTuple,? extends LongDiffSets> entry : sortedUpdates.tailMap( floor ).entrySet() ) { ValueTuple key = entry.getKey(); if ( ((TextValue) key.getOnlyValue()).startsWith( prefix ) ) { LongDiffSets diffSets = entry.getValue(); Value[] values = key.getValues(); diffSets.getAdded().each( nodeId -> added.add( new NodeWithPropertyValues( nodeId, values ) ) ); removed.addAll( diffSets.getRemoved() ); } else { break; } } return new AddedWithValuesAndRemoved( indexOrder == IndexOrder.DESCENDING ? added.asReversed() : added, removed ); }
Value[] valuesArray = values.getValues(); LongDiffSets diffForSpecificValue = entry.getValue();
private static AddedWithValuesAndRemoved indexUpdatesWithValuesScanAndFilter( ReadableTransactionState txState, IndexDescriptor descriptor, IndexQuery filter, IndexOrder indexOrder ) { Map<ValueTuple,? extends LongDiffSets> updates = getUpdates( txState, descriptor, indexOrder ); if ( updates == null ) { return EMPTY_ADDED_AND_REMOVED_WITH_VALUES; } MutableList<NodeWithPropertyValues> added = Lists.mutable.empty(); MutableLongSet removed = LongSets.mutable.empty(); for ( Map.Entry<ValueTuple,? extends LongDiffSets> entry : updates.entrySet() ) { ValueTuple key = entry.getKey(); if ( filter == null || filter.acceptsValue( key.getOnlyValue() ) ) { Value[] values = key.getValues(); LongDiffSets diffSet = entry.getValue(); diffSet.getAdded().each( nodeId -> added.add( new NodeWithPropertyValues( nodeId, values ) ) ); removed.addAll( diffSet.getRemoved() ); } } return new AddedWithValuesAndRemoved( indexOrder == IndexOrder.DESCENDING ? added.asReversed() : added, removed ); }
static AddedWithValuesAndRemoved indexUpdatesWithValuesForRangeSeekByPrefix( ReadableTransactionState txState, IndexDescriptor descriptor, TextValue prefix, IndexOrder indexOrder ) { NavigableMap<ValueTuple,? extends LongDiffSets> sortedUpdates = txState.getSortedIndexUpdates( descriptor.schema() ); if ( sortedUpdates == null ) { return EMPTY_ADDED_AND_REMOVED_WITH_VALUES; } ValueTuple floor = ValueTuple.of( prefix ); MutableList<NodeWithPropertyValues> added = Lists.mutable.empty(); MutableLongSet removed = LongSets.mutable.empty(); for ( Map.Entry<ValueTuple,? extends LongDiffSets> entry : sortedUpdates.tailMap( floor ).entrySet() ) { ValueTuple key = entry.getKey(); if ( ((TextValue) key.getOnlyValue()).startsWith( prefix ) ) { LongDiffSets diffSets = entry.getValue(); Value[] values = key.getValues(); diffSets.getAdded().each( nodeId -> added.add( new NodeWithPropertyValues( nodeId, values ) ) ); removed.addAll( diffSets.getRemoved() ); } else { break; } } return new AddedWithValuesAndRemoved( indexOrder == IndexOrder.DESCENDING ? added.asReversed() : added, removed ); }
Value[] valuesArray = values.getValues(); LongDiffSets diffForSpecificValue = entry.getValue();