[ https://issues.apache.org/jira/browse/PHOENIX-6669?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Xinyi Yan updated PHOENIX-6669: ------------------------------- Description: {code:java} CREATE TABLE IF NOT EXISTS DUMMY ( PK1 VARCHAR NOT NULL, PK2 BIGINT NOT NULL, PK3 BIGINT NOT NULL, PK4 VARCHAR NOT NULL, COL1 BIGINT, COL2 INTEGER, COL3 VARCHAR, COL4 VARCHAR, CONSTRAINT PK PRIMARY KEY ( PK1, PK2, PK3, PK4 ) );UPSERT INTO DUMMY (PK1, PK4, COL1, PK2, COL2, PK3, COL3, COL4) VALUES ('xx', 'xid1', 0, 7, 7, 7, 'INSERT', null); {code} The non-RVC query returns no row, but the RVC query returns a wrong result. {code:java} 0: jdbc:phoenix:localhost> select PK2 . . . . . . . . . . . . .> from DUMMY . . . . . . . . . . . . .> where PK1 ='xx' . . . . . . . . . . . . .> and (PK1 > 'xx' AND PK1 <= 'xx') . . . . . . . . . . . . .> and (PK2 > 5 AND PK2 <=5) . . . . . . . . . . . . .> and (PK3 > 2 AND PK3 <=2); +------------------------------------------+ | PK2 | +------------------------------------------+ +------------------------------------------+ No rows selected (0.022 seconds) 0: jdbc:phoenix:localhost> select PK2 . . . . . . . . . . . . .> from DUMMY . . . . . . . . . . . . .> where (PK1 = 'xx') . . . . . . . . . . . . .> and (PK1, PK2, PK3) > ('xx', 5, 2) . . . . . . . . . . . . .> and (PK1, PK2, PK3) <= ('xx', 5, 2); +------------------------------------------+ | PK2 | +------------------------------------------+ | 7 | +------------------------------------------+ 1 row selected (0.033 seconds) {code} {code:java} 0: jdbc:phoenix:localhost> EXPLAIN select PK2 from DUMMY where (PK1 = 'xx') and (PK1, PK2, PK3) > ('xx', 5, 2) and (PK1, PK2, PK3) <= ('xx', 5, 2); +------------------------------------------+------------------------------------------+------------------------------------------+--+ | PLAN | EST_BYTES_READ | EST_ROWS_READ | | +------------------------------------------+------------------------------------------+------------------------------------------+--+ | CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN RANGE SCAN OVER DUMMY ['xx'] | null | null | | SERVER FILTER BY FIRST KEY ONLY | null | null | | +------------------------------------------+------------------------------------------+------------------------------------------+--+ 2 rows selected (0.024 seconds) 0: jdbc:phoenix:localhost> explain select PK2 from DUMMY where PK1 ='xx' and (PK1 > 'xx' AND PK1 <= 'xx') and (PK2 > 5 AND PK2 <=5) and (PK3 > 2 AND PK3 <=2); +------------------------------------------+------------------------------------------+------------------------------------------+--+ | PLAN | EST_BYTES_READ | EST_ROWS_READ | | +------------------------------------------+------------------------------------------+------------------------------------------+--+ | DEGENERATE SCAN OVER DUMMY | null | null | | +------------------------------------------+------------------------------------------+------------------------------------------+--+ 1 row selected (0.015 seconds){code} was: {code:java} CREATE TABLE IF NOT EXISTS DUMMY ( PK1 VARCHAR NOT NULL, PK2 BIGINT NOT NULL, PK3 BIGINT NOT NULL, PK4 VARCHAR NOT NULL, COL1 BIGINT, COL2 INTEGER, COL3 VARCHAR, COL4 VARCHAR, CONSTRAINT PK PRIMARY KEY ( PK1, PK2, PK3, PK4 ) );UPSERT INTO DUMMY (PK1, PK4, COL1, PK2, COL2, PK3, COL3, COL4) VALUES ('xx', 'xid1', 0, 7, 7, 7, 'INSERT', null); {code} The non-RVC query returns no row, but the RVC query returns a wrong result. {code:java} 0: jdbc:phoenix:localhost> select PK2 . . . . . . . . . . . . .> from DUMMY . . . . . . . . . . . . .> where (PK1 = 'xx') . . . . . . . . . . . . .> and ((PK2 > 5 AND PK2 <=5)) . . . . . . . . . . . . .> and ((PK3 > 2 AND PK3 <=2)); +------------------------------------------+ | PK2 | +------------------------------------------+ +------------------------------------------+ No rows selected (0.022 seconds) 0: jdbc:phoenix:localhost> select PK2 . . . . . . . . . . . . .> from DUMMY . . . . . . . . . . . . .> where (PK1 = 'xx') . . . . . . . . . . . . .> and (PK1, PK2, PK3) > ('xx', 5, 2) . . . . . . . . . . . . .> and (PK1, PK2, PK3) <= ('xx', 5, 2); +------------------------------------------+ | PK2 | +------------------------------------------+ | 7 | +------------------------------------------+ 1 row selected (0.033 seconds) {code} {code:java} 0: jdbc:phoenix:localhost> EXPLAIN select PK2 from DUMMY where (PK1 = 'xx') and (PK1, PK2, PK3) > ('xx', 5, 2) and (PK1, PK2, PK3) <= ('xx', 5, 2); +------------------------------------------+------------------------------------------+------------------------------------------+--+ | PLAN | EST_BYTES_READ | EST_ROWS_READ | | +------------------------------------------+------------------------------------------+------------------------------------------+--+ | CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN RANGE SCAN OVER DUMMY ['xx'] | null | null | | SERVER FILTER BY FIRST KEY ONLY | null | null | | +------------------------------------------+------------------------------------------+------------------------------------------+--+ 2 rows selected (0.024 seconds) 0: jdbc:phoenix:localhost> EXPLAIN select PK2 from DUMMY where (PK1 = 'xx') and ((PK2 > 5 AND PK2 <=5)) and ((PK3 > 2 AND PK3 <=2)); +------------------------------------------+------------------------------------------+------------------------------------------+--+ | PLAN | EST_BYTES_READ | EST_ROWS_READ | | +------------------------------------------+------------------------------------------+------------------------------------------+--+ | DEGENERATE SCAN OVER DUMMY | null | null | | +------------------------------------------+------------------------------------------+------------------------------------------+--+ 1 row selected (0.005 seconds) {code} > RVC returns a wrong result > -------------------------- > > Key: PHOENIX-6669 > URL: https://issues.apache.org/jira/browse/PHOENIX-6669 > Project: Phoenix > Issue Type: Bug > Affects Versions: 4.16.1 > Reporter: Xinyi Yan > Priority: Major > > {code:java} > CREATE TABLE IF NOT EXISTS DUMMY ( > PK1 VARCHAR NOT NULL, > PK2 BIGINT NOT NULL, > PK3 BIGINT NOT NULL, > PK4 VARCHAR NOT NULL, > COL1 BIGINT, > COL2 INTEGER, > COL3 VARCHAR, > COL4 VARCHAR, CONSTRAINT PK PRIMARY KEY > ( > PK1, > PK2, > PK3, > PK4 > ) > );UPSERT INTO DUMMY (PK1, PK4, COL1, PK2, COL2, PK3, COL3, COL4) > VALUES ('xx', 'xid1', 0, 7, 7, 7, 'INSERT', null); > {code} > The non-RVC query returns no row, but the RVC query returns a wrong result. > {code:java} > 0: jdbc:phoenix:localhost> select PK2 > . . . . . . . . . . . . .> from DUMMY > . . . . . . . . . . . . .> where PK1 ='xx' > . . . . . . . . . . . . .> and (PK1 > 'xx' AND PK1 <= 'xx') > . . . . . . . . . . . . .> and (PK2 > 5 AND PK2 <=5) > . . . . . . . . . . . . .> and (PK3 > 2 AND PK3 <=2); > +------------------------------------------+ > | PK2 | > +------------------------------------------+ > +------------------------------------------+ > No rows selected (0.022 seconds) > 0: jdbc:phoenix:localhost> select PK2 > . . . . . . . . . . . . .> from DUMMY > . . . . . . . . . . . . .> where (PK1 = 'xx') > . . . . . . . . . . . . .> and (PK1, PK2, PK3) > ('xx', 5, 2) > . . . . . . . . . . . . .> and (PK1, PK2, PK3) <= ('xx', 5, 2); > +------------------------------------------+ > | PK2 | > +------------------------------------------+ > | 7 | > +------------------------------------------+ > 1 row selected (0.033 seconds) {code} > {code:java} > 0: jdbc:phoenix:localhost> EXPLAIN select PK2 from DUMMY where (PK1 = 'xx') > and (PK1, PK2, PK3) > ('xx', 5, 2) and (PK1, PK2, PK3) <= ('xx', 5, 2); > +------------------------------------------+------------------------------------------+------------------------------------------+--+ > | PLAN | EST_BYTES_READ > | EST_ROWS_READ | | > +------------------------------------------+------------------------------------------+------------------------------------------+--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN RANGE SCAN OVER DUMMY ['xx'] | > null | null | > | SERVER FILTER BY FIRST KEY ONLY | null > | null | | > +------------------------------------------+------------------------------------------+------------------------------------------+--+ > 2 rows selected (0.024 seconds) > 0: jdbc:phoenix:localhost> explain select PK2 from DUMMY where PK1 ='xx' and > (PK1 > 'xx' AND PK1 <= 'xx') and (PK2 > 5 AND PK2 <=5) and (PK3 > 2 AND PK3 > <=2); > +------------------------------------------+------------------------------------------+------------------------------------------+--+ > | PLAN | EST_BYTES_READ > | EST_ROWS_READ | | > +------------------------------------------+------------------------------------------+------------------------------------------+--+ > | DEGENERATE SCAN OVER DUMMY | null > | null | | > +------------------------------------------+------------------------------------------+------------------------------------------+--+ > 1 row selected (0.015 seconds){code} -- This message was sent by Atlassian Jira (v8.20.1#820001)