private void refresh() { query.setRange(start, finish.function(), reversed, count); columns = 0; List<HColumn<N, V>> list = query.execute().get().getColumns(); iterator = Iterators.peekingIterator(list.iterator()); if (iterator.hasNext()) { // The lower bound column may have been removed prior to the query executing, // so check to see if the first column returned by the current query is the same // as the lower bound column. If both columns are the same, skip the column N first = list.get(0).getName(); if (first.equals(start)) { next(); } } }
@Test public void testUUIDGetAll() { // Gets all columns in the row regardless of the column name init(); // Get all rows Set<UUID> results = new HashSet<UUID>(); ColumnSliceIterator<String, DynamicComposite, String> iterator = getIterator(rowKey, null, null); while(iterator.hasNext()) { HColumn<DynamicComposite, String> column = iterator.next(); DynamicComposite composite = column.getName(); UUID component1 = composite.get(1, us); results.add(component1); } assertEquals("Failed to retrieve all columns", 8, results.size()); }
@Test public void testIterator() { SliceQuery<String, UUID, String> query = HFactory.createSliceQuery(keyspace, se, us, se).setKey(KEY).setColumnFamily(CF); ColumnSliceIterator<String, UUID, String> it = new ColumnSliceIterator<String, UUID, String>(query, null, FINISH, false, 100); Map<UUID, String> results = new HashMap<UUID, String>(); while (it.hasNext()) { HColumn<UUID, String> c = it.next(); results.put(c.getName(), c.getValue()); } assertEquals(1000, results.size()); }
@Override public boolean hasNext() { if (iterator == null) { iterator = Iterators.peekingIterator(query.execute().get().getColumns().iterator()); } else if (!iterator.hasNext() && columns == count) { // only need to do another query if maximum columns were retrieved refresh(); } while(filter != null && iterator != null && iterator.hasNext() && !filter.accept(iterator.peek())) { next(); if(!iterator.hasNext() && columns == count) { refresh(); } } return iterator.hasNext(); }
@Test public void testModificationIterator() { Mutator mutator = HFactory.createMutator(keyspace, se); SliceQuery<String, UUID, String> query = HFactory.createSliceQuery(keyspace, se, us, se).setKey(KEY).setColumnFamily(CF); ColumnSliceIterator<String, UUID, String> it = new ColumnSliceIterator<String, UUID, String>(query, null, FINISH, false, 100); Map<UUID, String> results = new HashMap<UUID, String>(); while (it.hasNext()) { HColumn<UUID, String> c = it.next(); results.put(c.getName(), c.getValue()); mutator.addDeletion(KEY, CF, c.getName(), us); mutator.execute(); } assertEquals(1000, results.size()); }
@Test public void testUUIDGetSlice() { // Gets all columns based on the first component in the column name Map<UUID, Set<UUID>> ids = init(); for(Entry<UUID, Set<UUID>> entry : ids.entrySet()) { UUID component0 = entry.getKey(); // start at first column who's single component == component0 DynamicComposite start = new DynamicComposite(); start.addComponent(component0, us); // up to and including any column whose first component == component0 regardless of remaining component values DynamicComposite end = new DynamicComposite(); end.addComponent(component0, us, us.getComparatorType().getTypeName(), ComponentEquality.GREATER_THAN_EQUAL); ColumnSliceIterator<String, DynamicComposite, String> iterator = getIterator(rowKey, start, end); while(iterator.hasNext()) { HColumn<DynamicComposite, String> column = iterator.next(); DynamicComposite composite = column.getName(); assertEquals(component0, composite.get(0, us)); assertTrue(ids.get(component0).contains(composite.get(1, us))); } } }
HColumn<String, String> c = it.next(); String name = c.getName();
HColumn<ByteBuffer, ByteBuffer> column = iterator.next(); updater.setValue(column.getName(), column.getValue(), this.bs);
@Test public void testCopy() { new ColumnFamilyRowCopy<String, UUID>(keyspace, ss).setColumnFamily(CF). setRowKey(SOURCE_KEY). setDestinationKey(DESTINATION_KEY). setMutateInterval(150).copy(); SliceQuery<String, ByteBuffer, String> query = HFactory.createSliceQuery(keyspace, ss, bs, ss). setKey(DESTINATION_KEY).setColumnFamily(CF); ColumnSliceIterator<String, ByteBuffer, String> it = new ColumnSliceIterator<String, ByteBuffer, String>(query, bs. fromBytes(new byte[0]), bs.fromBytes(new byte[0]), false, 100); int total = 0; while (it.hasNext()) { it.next(); total++; } assertEquals(columns, total); } }
@Override public boolean hasNext() { if (iterator == null) { iterator = query.execute().get().getColumns().iterator(); } else if (!iterator.hasNext() && columns == count) { // only need to do another query if maximum columns were retrieved query.setRange(start, finish.function(), reversed, count); iterator = query.execute().get().getColumns().iterator(); columns = 0; // First element is start which was the last element on the previous query result - skip it if (iterator.hasNext()) { next(); } } return iterator.hasNext(); }
private void refresh() { query.setRange(start, finish.function(), reversed, count); columns = 0; List<HColumn<N, V>> list = query.execute().get().getColumns(); iterator = Iterators.peekingIterator(list.iterator()); if (iterator.hasNext()) { // The lower bound column may have been removed prior to the query executing, // so check to see if the first column returned by the current query is the same // as the lower bound column. If both columns are the same, skip the column N first = list.get(0).getName(); if (first.equals(start)) { next(); } } }
@Override protected byte[][] computeNext() { if (!results.hasNext()) { return endOfData(); } return new byte[][] { query[0], query[1], BYTE_SERIALIZER.fromByteBuffer((ByteBuffer) results.next().getName().get(0)), query[3] }; } };
@Override protected byte[][] computeNext() { if (!results.hasNext()) { return endOfData(); } return new byte[][] { query[0], query[1], BYTE_SERIALIZER.fromByteBuffer((ByteBuffer) results.next().getName().get(0)), query[3] }; } };
@Override protected byte[][] computeNext() { if (!results.hasNext()) { return endOfData(); } final HColumn<Composite, byte[]> column = results.next(); final byte[][] result = new byte[][] { reordered_query[0], reordered_query[1], BYTE_SERIALIZER.fromByteBuffer((ByteBuffer) column.getName().get(0)), BYTE_SERIALIZER.fromByteBuffer((ByteBuffer) column.getName().get(1)) }; return reorderQuadReverse(result, _maps.get(columnFamily)); } };
@Override protected byte[][] computeNext() { if (!results.hasNext()) { return endOfData(); } final HColumn<Composite, byte[]> column = results.next(); final byte[][] result = new byte[][] { reordered_query[0], reordered_query[1], BYTE_SERIALIZER.fromByteBuffer((ByteBuffer) column.getName().get(0)), BYTE_SERIALIZER.fromByteBuffer((ByteBuffer) column.getName().get(1)) }; return reorderQuadReverse(result, _maps.get(columnFamily)); } };
@Override public boolean hasNext() { if (iterator == null) { iterator = Iterators.peekingIterator(query.execute().get().getColumns().iterator()); } else if (!iterator.hasNext() && columns == count) { // only need to do another query if maximum columns were retrieved refresh(); } while(filter != null && iterator != null && iterator.hasNext() && !filter.accept(iterator.peek())) { next(); if(!iterator.hasNext() && columns == count) { refresh(); } } return iterator.hasNext(); }
@Override protected byte[][] computeNext() { if (!iter.hasNext() || (_returned >= limit)) { return endOfData(); } _returned++; final HColumn<Composite, byte[]> column = iter.next(); if (column.getName().size() == 2) { return new byte[][] { BYTE_SERIALIZER.fromByteBuffer((ByteBuffer) column.getName().get(0)), query[1], query[2], BYTE_SERIALIZER.fromByteBuffer((ByteBuffer) column.getName().get(1)) }; } else { return new byte[][] { BYTE_SERIALIZER.fromByteBuffer((ByteBuffer) column.getName().get(0)), query[1], query[2] }; } } };
@Override protected byte[][] computeNext() { if (!iter.hasNext() || (_returned >= limit)) { return endOfData(); } _returned++; final HColumn<Composite, byte[]> column = iter.next(); if (column.getName().size() == 2) { return new byte[][] { BYTE_SERIALIZER.fromByteBuffer((ByteBuffer) column.getName().get(0)), query[1], query[2], BYTE_SERIALIZER.fromByteBuffer((ByteBuffer) column.getName().get(1)) }; } else { return new byte[][] { BYTE_SERIALIZER.fromByteBuffer((ByteBuffer) column.getName().get(0)), query[1], query[2] }; } } };
HColumn<ByteBuffer, ByteBuffer> column = iterator.next(); updater.setValue(column.getName(), column.getValue(), this.bs);