Just curious, David, did you port the logic of WholeRowIterator.decodeRow over to Python, or is that functionality available somewhere in the pyaccumulo API and I just missed it?
-Russ On Sun, Apr 13, 2014 at 10:48 AM, David O'Gwynn <[email protected]> wrote: > 1.5.0 > > Btw, the pyaccumulo library: > > https://github.com/accumulo/pyaccumulo > > is the basis of my codebase. You should be able to use that to > replicate the issue. > > Thanks for looking into this! > > On Sun, Apr 13, 2014 at 12:51 PM, Josh Elser <[email protected]> wrote: > > Ah, gotcha. > > > > That definitely does not seem right. I'll see if I can poke around at > this > > today. > > > > Are you using 1.5.0 or 1.5.1? (1.5.1 was just released a few weeks ago) > > > > > > On 4/12/14, 4:13 PM, David O'Gwynn wrote: > >> > >> Hi Josh, > >> > >> I guess I misspoke, the Range I'm passing is this: > >> > >> Range('row0', true, 'row0\0',true) > >> > >> Keeping in mind that the Thrift interface only exposes one Range > >> constructor (Range(Key,bool,Key,bool)), the actual call I'm passing is > >> this: > >> > >> Range( Key('row0',null,...), true, Key('row0\0',null,...), true ) > >> > >> If I scan for all entries (without WholeRowIterator), I get the full > >> contents of "row0". However, when I add the WholeRowIterator, it > >> returns nothing. > >> > >> Furthermore, if I were to pass the following: > >> > >> Range( Key('row0',null,...), true, Key('row1\0',null,...), true ) > >> > >> not only do I get both "row0" and "row1" without the WRI, I get "row1" > >> as a whole row with the WRI (but not "row0"). I.e. the WRI is somehow > >> interpreting my Range as having startKeyInclusive set to false, which > >> is clearly not the case. > >> > >> Thanks, > >> David > >> > >> > >> On Sat, Apr 12, 2014 at 2:49 PM, Josh Elser <[email protected]> > wrote: > >>> > >>> Hi David, > >>> > >>> Looks like you're just mis-using the Range here. > >>> > >>> If you create a range that is ["row0", "row0"] as you denote below, > that > >>> will only include Keys that have a rowId of "row0" with an empty > colfam, > >>> colqual, etc. Since you want to use the WholeRowIterator, I can assume > >>> you > >>> want all columns in "row0". As such, ["row0", "row0\0") would be the > best > >>> range to fetch all of the columns in that single row. > >>> > >>> > >>> On 4/12/2014 1:59 PM, David O'Gwynn wrote: > >>>> > >>>> > >>>> Hi all, > >>>> > >>>> I'm working with the Python Thrift API for the Accumulo proxy service, > >>>> and I have a bit of odd behavior happening. I'm using Accumulo 1.5 > >>>> (the standard one from the Accumulo website). > >>>> > >>>> Whenever I use the WholeRowIterator with a Scanner, I cannot configure > >>>> the Range for that Scanner to correctly return the start row for the > >>>> Range. E.g. for the Range('row0',true,'row0',true) [to pull a singe > >>>> row], it returns zero entries. For Range('row0',true,'row1\0',true), > >>>> it returns only "row1". > >>>> > >>>> From the WholeRowIterator documentation, this behavior implies that > >>>> the startInclusive bit was set to False, which it clearly wasn't. > >>>> > >>>> I've been able to hack around this issue by setting the start key to > >>>> > >>>> Key(row=(row[:-1]+chr(ord(row[-1])-1))+'\0', inclusive=False) > >>>> > >>>> but I'd really rather understand the correct way of using a Range > >>>> object in conjunction with a WholeRowIterator. > >>>> > >>>> Thanks much, > >>>> > >>>> David > >>>> > >>> > > >
