Hi everybody.
I've run across an unexpected behavior when using WholeRowIterator on a
BatchScanner. In case it matters, we're using cloudbase-1.3.4.
When I tell it to fetchColumnFamily(new Text("foo")) I get no results
back, though there are definitely records in that column family and in
the row ranges I'm scanning. This doesn't happen when I use a scanner
on that column family, though in that case I'm scanning over the entire
table.
To be more explicit, some constants:
List<Range> ranges = new ArrayList<Range>();
ranges.add(new Range(new Text("bar")));
Text CF = new Text("foo");
getNewScanner() and getNewBatchScanner() create scanners for the
appropriate table name, authorization, and number of threads.
BatchScanner batchScanner = getNewBatchScanner();
batchScanner.fetchColumnFamily(CF);
batchScanner.setRanges(ranges);
returns all the entries in row "bar" and column family "foo".
BatchScanner batchScanner = getNewBatchScanner();
batchScanner.fetchColumnFamily(CF);
batchScanner.setScanIterators(1,
WholeRowIterator.class.getName(),
UUID.randomUUID().toString());
batchScanner.setRanges(ranges);
returns nothing.
BatchScanner batchScanner = getNewBatchScanner();
batchScanner.setScanIterators(1,
WholeRowIterator.class.getName(),
UUID.randomUUID().toString());
batchScanner.setRanges(ranges);
returns an encoded entry containing all the entries in row "bar".
Scanner scanner = getNewScanner();
scanner.fetchColumnFamily(CF);
scanner.setScanIterators(1,
WholeRowIterator.class.getName(),
UUID.randomUUID().toString());
returns encoded entries containing all the entries in column family
"foo", one for each row that contains anything in that column family.
So, why does the second case return nothing?
TIA