[ 
https://issues.apache.org/jira/browse/PHOENIX-1102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14067606#comment-14067606
 ] 

James Taylor commented on PHOENIX-1102:
---------------------------------------

Thanks for the patch, [~anoop.hbase]. How about this instead?
- move the cfSet member variable up to MultiKeyValueComparisonFilter (the 
common base class) and declare it as protected.
- instantiate it in the MultiKeyValueComparisonFilter.init() method and remove 
the MultiCFCQKeyValueComparisonFilter.init() method
- move the override of the isFamilyEssential(byte[] name) implementation up 
from MultiCFCQKeyValueComparisonFilter to MultiKeyValueComparisonFilter.
- in MultiCQKeyValueComparisonFilter, get rid of the cf member variable (as it 
will no longer be used).
- in MultiCQKeyValueComparisonFilter.newColumnKey() method, make a call to 
cfSet.add(cfKey) right before the return statement (just like 
MultiCFCQKeyValueComparisonFilter does).

In this way, both MultiCQKeyValueComparisonFilter and 
MultiCFCQKeyValueComparisonFilter will correctly track all of the column 
families that are referenced and will do the right thing for the 
isFamilyEssential() method. Plus, we can keep the optimization of not needing 
to compare the column family unless necessary.

> Query Finds No Rows When Using Multiple Column Families
> -------------------------------------------------------
>
>                 Key: PHOENIX-1102
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1102
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 3.0.0, 4.0.0, 5.0.0
>            Reporter: James Taylor
>            Assignee: Anoop Sam John
>         Attachments: PHOENIX-1102.patch
>
>
> When using multiple column families, query does not find all expected rows.
>  
> My table schema:
> CREATE TABLE IF NOT EXISTS FAMILY_TEST (
>   NUM1 INTEGER NOT NULL,
>   AA.NUM2 INTEGER,
>   BB.NUM3 INTEGER,
>   CONSTRAINT my_pk PRIMARY KEY (NUM1));
> I populated it with one row, assigning 1 to each field.  I can verify that 
> the record is there, but I can not get a simple expression working that uses 
> fields across two column families:
> SELECT * FROM FAMILY_TEST;
>       NUM1       NUM2       NUM3 
> ---------- ---------- ---------- 
>          1          1          1 
> Time: 0.038 sec(s)
> SELECT * FROM FAMILY_TEST WHERE NUM2=1 AND NUM3=1;
> no rows selected
> Time: 0.039 sec(s)
> I understand that columns to be queried together should usually be in the 
> same column family for efficiency, but I did not expect my second query to 
> not work at all.  Or if it is not supported, I would expect an error.  I get 
> the same results if I use AA.NUM2 and BB.NUM3 as well.
> I am using Phoenix 3.0.0.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to