public Pair<byte[], byte[]> getFirstPartitionAndSortKeyPair() { if (partitionKeys == null) { return null; } for (final SinglePartitionInsertionIds p : partitionKeys) { if ((p.getSortKeys() != null) && !p.getSortKeys().isEmpty()) { return new ImmutablePair<>(p.getPartitionKey(), p.getSortKeys().get(0)); } else if ((p.getPartitionKey() != null)) { return new ImmutablePair<>(p.getPartitionKey(), null); } } return null; }
public static byte[][] getInsertionPartitionKeys( final NumericIndexStrategy strategy, final MultiDimensionalNumericData insertionData) { final InsertionIds insertionIds = strategy.getInsertionIds(insertionData); return insertionIds.getPartitionKeys().stream().map(input -> input.getPartitionKey()).toArray( i -> new byte[i][]); } }
@Override public void insertionIdsRemoved(final InsertionIds ids) { for (final SinglePartitionInsertionIds partitionIds : ids.getPartitionKeys()) { final byte first = partitionIds.getPartitionKey()[0]; if (orderedTierIdToSfcIndex.containsKey(first)) { tierCounts[orderedTierIdToSfcIndex.get(partitionIds.getPartitionKey()[0]).intValue()] -= partitionIds.getSortKeys().size(); } } }
@Override public void insertionIdsAdded(final InsertionIds insertionIds) { for (final SinglePartitionInsertionIds partitionId : insertionIds.getPartitionKeys()) { final byte first = partitionId.getPartitionKey()[0]; if (first == pointCurveMultiDimensionalId) { pointCurveCount += partitionId.getSortKeys().size(); } else if (first == xzCurveMultiDimensionalId) { xzCurveCount += partitionId.getSortKeys().size(); } } }
@Override public SinglePartitionQueryRanges apply(final SinglePartitionInsertionIds input) { return new SinglePartitionQueryRanges( input.getPartitionKey(), Collections2.transform( input.getSortKeys(), new Function<byte[], ByteArrayRange>() { @Override public ByteArrayRange apply(final byte[] input) { return new ByteArrayRange(input, input, false); } })); } }));
@Override public void insertionIdsRemoved(final InsertionIds insertionIds) { for (final SinglePartitionInsertionIds partitionId : insertionIds.getPartitionKeys()) { final byte first = partitionId.getPartitionKey()[0]; if (first == pointCurveMultiDimensionalId) { pointCurveCount -= partitionId.getSortKeys().size(); } else if (first == xzCurveMultiDimensionalId) { xzCurveCount -= partitionId.getSortKeys().size(); } } }
@Override public SinglePartitionInsertionIds apply( final SinglePartitionInsertionIds input) { if (input.getPartitionKey() != null) { return new SinglePartitionInsertionIds( ByteArrayUtils.combineArrays(partitionKey, input.getPartitionKey()), input.getSortKeys()); } else { return new SinglePartitionInsertionIds(partitionKey, input.getSortKeys()); } } }));
@Override public void insertionIdsAdded(final InsertionIds ids) { for (final SinglePartitionInsertionIds partitionIds : ids.getPartitionKeys()) { final byte first = partitionIds.getPartitionKey()[0]; if (orderedTierIdToSfcIndex.containsKey(first)) { tierCounts[orderedTierIdToSfcIndex.get(first).intValue()] += partitionIds.getSortKeys().size(); } } }
dataId, internalAdapterId, partitionKey.getPartitionKey(), new byte[] {}, numDuplicates); } else { byte[] partitionKeyBytes; if (partitionKey.getPartitionKey() == null) { partitionKeyBytes = new byte[] {}; } else { partitionKeyBytes = partitionKey.getPartitionKey();
private InsertionIds trimPartitionForSubstrategy(final InsertionIds insertionIds) { final List<SinglePartitionInsertionIds> retVal = new ArrayList<>(); for (final SinglePartitionInsertionIds partitionIds : insertionIds.getPartitionKeys()) { final byte[] trimmedPartitionId = CompoundIndexStrategy.trimPartitionForSubstrategy( partition1Length, index == 0, partitionIds.getPartitionKey()); if (trimmedPartitionId == null) { return insertionIds; } else { retVal.add( new SinglePartitionInsertionIds(trimmedPartitionId, partitionIds.getSortKeys())); } } return new InsertionIds(retVal); }
@Override public synchronized void entryDeleted(final T entry, final GeoWaveRow... rows) { closed = false; if (rows.length > 0) { if ((rows[0].getNumberOfDuplicates() > 0) && (rows.length <= rows[0].getNumberOfDuplicates())) { final ByteArray dataId = new ByteArray(rows[0].getDataId()); Set<InsertionIdData> insertionIds = insertionIdsNotYetDeletedByDataId.get(dataId); if (insertionIds == null) { insertionIds = new HashSet<>(); insertionIdsNotYetDeletedByDataId.put(dataId, insertionIds); // we haven't visited this data ID yet so we need to start tracking it final InsertionIds ids = DataStoreUtils.getInsertionIdsForEntry(entry, adapter, index); for (final SinglePartitionInsertionIds insertId : ids.getPartitionKeys()) { for (final byte[] sortKey : insertId.getSortKeys()) { insertionIds.add(new InsertionIdData(insertId.getPartitionKey(), sortKey)); } } } final Set<InsertionIdData> i = insertionIds; // we need to do is remove the rows in this callback. marking them as deleted Arrays.stream(rows).forEach( row -> i.remove(new InsertionIdData(row.getPartitionKey(), row.getSortKey()))); } } }
originalBounds).getPartitionKeys().stream().flatMap( partition -> partition.getSortKeys().stream().map( sortKey -> Pair.of(partition.getPartitionKey(), sortKey))).iterator(); return new Iterator<GridCoverage>() {
public static InsertionIds trimIndexIds( InsertionIds rawIds, Geometry geom, NumericIndexStrategy index) { for (final SinglePartitionInsertionIds insertionId : rawIds.getPartitionKeys()) { final byte[] partitionKey = insertionId.getPartitionKey(); final int size = insertionId.getSortKeys().size(); if (size > 3) { final Iterator<byte[]> it = insertionId.getSortKeys().iterator(); while (it.hasNext()) { final byte[] sortKey = it.next(); MultiDimensionalNumericData keyTile = index.getRangeForId(partitionKey, sortKey); Envelope other = new Envelope(); other.init( keyTile.getMinValuesPerDimension()[0], keyTile.getMaxValuesPerDimension()[0], keyTile.getMinValuesPerDimension()[1], keyTile.getMaxValuesPerDimension()[1]); Polygon rect = JTS.toGeometry(other); if (!RectangleIntersects.intersects(rect, geom)) { it.remove(); } } } } return rawIds; }
final InsertionIds untrimmedResult = index.getIndexStrategy().getInsertionIds(boxRangeData); for (final SinglePartitionInsertionIds insertionId : untrimmedResult.getPartitionKeys()) { final byte[] partitionKey = insertionId.getPartitionKey(); final int size = insertionId.getSortKeys().size(); if (size > 3) {