@Override public boolean hasNext() { if (iterator == null) { // First time through iterator = query.execute().get().getList().iterator(); } else if (!iterator.hasNext() && rows == query.getRowCount()) { // only need to do another query if maximum rows were retrieved query.setStartKey(startKey); iterator = query.execute().get().getList().iterator(); rows = 0; if (iterator.hasNext()) { // First element is startKey which was the last element on the previous query result - skip it next(); } } return iterator.hasNext(); }
private void refresh() { query.setKeys(startKey, endKey); iterator = Iterators.peekingIterator(query.execute().get().getList().iterator()); rows = 0; if (iterator.hasNext()) { // First element is startKey which was the last element on the previous query result - skip it next(); } } }
@Override public boolean hasNext() { if (iterator == null) { // First time through iterator = Iterators.peekingIterator(query.execute().get().getList().iterator()); } else if (!iterator.hasNext() && rows == query.getRowCount()) { // only need to do another query if maximum rows were retrieved query.setKeys(startKey, endKey); iterator = Iterators.peekingIterator(query.execute().get().getList().iterator()); rows = 0; if (iterator.hasNext()) { // First element is startKey which was the last element on the previous query result - skip it next(); } } while(filter != null && iterator != null && iterator.hasNext() && !filter.accept(iterator.peek())) { next(); if(!iterator.hasNext() && rows == query.getRowCount()) { refresh(); } } return iterator.hasNext(); }
@Test public void testInsertGetRemove() { IndexedSlicesQuery<String, String, Long> indexedSlicesQuery = new IndexedSlicesQuery<String, String, Long>(keyspace, se, se, le); indexedSlicesQuery.addEqualsExpression("birthyear", 1975L); indexedSlicesQuery.setColumnNames("birthmonth"); // see CASSANDRA-2653 //indexedSlicesQuery.setReturnKeysOnly(); indexedSlicesQuery.setColumnFamily(cf); indexedSlicesQuery.setStartKey(""); QueryResult<OrderedRows<String, String, Long>> result = indexedSlicesQuery.execute(); assertEquals(4, result.get().getList().size()); }
@Test public void testInsertGetRemove() { RangeSlicesQuery<String, String, Long> rangeSlicesQuery = HFactory.createRangeSlicesQuery(keyspace, se, se, le); rangeSlicesQuery.addEqualsExpression("birthyear", 1975L); rangeSlicesQuery.setColumnNames("birthmonth"); rangeSlicesQuery.setReturnKeysOnly(); rangeSlicesQuery.setColumnFamily(cf); rangeSlicesQuery.setKeys("", ""); QueryResult<OrderedRows<String, String, Long>> result = rangeSlicesQuery.execute(); assertEquals(4, result.get().getList().size()); }
@Test public void testMultiClause() { QueryResult<OrderedRows<String, String, Long>> result = new IndexedSlicesQuery<String, String, Long>(keyspace, se, se, le) .addEqualsExpression("birthyear", 1975L) .addGteExpression("birthmonth", 4L) .addLteExpression("birthmonth", 6L) .setColumnNames("birthyear") .setColumnFamily(cf) .setStartKey("") .execute(); assertEquals(3, result.get().getList().size()); }
@Test public void testEqClauseMiss() { QueryResult<OrderedRows<String, String, Long>> result = new IndexedSlicesQuery<String, String, Long>(keyspace, se, se, le) .addEqualsExpression("birthyear", 5L) .addGteExpression("birthmonth", 4L) .addLteExpression("birthmonth", 6L) .setColumnNames("birthyear") .setColumnFamily(cf) .setStartKey("") .execute(); assertEquals(0, result.get().getList().size()); }
@Test public void testEqClauseMiss() { QueryResult<OrderedRows<String, String, Long>> result = new IndexedSlicesQuery<String, String, Long>(keyspace, se, se, le) .addEqualsExpression("birthyear", 5L) .addGteExpression("birthmonth", 4L) .addLteExpression("birthmonth", 6L) .setColumnNames("birthyear") .setColumnFamily(cf) .setStartKey("") .execute(); assertEquals(0, result.get().getList().size()); } }
@Test public void testMultiClause() { QueryResult<OrderedRows<String, String, Long>> result = new IndexedSlicesQuery<String, String, Long>(keyspace, se, se, le) .addEqualsExpression("birthyear", 1975L) .addGteExpression("birthmonth", 4L) .addLteExpression("birthmonth", 6L) .setColumnNames("birthyear") .setColumnFamily(cf) .setStartKey("") .execute(); assertEquals(3, result.get().getList().size()); }
@Test public void testRowCountLimit() { QueryResult<OrderedRows<String, String, Long>> result = new IndexedSlicesQuery<String, String, Long>(keyspace, se, se, le) .addEqualsExpression("birthyear", 1975L) .addGteExpression("birthmonth", 4L) .addLteExpression("birthmonth", 6L) .setColumnNames("birthyear") .setColumnFamily(cf) .setStartKey("") .setRowCount(2) .execute(); assertEquals(2, result.get().getList().size()); }
@Override public boolean hasNext() { if (iterator == null) { // First time through iterator = query.execute().get().getList().iterator(); } else if (!iterator.hasNext() && rows == query.getRowCount()) { // only need to do another query if maximum rows were retrieved query.setStartKey(startKey); iterator = query.execute().get().getList().iterator(); rows = 0; if (iterator.hasNext()) { // First element is startKey which was the last element on the previous query result - skip it next(); } } return iterator.hasNext(); }
@Override public boolean hasNext() { if (iterator == null) { // First time through iterator = query.execute().get().getList().iterator(); } else if (!iterator.hasNext() && rows == query.getRowCount()) { // only need to do another query if maximum rows were retrieved query.setStartKey(startKey); iterator = query.execute().get().getList().iterator(); rows = 0; if (iterator.hasNext()) { // First element is startKey which was the last element on the previous query result - skip it next(); } } return iterator.hasNext(); }
Row<String, String, String> row = rows.getList().get(0); assertNotNull(row); assertEquals("testRangeSlicesQuery1", row.getKey());
private void refresh() { query.setKeys(startKey, endKey); iterator = Iterators.peekingIterator(query.execute().get().getList().iterator()); rows = 0; if (iterator.hasNext()) { // First element is startKey which was the last element on the previous query result - skip it next(); } } }
@Test public void testRangeSubSlicesQuery() { String cf = "Super1"; TestCleanupDescriptor cleanup = insertSuperColumns(cf, 4, "testRangeSubSlicesQuery", 3, "testRangeSubSlicesQuery"); // get value RangeSubSlicesQuery<String, String, String, String> q = createRangeSubSlicesQuery( ko, se, se, se, se); q.setColumnFamily(cf); q.setKeys("testRangeSubSlicesQuery2", "testRangeSubSlicesQuery3"); // try with column name first q.setSuperColumn("testRangeSubSlicesQuery1"); q.setColumnNames("c021", "c111"); QueryResult<OrderedRows<String, String, String>> r = q.execute(); assertNotNull(r); OrderedRows<String, String, String> rows = r.get(); assertNotNull(rows); assertEquals(2, rows.getCount()); Row<String, String, String> row = rows.getList().get(0); assertNotNull(row); assertEquals("testRangeSubSlicesQuery2", row.getKey()); ColumnSlice<String, String> slice = row.getColumnSlice(); assertNotNull(slice); // Test slice.getColumnByName assertEquals("v021", slice.getColumnByName("c021").getValue()); assertEquals("v121", slice.getColumnByName("c111").getValue()); assertNull(slice.getColumnByName("c033")); // Delete values deleteColumns(cleanup); }
@Override public K getKey(final V value) throws DataAccessLayerException { RangeSlicesQuery<K, byte[], V> rq = HFactory.createRangeSlicesQuery( _keyspace, _serializer_k, BYTE_SERIALIZER, _serializer_v); rq.addEqualsExpression(COLUMN_NAME, value).setReturnKeysOnly() .setColumnFamily(_cf_name) .setColumnNames(COLUMN_NAME).setRowCount(1); final List<Row<K, byte[], V>> rows = rq.execute().get().getList(); return rows.isEmpty() ? null : _serializer_k.fromBytes((byte[])rows.get(0).getKey()); }
@Override public K getKey(final V value) throws DataAccessLayerException { RangeSlicesQuery<K, byte[], V> rq = HFactory.createRangeSlicesQuery( _keyspace, _serializer_k, BYTE_SERIALIZER, _serializer_v); rq.addEqualsExpression(COLUMN_NAME, value).setReturnKeysOnly() .setColumnFamily(_cf_name) .setColumnNames(COLUMN_NAME).setRowCount(1); final List<Row<K, byte[], V>> rows = rq.execute().get().getList(); return rows.isEmpty() ? null : _serializer_k.fromBytes((byte[])rows.get(0).getKey()); }
@Override public <K, N, V> List<CmbRow<K, N, V>> readAllRows(String keyspace, String columnFamily, int numRows, int numCols, CmbSerializer keySerializer, CmbSerializer columnNameSerializer, CmbSerializer valueSerializer) throws PersistenceException { long ts1 = System.currentTimeMillis(); logger.debug("event=read_nextn_nonempty_rows cf=" + columnFamily + " num_rows=" + numRows + " num_cols" + numCols); try { RangeSlicesQuery rangeSlicesQuery = HFactory.createRangeSlicesQuery(getKeyspace(keyspace), getSerializer(keySerializer), getSerializer(columnNameSerializer), getSerializer(valueSerializer)) .setColumnFamily(columnFamily) .setRange(null, null, false, numCols).setRowCount(numRows); //.setKeys(lastKey, null); QueryResult<OrderedRows<K, N, V>> result = rangeSlicesQuery.execute(); OrderedRows<K, N, V> orderedRows = result.get(); List<Row<K, N, V>> rows = orderedRows.getList(); return getRows(rows); } finally { long ts2 = System.currentTimeMillis(); CMBControllerServlet.valueAccumulator.addToCounter(AccumulatorName.CassandraRead, 1L); CMBControllerServlet.valueAccumulator.addToCounter(AccumulatorName.CassandraTime, (ts2 - ts1)); } }
@Override public boolean hasNext() { if (iterator == null) { // First time through iterator = Iterators.peekingIterator(query.execute().get().getList().iterator()); } else if (!iterator.hasNext() && rows == query.getRowCount()) { // only need to do another query if maximum rows were retrieved query.setKeys(startKey, endKey); iterator = Iterators.peekingIterator(query.execute().get().getList().iterator()); rows = 0; if (iterator.hasNext()) { // First element is startKey which was the last element on the previous query result - skip it next(); } } while(filter != null && iterator != null && iterator.hasNext() && !filter.accept(iterator.peek())) { next(); if(!iterator.hasNext() && rows == query.getRowCount()) { refresh(); } } return iterator.hasNext(); }
protected Namespace getNamespace( String repositoryId, String namespaceId ) { QueryResult<OrderedRows<String, String, String>> result = HFactory // .createRangeSlicesQuery( keyspace, ss, ss, ss ) // .setColumnFamily( cassandraArchivaManager.getNamespaceFamilyName() ) // .setColumnNames( REPOSITORY_NAME.toString(), NAME.toString() ) // .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // .addEqualsExpression( NAME.toString(), namespaceId ) // .execute(); if ( result.get().getCount() > 0 ) { ColumnSlice<String, String> columnSlice = result.get().getList().get( 0 ).getColumnSlice(); return new Namespace( getStringValue( columnSlice, NAME.toString() ), // new Repository( getStringValue( columnSlice, REPOSITORY_NAME.toString() ) ) ); } return null; }