phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hudson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PHOENIX-2559) Keep filter for OR when only some expressions are extracted to stop/stop key
Date Tue, 05 Jan 2016 03:02:39 GMT

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

Hudson commented on PHOENIX-2559:
---------------------------------

SUCCESS: Integrated in Phoenix-master #1047 (See [https://builds.apache.org/job/Phoenix-master/1047/])
PHOENIX-2559 Keep filter for OR when only some expressions are (jtaylor: rev 3e41fe3971ec241f64d1eafdcb06f2f45ea30317)
* phoenix-core/src/test/java/org/apache/phoenix/compile/WhereCompilerTest.java
* phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
* phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanQueryIT.java


> Keep filter for OR when only some expressions are extracted to stop/stop key
> ----------------------------------------------------------------------------
>
>                 Key: PHOENIX-2559
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2559
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 3.3.1, 4.3.1
>         Environment: centOS
>            Reporter: ChenFangRong
>            Assignee: James Taylor
>              Labels: Bug, easytest
>             Fix For: 4.7.0
>
>         Attachments: PHOENIX-2559.patch, PHOENIX-2559_v2.patch
>
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> query results is incorrect when pk involved using '=' .
> for example,
> crate a table use sql:
> create table bugTable(ID varchar primary key,company varchar);
> upsert values use sql:
> upsert into bugTable values('i1','c1');
> upsert into bugTable values('i2','c2');
> upsert into bugTable values('i3','c3');
> the table is now like below,
> +------------+------------+
> |     ID     |  COMPANY   |
> +------------+------------+
> | i1         | c1         |
> | i2         | c2         |
> | i3         | c3         |
> +------------+------------+
> then use sql to query result from bugTable,
> select * from bugTable where ID = 'i1' or (ID = 'i2' and company = 'c3');
> the result expected:
> +------------+------------+
> |     ID     |  COMPANY   |
> +------------+------------+
> | i1         | c1         |
> +------------+------------+
> but, phoenix return the wrong result like below,
> +------------+------------+
> |     ID     |  COMPANY   |
> +------------+------------+
> | i1         | c1         |
> | i2         | c2         |
> +------------+------------+
> the condition  company = 'c3' is not used at all !
> and then you can find when sql query combine primary key '=' somthing  with any condition,then
the condition is not used at all either, it means when the sql like this,
> select xxx from xxx where pk = 'xxx' or (pk = 'xx' and any other condition);
> the any other condition does not used at all.
> I test the sql below all versions in phoenix before(including) version 4.3.1 & 3.3.1,
it turns out that all the version sql query result is wrong.
> I read the source code, and thought maybe the problem because when compile the sql query,
the pushKeyToExpression method lost the condition, and method evaluate in AndOrExpression
is not work.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message