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 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 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(); } } }
private WriteResults internalWrite( final T entry, final Function<T, WriteResults> internalWriter) { final Iterator<T> indexedEntries = adapter.convertToIndex(index, entry); final Map<String, List<SinglePartitionInsertionIds>> insertionIdsPerIndex = new HashMap<>(); while (indexedEntries.hasNext()) { final WriteResults ids = internalWriter.apply(indexedEntries.next()); for (final String indexName : ids.getWrittenIndexNames()) { List<SinglePartitionInsertionIds> partitionInsertionIds = insertionIdsPerIndex.get(indexName); if (partitionInsertionIds == null) { partitionInsertionIds = new ArrayList<>(); insertionIdsPerIndex.put(indexName, partitionInsertionIds); } partitionInsertionIds.addAll(ids.getInsertionIdsWritten(indexName).getPartitionKeys()); } } return new WriteResults(Maps.transformValues(insertionIdsPerIndex, v -> new InsertionIds(v))); }
protected WriteResults internalWrite( final T entry, final Function<Writer<T>, WriteResults> internalWriter) { final Map<String, List<SinglePartitionInsertionIds>> insertionIdsPerIndex = new HashMap<>(); for (final Writer<T> indexWriter : writers) { final WriteResults ids = internalWriter.apply(indexWriter); for (final String indexName : ids.getWrittenIndexNames()) { List<SinglePartitionInsertionIds> partitionInsertionIds = insertionIdsPerIndex.get(indexName); if (partitionInsertionIds == null) { partitionInsertionIds = new ArrayList<>(); insertionIdsPerIndex.put(indexName, partitionInsertionIds); } partitionInsertionIds.addAll(ids.getInsertionIdsWritten(indexName).getPartitionKeys()); } } return new WriteResults(Maps.transformValues(insertionIdsPerIndex, v -> new InsertionIds(v))); }
@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(); } } }
@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(); } } }
|| (insertionIds.getPartitionKeys() == null) || insertionIds.getPartitionKeys().isEmpty()) { if (partitionKeysEmpty) { return new InsertionIds(); } else { final List<SinglePartitionInsertionIds> permutations = new ArrayList<>(insertionIds.getPartitionKeys().size() * partitionKeys.length); for (final byte[] partitionKey : partitionKeys) { permutations.addAll( Collections2.transform( insertionIds.getPartitionKeys(), new Function<SinglePartitionInsertionIds, SinglePartitionInsertionIds>() { @Override
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();
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 Collection<SinglePartitionInsertionIds> partitionKeys = insertionIds.getPartitionKeys(); final Iterator<SinglePartitionInsertionIds> it = partitionKeys.iterator(); final int numDuplicates = keys.length - 1;
getNumericData(index.getIndexModel().getDimensions()); final InsertionIds untrimmedResult = index.getIndexStrategy().getInsertionIds(boxRangeData); for (final SinglePartitionInsertionIds insertionId : untrimmedResult.getPartitionKeys()) { final byte[] partitionKey = insertionId.getPartitionKey(); final int size = insertionId.getSortKeys().size();