@Override public long[] sort(List<Type> types, List<Page> pages, List<Integer> sortChannels, List<SortOrder> sortOrders, int expectedPositions) { PagesIndex pagesIndex = pagesIndexFactory.newPagesIndex(types, expectedPositions); pages.forEach(pagesIndex::addPage); pagesIndex.sort(sortChannels, sortOrders); return pagesIndex.getValueAddresses().toLongArray(null); }
/** * Returns the smallest ("bottom") n values in the column * * @param n The maximum number of records to return. The actual number will be smaller if n is greater than the * number of observations in the column * @return A list, possibly empty, of the smallest n observations */ public List<LocalDateTime> bottom(int n) { List<LocalDateTime> bottom = new ArrayList<>(); long[] values = data.toLongArray(); LongArrays.parallelQuickSort(values); for (int i = 0; i < n && i < values.length; i++) { bottom.add(PackedLocalDateTime.asLocalDateTime(values[i])); } return bottom; }
private void initDoubleValues() { if (predicate != null) { return; } synchronized (initLock) { if (predicate != null) { return; } LongArrayList doubleBits = new LongArrayList(values.size()); for (String value : values) { Double doubleValue = Doubles.tryParse(value); if (doubleValue != null) { doubleBits.add(Double.doubleToLongBits((doubleValue))); } } if (doubleBits.size() > NUMERIC_HASHING_THRESHOLD) { final LongOpenHashSet doubleBitsHashSet = new LongOpenHashSet(doubleBits); predicate = input -> doubleBitsHashSet.contains(Double.doubleToLongBits(input)); } else { final long[] doubleBitsArray = doubleBits.toLongArray(); Arrays.sort(doubleBitsArray); predicate = input -> Arrays.binarySearch(doubleBitsArray, Double.doubleToLongBits(input)) >= 0; } } } @Override
/** * Returns the largest ("top") n values in the column * * @param n The maximum number of records to return. The actual number will be smaller if n is greater than the * number of observations in the column * @return A list, possibly empty, of the largest observations */ public List<LocalDateTime> top(int n) { List<LocalDateTime> top = new ArrayList<>(); long[] values = data.toLongArray(); LongArrays.parallelQuickSort(values, DescendingLongComparator.instance()); for (int i = 0; i < n && i < values.length; i++) { top.add(PackedLocalDateTime.asLocalDateTime(values[i])); } return top; }
private void initLongValues() { if (predicate != null) { return; } synchronized (initLock) { if (predicate != null) { return; } LongArrayList longs = new LongArrayList(values.size()); for (String value : values) { final Long longValue = DimensionHandlerUtils.getExactLongFromDecimalString(value); if (longValue != null) { longs.add(longValue); } } if (longs.size() > NUMERIC_HASHING_THRESHOLD) { final LongOpenHashSet longHashSet = new LongOpenHashSet(longs); predicate = input -> longHashSet.contains(input); } else { final long[] longArray = longs.toLongArray(); Arrays.sort(longArray); predicate = input -> Arrays.binarySearch(longArray, input) >= 0; } } }
@Override public LongColumn top(int n) { final LongArrayList top = new LongArrayList(); final long[] values = data.toLongArray(); LongArrays.parallelQuickSort(values, descendingComparator); for (int i = 0; i < n && i < values.length; i++) { top.add(values[i]); } return new LongColumn(name() + "[Top " + n + "]", top); }
@Override public LongColumn bottom(final int n) { final LongArrayList bottom = new LongArrayList(); final long[] values = data.toLongArray(); LongArrays.parallelQuickSort(values); for (int i = 0; i < n && i < values.length; i++) { bottom.add(values[i]); } return new LongColumn(name() + "[Bottoms " + n + "]", bottom); }
@Override public LongColumn lag(int n) { final int srcPos = n >= 0 ? 0 : 0 - n; final long[] dest = new long[size()]; final int destPos = n <= 0 ? 0 : n; final int length = n >= 0 ? size() - n : size() + n; for (int i = 0; i < size(); i++) { dest[i] = LongColumnType.missingValueIndicator(); } long[] array = data.toLongArray(); System.arraycopy(array, srcPos, dest, destPos, length); return new LongColumn(name() + " lag(" + n + ")", new LongArrayList(dest)); }
@Override public DateTimeColumn lag(int n) { int srcPos = n >= 0 ? 0 : 0 - n; long[] dest = new long[size()]; int destPos = n <= 0 ? 0 : n; int length = n >= 0 ? size() - n : size() + n; for (int i = 0; i < size(); i++) { dest[i] = DateTimeColumnType.missingValueIndicator(); } System.arraycopy(data.toLongArray(), srcPos, dest, destPos, length); DateTimeColumn copy = emptyCopy(size()); copy.data = new LongArrayList(dest); copy.setName(name() + " lag(" + n + ")"); return copy; }
private boolean doTruncateInvalidTx(Set<Long> invalidTxIds) { LOG.info("Removing tx ids {} from invalid list", invalidTxIds); boolean success = invalid.removeAll(invalidTxIds); if (success) { invalidArray = invalid.toLongArray(); } return success; }
private boolean doTruncateInvalidTx(Set<Long> invalidTxIds) { LOG.info("Removing tx ids {} from invalid list", invalidTxIds); boolean success = invalid.removeAll(invalidTxIds); if (success) { invalidArray = invalid.toLongArray(); } return success; }
@Override public long[] sort(List<Type> types, List<Page> pages, List<Integer> sortChannels, List<SortOrder> sortOrders, int expectedPositions) { PagesIndex pagesIndex = pagesIndexFactory.newPagesIndex(types, expectedPositions); pages.forEach(pagesIndex::addPage); pagesIndex.sort(sortChannels, sortOrders); return pagesIndex.getValueAddresses().toLongArray(null); }
@Override public long[] sort(List<Type> types, List<Page> pages, List<Integer> sortChannels, List<SortOrder> sortOrders, int expectedPositions) { PagesIndex pagesIndex = new PagesIndex(types, expectedPositions); pages.forEach(pagesIndex::addPage); pagesIndex.sort(sortChannels, sortOrders); return pagesIndex.getValueAddresses().toLongArray(null); }
@Override public long[] sort(List<Type> types, List<Page> pages, List<Integer> sortChannels, List<SortOrder> sortOrders, int expectedPositions) { PagesIndex pagesIndex = pagesIndexFactory.newPagesIndex(types, expectedPositions); pages.forEach(pagesIndex::addPage); pagesIndex.sort(sortChannels, sortOrders); return pagesIndex.getValueAddresses().toLongArray(null); }
@Override public Transaction checkpoint(Transaction tx) { long newWritePointer = getWritePointer(); LongArrayList newCheckpointPointers = new LongArrayList(tx.getCheckpointWritePointers()); newCheckpointPointers.add(newWritePointer); return new Transaction(tx, newWritePointer, newCheckpointPointers.toLongArray()); }
@Override public LongColumn bottom(final int n) { final LongArrayList bottom = new LongArrayList(); final long[] values = data.toLongArray(); LongArrays.parallelQuickSort(values); for (int i = 0; i < n && i < values.length; i++) { bottom.add(values[i]); } return new LongColumn(name() + "[Bottoms " + n + "]", bottom); }
@Override public LongColumn top(int n) { final LongArrayList top = new LongArrayList(); final long[] values = data.toLongArray(); LongArrays.parallelQuickSort(values, descendingComparator); for (int i = 0; i < n && i < values.length; i++) { top.add(values[i]); } return new LongColumn(name() + "[Top " + n + "]", top); }
@Override public Transaction checkpoint(Transaction tx) { long newWritePointer = getWritePointer(); LongArrayList newCheckpointPointers = new LongArrayList(tx.getCheckpointWritePointers()); newCheckpointPointers.add(newWritePointer); return new Transaction(tx, newWritePointer, newCheckpointPointers.toLongArray()); }
@Override public Transaction checkpoint(Transaction tx) { long newWritePointer = getWritePointer(); LongArrayList newCheckpointPointers = new LongArrayList(tx.getCheckpointWritePointers()); newCheckpointPointers.add(newWritePointer); return new Transaction(tx, newWritePointer, newCheckpointPointers.toLongArray()); }
@Override public LongColumn lag(int n) { final int srcPos = n >= 0 ? 0 : 0 - n; final long[] dest = new long[size()]; final int destPos = n <= 0 ? 0 : n; final int length = n >= 0 ? size() - n : size() + n; for (int i = 0; i < size(); i++) { dest[i] = LongColumnType.missingValueIndicator(); } long[] array = data.toLongArray(); System.arraycopy(array, srcPos, dest, destPos, length); return new LongColumn(name() + " lag(" + n + ")", new LongArrayList(dest)); }