@SuppressWarnings("unused") // Set up your IDE to render IndexedInts impls using this method during debug. default String debugToString() { StringBuilder sb = new StringBuilder("["); forEach(v -> sb.append(v).append(',').append(' ')); if (sb.length() > 1) { sb.setLength(sb.length() - 2); } sb.append(']'); return sb.toString(); } }
/** * Get a particular row from a column, exactly as reported by the column. */ private static List<String> getRow(final DictionaryEncodedColumn<String> column, final int rowNumber) { final List<String> retVal = new ArrayList<>(); if (column.hasMultipleValues()) { column.getMultiValueRow(rowNumber).forEach(i -> retVal.add(column.lookupName(i))); } else { retVal.add(column.lookupName(column.getSingleValueRow(rowNumber))); } return retVal; } }
@Override public void bufferAdd(ByteBuffer buf) { if (selector.getRow().size() > 1) { selector.getRow().forEach(v -> { String value = selector.lookupName(v); if (value == null) { BloomKFilter.addBytes(buf, null, 0, 0); } else { BloomKFilter.addString(buf, value); } }); } else { String value = (String) selector.getObject(); if (value == null) { BloomKFilter.addBytes(buf, null, 0, 0); } else { BloomKFilter.addString(buf, value); } } } }
@Override public void aggregate() { // note: there might be room for optimization here but behavior must match BloomDimFilter implementation if (selector.getRow().size() > 1) { selector.getRow().forEach(v -> { String value = selector.lookupName(v); if (value == null) { collector.addBytes(null, 0, 0); } else { collector.addString(value); } }); } else { String value = (String) selector.getObject(); if (value == null) { collector.addBytes(null, 0, 0); } else { collector.addString(value); } } } }
@SuppressWarnings("unused") // Set up your IDE to render IndexedInts impls using this method during debug. default String debugToString() { StringBuilder sb = new StringBuilder("["); forEach(v -> sb.append(v).append(',').append(' ')); if (sb.length() > 1) { sb.setLength(sb.length() - 2); } sb.append(']'); return sb.toString(); } }