Are you able to reproduce this using a unit test ? I will take a closer look.
Thanks On Nov 18, 2014, at 8:06 AM, Shahab Yunus <[email protected]> wrote: > You mean if used independently? Yes, they do. > > Regards, > Shahab > > On Tue, Nov 18, 2014 at 10:51 AM, Ted Yu <[email protected]> wrote: > >> Have you verified that at least one of the following (when used alone) >> returns data ? >> (A and B), (B and C), (D and E) >> >> Thanks >> >> On Mon, Nov 17, 2014 at 9:27 PM, Shahab Yunus <[email protected]> >> wrote: >> >>> Missed couple of things. >>> >>> 1- I am using SingleColumnValueFilter and the comparator >>> is BinaryComparator which is passed into it. >>> >>> 2- CDH 5.1.0 >>> (Hbase is 0.98.1-cdh5.1.0) >>> >>> Regards, >>> Shahab >>> >>> On Tue, Nov 18, 2014 at 12:22 AM, Shahab Yunus <[email protected]> >>> wrote: >>> >>>> Hi, >>>> >>>> I have data where each row has start and end time stored in UTC (long). >>>> The table is created through Phoenix and the columns have type >>>> UNSIGNED_DATE (which according to Phoenix docs >>>> <http://phoenix.apache.org/language/datatypes.html#unsigned_date_type> >>>> does Hbase.toBytes(long) underneath for 8 bye long). I am storing data >> in >>>> this table using regular Bytes.toBytes from HBase api as well. >>>> >>>> Now I want to query data given a time range, and get all rows lying >>> within >>>> or overlapping the search range. Pretty standard scenario. >>>> >>>> For this I create a set of filtersList. A hierarchy of filtersList and >>>> filters in fact. >>>> >>>> If search criteria timerange is denoted by *sd* and *ed* >>>> >>>> And each row's date columns are denoted as *s* and *e* (signifying >> start >>>> and end datetimes.) >>>> >>>> These 4 filterLists are created as per logic given below.... >>>> >>>> filterListLeft (must past all)= This further contains 2 filters= (sd<= >> s >>>> and ed>=s) >>>> >>>> filterListRight (must past all)=This further contains 2 filters= (sd<= >> e >>>> and ed>=e) >>>> >>>> filterListOverlap (must past all)=This further contains 2 filters= >> (sd<= >>> s >>>> and ed>=e) >>>> >>>> filterListWiithin (must past all)= This further contains 2 filters= >> (sd>= >>>> s and ed<=e) >>>> >>>> >>>> Then I add these 4 filterLists into another filterList and that must >> past >>>> one. I realize that some records might satisfy more than one filter >>> above. >>>> But that is OK. >>>> >>>> parentFilterList = new FilterList(must past one) >>>> parentFilterList.addFilter(filterListLeft): >>>> parentFilterList.addFilter(filterListRight): >>>> parentFilterList.addFilter(filterListOverlap): >>>> parentFilterList.addFilter(filterListWithin): >>>> >>>> Note all filters have setFilterIfMissing = true. >>>> >>>> Then I pass parentFilterList.addFilter to the scanner. >>>> >>>> So it is like= (A and B) or (B and C) or (D and E) or (F and G) >>>> >>>> But what is happening is that I only get data back for the records >>>> matching filterListWithin. No records which satisfy the other 3 >>> filterList >>>> criteria comeback. The data exists and is valid form for other >>> scenarios. I >>>> can also view it through Phoenix UI tools. >>>> >>>> What am I missing? Could this be a phoenix issue? >>>> >>>> Thanks like always. >>>> >>>> Regards, >>>> Shahab >>
