private void findNext(boolean fromRunQuery) { nextValue = null; if (rowsIterator == null) { return; } while (rowsIterator.hasNext() && nextValue == null) { Row<K, String, String> row = rowsIterator.next(); lastReadValue = row.getKey(); if (!row.getColumnSlice().getColumns().isEmpty()) { nextValue = lastReadValue; } } if (!rowsIterator.hasNext() && nextValue == null) { runQuery(lastReadValue, endKey); } }
public static Map<String, Object> deserializeEntityProperties( Row<UUID, String, ByteBuffer> row ) { if ( row == null ) { return null; } ColumnSlice<String, ByteBuffer> slice = row.getColumnSlice(); if ( slice == null ) { return null; } return deserializeEntityProperties( slice.getColumns(), true, false ); }
@Override public Row<K, N, V> next() { Row<K, N, V> row = iterator.next(); startKey = row.getKey(); rows++; return row; }
/** Load the messages into an array list */ protected List<Message> loadMessages( Collection<UUID> messageIds, boolean reversed ) { Rows<UUID, String, ByteBuffer> messageResults = createMultigetSliceQuery( ko, ue, se, be ).setColumnFamily( MESSAGE_PROPERTIES.getColumnFamily() ) .setKeys( messageIds ) .setRange( null, null, false, ALL_COUNT ).execute().get(); List<Message> messages = new ArrayList<Message>( messageIds.size() ); for ( Row<UUID, String, ByteBuffer> row : messageResults ) { Message message = deserializeMessage( row.getColumnSlice().getColumns() ); if ( message != null ) { messages.add( message ); } } Collections.sort( messages, new RequestedOrderComparator( messageIds ) ); return messages; }
@Override public Row<K, N, V> next() { Row<K, N, V> row = iterator.next(); startKey = row.getKey(); rows++; return row; }
@Test public void testKeysOnlyPredicate() { RangeSlicesQuery<String, String, Long> rangeSlicesQuery = HFactory.createRangeSlicesQuery(keyspace, se, se, le); QueryResult<OrderedRows<String, String, Long>> result = rangeSlicesQuery.setColumnFamily(cf).setKeys("", "").setReturnKeysOnly().execute(); OrderedRows<String, String, Long> orderedRows = result.get(); Row<String, String, Long> row = orderedRows.iterator().next(); assertNotNull(row.getKey()); assertEquals(0,row.getColumnSlice().getColumns().size()); result = rangeSlicesQuery.setColumnNames("birthyear","birthmonth").setRowCount(5).execute(); orderedRows = result.get(); row = orderedRows.iterator().next(); assertNotNull(row.getKey()); assertEquals(2,row.getColumnSlice().getColumns().size()); }
/** * Constructed for {@link CqlResultType#ROWS} * @param thriftRet * @param nameSerializer * @param valueSerializer * @param resultType */ public CqlRows(LinkedHashMap<K, List<Column>> thriftRet, Serializer<N> nameSerializer, Serializer<V> valueSerializer) { super(thriftRet, nameSerializer, valueSerializer); this.resultType = CqlResultType.ROWS; // test for a count object. eeewww. if ( getCount() == 1 ) { Row row = iterator().next(); if ( row.getColumnSlice().getColumnByName("count") != null ) { count = LongSerializer.get().fromByteBuffer(row.getColumnSlice().getColumnByName("count").getValueBytes()).intValue(); } } }
@Override public boolean accept(Row<String, Integer, Integer> row) { return Integer.parseInt(row.getKey().replaceAll("^k", "")) < 10; } };
@Test public void testModificationIterator() { LinkedList<String> KEYS= new LinkedList<String>(); for (int j = 0; j < 100; j++) { KEYS.add(KEY+j); } Mutator mutator = HFactory.createMutator(keyspace, se); MultigetSliceIterator<String, UUID, String> it= new MultigetSliceIterator<String, UUID, String>(false,keyspace, se,us,se, CF, KEYS, null,null,1,10,1000);// Retrieve all columns from row -> 1000 Map<UUID, String> results = new HashMap<UUID, String>(); while (it.hasNext()) { Row<String,UUID, String> r = it.next(); for (HColumn<UUID, String> c : r.getColumnSlice().getColumns()) { results.put(c.getName(), c.getValue()); mutator.addDeletion(r.getKey(), CF, c.getName(), us); mutator.execute(); } } assertEquals(100*1000, results.size()); } @Test
/** * Get multiple values * @param keys * @return */ public Map<String, String> getMulti(String columnName, String... keys) { MultigetSliceQuery<String, String,String> q = createMultigetSliceQuery(keyspace, serializer, serializer, serializer); q.setColumnFamily(columnFamilyName); q.setKeys(keys); q.setColumnNames(columnName); QueryResult<Rows<String,String,String>> r = q.execute(); Rows<String,String,String> rows = r.get(); Map<String, String> ret = new HashMap<String, String>(keys.length); for (String k: keys) { HColumn<String, String> c = rows.getByKey(k).getColumnSlice().getColumnByName(columnName); if (c != null && c.getValue() != null) { ret.put(k, c.getValue()); } } return ret; }
@Override public K getKey() { return row.getKey(); } @Override
private void findNext(boolean fromRunQuery) { nextValue = null; if (rowsIterator == null) { return; } while (rowsIterator.hasNext() && nextValue == null) { Row<K, String, String> row = rowsIterator.next(); lastReadValue = row.getKey(); if (!row.getColumnSlice().getColumns().isEmpty()) { nextValue = lastReadValue; } } if (!rowsIterator.hasNext() && nextValue == null) { runQuery(lastReadValue, endKey); } }
/** * Get multiple values * @param keys * @return */ public <K> Map<K, String> getMulti(Serializer<K> keySerializer, K... keys) { MultigetSliceQuery<K, String,String> q = createMultigetSliceQuery(keyspace, keySerializer, serializer, serializer); q.setColumnFamily(CF_NAME); q.setKeys(keys); q.setColumnNames(COLUMN_NAME); QueryResult<Rows<K, String,String>> r = q.execute(); Rows<K, String,String> rows = r.get(); Map<K, String> ret = new HashMap<K, String>(keys.length); for (K k: keys) { HColumn<String,String> c = rows.getByKey(k).getColumnSlice().getColumnByName(COLUMN_NAME); if (c != null && c.getValue() != null) { ret.put(k, c.getValue()); } } return ret; }
private void assertKeys(RangeSlicesQuery query, int expected, String start, String end, SliceFilter<Row<String, Integer, Integer>> filter) { RangeSlicesIterator<String, Integer, Integer> iterator = new RangeSlicesIterator<String, Integer, Integer>(query, start, end).setFilter(filter); int total = 0; while(iterator.hasNext()) { iterator.next().getKey(); total ++; } assertEquals(expected, total); } }
private void findNext(boolean fromRunQuery) { nextValue = null; if (rowsIterator == null) { return; } while (rowsIterator.hasNext() && nextValue == null) { Row<K, String, String> row = rowsIterator.next(); lastReadValue = row.getKey(); if (!row.getColumnSlice().getColumns().isEmpty()) { nextValue = lastReadValue; } } if (!rowsIterator.hasNext() && nextValue == null) { runQuery(lastReadValue, endKey); } }
@Test public void testIterator() { LinkedList<String> KEYS= new LinkedList<String>(); for (int j = 0; j < 100; j++) { KEYS.add(KEY+j); } MultigetSliceIterator<String, UUID, String> it= new MultigetSliceIterator<String, UUID, String>(false,keyspace, se,us,se, CF, KEYS, null,null,1,10,1000);// Retrieve all columns from row -> 1000 Map<UUID, String> results = new HashMap<UUID, String>(); while (it.hasNext()) { Row<String,UUID, String> r = it.next(); for (HColumn<UUID, String> c : r.getColumnSlice().getColumns()) { results.put(c.getName(), c.getValue()); } } assertEquals(100*1000, results.size()); }
@Override public Row<K, N, V> next() { Row<K, N, V> row = iterator.next(); startKey = row.getKey(); rows++; return row; }
Row<String, String, String> row = rows.getList().get(0); assertNotNull(row); assertEquals("testRangeSlicesQuery1", row.getKey()); ColumnSlice<String, String> slice = row.getColumnSlice(); assertNotNull(slice); for (Row<String, String, String> row2 : rows) { assertNotNull(row2); slice = row2.getColumnSlice(); assertNotNull(slice); assertEquals(2, slice.getColumns().size());
@Test public void testGetHostsUsed() { LinkedList<String> KEYS= new LinkedList<String>(); for (int j = 0; j < 100; j++) { KEYS.add(KEY+j); } MultigetSliceIterator<String, UUID, String> it= new MultigetSliceIterator<String, UUID, String>(false,keyspace, se,us,se, CF, KEYS, null,null,1,10,10);// Retrieve all columns from row -> 1000 Map<UUID, String> results = new HashMap<UUID, String>(); while (it.hasNext()) { Row<String,UUID, String> r = it.next(); for (HColumn<UUID, String> c : r.getColumnSlice().getColumns()) { results.put(c.getName(), c.getValue()); } } assertEquals("127.0.0.1(127.0.0.1):9170", it.getHostsUsed()); } @Test
@Override public Row<K, N, V> next() { Row<K, N, V> row = iterator.next(); startKey = row.getKey(); rows++; return row; }