public IndexEntryConflictException( long existingNodeId, long addedNodeId, Value... propertyValue ) { this( existingNodeId, addedNodeId, ValueTuple.of( propertyValue ) ); }
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 ); }
@Override public int hashCode() { int result = propertyValues != null ? propertyValues.hashCode() : 0; result = 31 * result + (int) (addedNodeId ^ (addedNodeId >>> 32)); result = 31 * result + (int) (existingNodeId ^ (existingNodeId >>> 32)); return result; }
public static ValueTuple of( Value... values ) { assert values.length > 0 : "Empty ValueTuple is not allowed"; assert noNulls( values ); return new ValueTuple( values ); }
static AddedAndRemoved indexUpdatesForRangeSeekByPrefix( 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; } ValueTuple floor = ValueTuple.of( prefix ); MutableLongList added = LongLists.mutable.empty(); MutableLongSet removed = LongSets.mutable.empty(); for ( Map.Entry<ValueTuple,? extends LongDiffSets> entry : sortedUpdates.subMap( floor, MAX_STRING_TUPLE ).entrySet() ) { ValueTuple key = entry.getKey(); if ( ((TextValue) key.getOnlyValue()).startsWith( prefix ) ) { LongDiffSets diffSets = entry.getValue(); added.addAll( diffSets.getAdded() ); removed.addAll( diffSets.getRemoved() ); } else { break; } } return new AddedAndRemoved( indexOrder == IndexOrder.DESCENDING ? added.asReversed() : added, removed ); }
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 ); }
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; } }
@Override public boolean equals( Object o ) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; } IndexEntryConflictException that = (IndexEntryConflictException) o; return addedNodeId == that.addedNodeId && existingNodeId == that.existingNodeId && !(propertyValues != null ? !propertyValues.equals( that.propertyValues ) : that.propertyValues != null); }
selectedLower = ValueTuple.of( Values.minValue( predicate.valueGroup(), upper ) ); selectedIncludeLower = true; selectedLower = ValueTuple.of( lower ); selectedIncludeLower = predicate.fromInclusive(); selectedUpper = ValueTuple.of( Values.maxValue( predicate.valueGroup(), lower ) ); selectedIncludeUpper = false; selectedUpper = ValueTuple.of( upper ); selectedIncludeUpper = predicate.toInclusive(); if ( predicate.isRegularOrder() || predicate.acceptsValue( values.getOnlyValue() ) )
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 ); }
public static ValueTuple of( Object... objects ) { assert objects.length > 0 : "Empty ValueTuple is not allowed"; assert noNulls( objects ); Value[] values = new Value[objects.length]; for ( int i = 0; i < values.length; i++ ) { values[i] = Values.of( objects[i] ); } return new ValueTuple( values ); }
@Override public boolean equals( Object o ) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; } IndexEntryConflictException that = (IndexEntryConflictException) o; return addedNodeId == that.addedNodeId && existingNodeId == that.existingNodeId && !(propertyValues != null ? !propertyValues.equals( that.propertyValues ) : that.propertyValues != null); }
public static ValueTuple asValueTuple( IndexQuery.ExactPredicate... query ) { Value[] values = new Value[query.length]; for ( int i = 0; i < query.length; i++ ) { values[i] = query[i].value(); } return ValueTuple.of( values ); }
selectedLower = ValueTuple.of( Values.minValue( predicate.valueGroup(), upper ) ); selectedIncludeLower = true; selectedLower = ValueTuple.of( lower ); selectedIncludeLower = predicate.fromInclusive(); selectedUpper = ValueTuple.of( Values.maxValue( predicate.valueGroup(), lower ) ); selectedIncludeUpper = false; selectedUpper = ValueTuple.of( upper ); selectedIncludeUpper = predicate.toInclusive(); Value[] valuesArray = values.getValues(); LongDiffSets diffForSpecificValue = entry.getValue(); if ( predicate.isRegularOrder() || predicate.acceptsValue( values.getOnlyValue() ) )
static AddedAndRemoved indexUpdatesForRangeSeekByPrefix( 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; } ValueTuple floor = ValueTuple.of( prefix ); MutableLongList added = LongLists.mutable.empty(); MutableLongSet removed = LongSets.mutable.empty(); for ( Map.Entry<ValueTuple,? extends LongDiffSets> entry : sortedUpdates.subMap( floor, MAX_STRING_TUPLE ).entrySet() ) { ValueTuple key = entry.getKey(); if ( ((TextValue) key.getOnlyValue()).startsWith( prefix ) ) { LongDiffSets diffSets = entry.getValue(); added.addAll( diffSets.getAdded() ); removed.addAll( diffSets.getRemoved() ); } else { break; } } return new AddedAndRemoved( indexOrder == IndexOrder.DESCENDING ? added.asReversed() : added, removed ); }
public static ValueTuple of( Value... values ) { assert values.length > 0 : "Empty ValueTuple is not allowed"; assert noNulls( values ); return new ValueTuple( values ); }
void checkConflict( Value[] values ) throws IndexEntryConflictException { if ( conflict ) { conflict = false; throw new IndexEntryConflictException( existingNodeId, addedNodeId, ValueTuple.of( values ) ); } } }
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 ); }
selectedLower = ValueTuple.of( Values.minValue( predicate.valueGroup(), upper ) ); selectedIncludeLower = true; selectedLower = ValueTuple.of( lower ); selectedIncludeLower = predicate.fromInclusive(); selectedUpper = ValueTuple.of( Values.maxValue( predicate.valueGroup(), lower ) ); selectedIncludeUpper = false; selectedUpper = ValueTuple.of( upper ); selectedIncludeUpper = predicate.toInclusive(); if ( predicate.isRegularOrder() || predicate.acceptsValue( values.getOnlyValue() ) )