[ https://issues.apache.org/jira/browse/PHOENIX-5740?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Xinyi Yan updated PHOENIX-5740: ------------------------------- Description: !Screen Shot 2020-02-19 at 4.41.12 PM.png! {code:java} 0: jdbc:phoenix:localhost:49454> CREATE TABLE FOO (ID1 BIGINT NOT NULL , ID2 BIGINT NOT NULL, CONSTRAINT PK PRIMARY KEY(ID1, ID2)); No rows affected (1.262 seconds) 0: jdbc:phoenix:localhost:49454> EXPLAIN SELECT * FROM FOO WHERE ((ID1=1 AND ID2=1) OR (ID1=2 AND ID2=2)); +-------------------------------------------------------------------------------------------+-----------------+----------------+------+ | PLAN | EST_BYTES_READ | EST_ROWS_READ | EST_ | +-------------------------------------------------------------------------------------------+-----------------+----------------+------+ | CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER FOO | null | null | null | | SERVER FILTER BY FIRST KEY ONLY AND ((ID1 = 1 AND ID2 = 1) OR (ID1 = 2 AND ID2 = 2)) | null | null | null | +-------------------------------------------------------------------------------------------+-----------------+----------------+------+ 2 rows selected (0.008 seconds) {code} AS we can see, the pattern of WHERE (( all pk conditions) OR ( all pk conditions)) generates the wrong scan. Instead of a full scan, it should be a point lookup since we have full primary key listed. was: !Screen Shot 2020-02-19 at 4.41.12 PM.png! AS we can see, the pattern of WHERE (( all pk conditions) OR ( all pk conditions)) generates the wrong scan. Instead of a full scan, it should be a point lookup since we have full primary key listed. > WhereOptmizer doesn't generate optimized query plan > --------------------------------------------------- > > Key: PHOENIX-5740 > URL: https://issues.apache.org/jira/browse/PHOENIX-5740 > Project: Phoenix > Issue Type: Improvement > Reporter: Xinyi Yan > Priority: Major > Attachments: Screen Shot 2020-02-19 at 4.41.12 PM.png > > > !Screen Shot 2020-02-19 at 4.41.12 PM.png! > {code:java} > 0: jdbc:phoenix:localhost:49454> CREATE TABLE FOO (ID1 BIGINT NOT NULL , ID2 > BIGINT NOT NULL, CONSTRAINT PK PRIMARY KEY(ID1, ID2)); > No rows affected (1.262 seconds) > 0: jdbc:phoenix:localhost:49454> EXPLAIN SELECT * FROM FOO WHERE ((ID1=1 AND > ID2=1) OR (ID1=2 AND ID2=2)); > +-------------------------------------------------------------------------------------------+-----------------+----------------+------+ > | PLAN > | EST_BYTES_READ | EST_ROWS_READ | EST_ | > +-------------------------------------------------------------------------------------------+-----------------+----------------+------+ > | CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER FOO > | null | null | null | > | SERVER FILTER BY FIRST KEY ONLY AND ((ID1 = 1 AND ID2 = 1) OR (ID1 = 2 > AND ID2 = 2)) | null | null | null | > +-------------------------------------------------------------------------------------------+-----------------+----------------+------+ > 2 rows selected (0.008 seconds) > {code} > > AS we can see, the pattern of WHERE (( all pk conditions) OR ( all pk > conditions)) generates the wrong scan. > Instead of a full scan, it should be a point lookup since we have full > primary key listed. > > -- This message was sent by Atlassian Jira (v8.3.4#803005)