[ https://issues.apache.org/jira/browse/PHOENIX-5570?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Xu Cang updated PHOENIX-5570: ----------------------------- Description: Phoenix delete fails to delete row in below scenario: All columns are in PK, last PK column has null value in row. {code:java} CREATE TABLE IF NOT EXISTS TEST.KINGDOMTABLEWITHNULLPK3 ( TENANT_ID CHAR(15) NOT NULL, GLOBAL_PARTY_ID VARCHAR, GLOBAL_INPUT_ID VARCHAR, CONSTRAINT PK PRIMARY KEY (TENANT_ID, GLOBAL_PARTY_ID, GLOBAL_INPUT_ID DESC ) ) MULTI_TENANT=true; UPSERT INTO TEST.KINGDOMTABLEWITHNULLPK3 (TENANT_ID, GLOBAL_PARTY_ID) VALUES('00000000000DEL3','party1'); DELETE from TEST.KINGDOMTABLEWITHNULLPK3 where TENANT_ID='00000000000DEL3'AND GLOBAL_PARTY_ID='party1' AND GLOBAL_INPUT_ID is NULL ; 0: jdbc:phoenix:perf1hdaas-mnds2-1-prd.eng.sf> select * from TEST.KINGDOMTABLEWITHNULLPK3; ------------------------------------------------------------------------------------------------- TENANT_ID GLOBAL_PARTY_ID GLOBAL_INPUT_ID ------------------------------------------------------------------------------------------------- 00000000000DEL3 party1 ------------------------------------------------------------------------------------------------- 0: jdbc:phoenix:perf1hdaas-mnds2-1-prd.eng.sf> =================== But if there is one column after the GLOBAL_INPUT_ID column, delete works, as shown below. CREATE TABLE IF NOT EXISTS TEST.KINGDOMTABLEWITHNULLPK4 ( TENANT_ID CHAR(15) NOT NULL, GLOBAL_PARTY_ID VARCHAR, GLOBAL_INPUT_ID VARCHAR, TRAN_ID VARCHAR, CONSTRAINT PK PRIMARY KEY (TENANT_ID, GLOBAL_PARTY_ID, GLOBAL_INPUT_ID DESC, TRAN_ID ) ) MULTI_TENANT=true; UPSERT INTO TEST.KINGDOMTABLEWITHNULLPK4 (TENANT_ID, GLOBAL_PARTY_ID,TRAN_ID) VALUES('00000000000DEL3','party1’,’1’); delete from TEST.KINGDOMTABLEWITHNULLPK4 where TENANT_ID='00000000000DEL3'AND GLOBAL_PARTY_ID='party1' AND GLOBAL_INPUT_ID is NULL and TRAN_ID=‘1’ ; 0: jdbc:phoenix:perf1hdaas-mnds2-1-prd.eng.sf> select * from TEST.KINGDOMTABLEWITHNULLPK4; -----------------------------------------------------------------------------------------------------------------------------------------+ TENANT_ID GLOBAL_PARTY_ID GLOBAL_INPUT_ID TRAN_ID -----------------------------------------------------------------------------------------------------------------------------------------+ -----------------------------------------------------------------------------------------------------------------------------------------+ 0: jdbc:phoenix:perf1hdaas-mnds2-1-prd.eng.sf> {code} was: Phoenix delete fails to delete row in below scenario: All columns are in PK, last PK column has null value in row. CREATE TABLE IF NOT EXISTS TEST.KINGDOMTABLEWITHNULLPK3 ( TENANT_ID CHAR(15) NOT NULL, GLOBAL_PARTY_ID VARCHAR, GLOBAL_INPUT_ID VARCHAR, CONSTRAINT PK PRIMARY KEY (TENANT_ID, GLOBAL_PARTY_ID, GLOBAL_INPUT_ID DESC ) ) MULTI_TENANT=true; UPSERT INTO TEST.KINGDOMTABLEWITHNULLPK3 (TENANT_ID, GLOBAL_PARTY_ID) VALUES('00000000000DEL3','party1'); delete from TEST.KINGDOMTABLEWITHNULLPK3 where TENANT_ID='00000000000DEL3'AND GLOBAL_PARTY_ID='party1' AND GLOBAL_INPUT_ID is NULL ; 0: jdbc:phoenix:perf1hdaas-mnds2-1-prd.eng.sf> select * from TEST.KINGDOMTABLEWITHNULLPK3; +-----------------+------------------------------------------+------------------------------------------+ | TENANT_ID | GLOBAL_PARTY_ID | GLOBAL_INPUT_ID | +-----------------+------------------------------------------+------------------------------------------+ | 00000000000DEL3 | party1 | | +-----------------+------------------------------------------+------------------------------------------+ 0: jdbc:phoenix:perf1hdaas-mnds2-1-prd.eng.sf> =================== But if there is one column after the GLOBAL_INPUT_ID column, delete works, as shown below. CREATE TABLE IF NOT EXISTS TEST.KINGDOMTABLEWITHNULLPK4 ( TENANT_ID CHAR(15) NOT NULL, GLOBAL_PARTY_ID VARCHAR, GLOBAL_INPUT_ID VARCHAR, TRAN_ID VARCHAR, CONSTRAINT PK PRIMARY KEY (TENANT_ID, GLOBAL_PARTY_ID, GLOBAL_INPUT_ID DESC, TRAN_ID ) ) MULTI_TENANT=true; UPSERT INTO TEST.KINGDOMTABLEWITHNULLPK4 (TENANT_ID, GLOBAL_PARTY_ID,TRAN_ID) VALUES('00000000000DEL3','party1’,’1’); delete from TEST.KINGDOMTABLEWITHNULLPK4 where TENANT_ID='00000000000DEL3'AND GLOBAL_PARTY_ID='party1' AND GLOBAL_INPUT_ID is NULL and TRAN_ID=‘1’ ; 0: jdbc:phoenix:perf1hdaas-mnds2-1-prd.eng.sf> select * from TEST.KINGDOMTABLEWITHNULLPK4; +-----------------+------------------------------------------+------------------------------------------+------------------------------------------+ | TENANT_ID | GLOBAL_PARTY_ID | GLOBAL_INPUT_ID | TRAN_ID | +-----------------+------------------------------------------+------------------------------------------+------------------------------------------+ +-----------------+------------------------------------------+------------------------------------------+------------------------------------------+ 0: jdbc:phoenix:perf1hdaas-mnds2-1-prd.eng.sf> > Delete fails to delete data with null value in last column of PK. (all > columns are in PK) > ----------------------------------------------------------------------------------------- > > Key: PHOENIX-5570 > URL: https://issues.apache.org/jira/browse/PHOENIX-5570 > Project: Phoenix > Issue Type: Bug > Reporter: Xu Cang > Priority: Major > > Phoenix delete fails to delete row in below scenario: > All columns are in PK, last PK column has null value in row. > > > {code:java} > CREATE TABLE IF NOT EXISTS TEST.KINGDOMTABLEWITHNULLPK3 ( > TENANT_ID CHAR(15) NOT NULL, > GLOBAL_PARTY_ID VARCHAR, > GLOBAL_INPUT_ID VARCHAR, > CONSTRAINT PK PRIMARY KEY > (TENANT_ID, > GLOBAL_PARTY_ID, > GLOBAL_INPUT_ID DESC > ) ) MULTI_TENANT=true; > > UPSERT INTO TEST.KINGDOMTABLEWITHNULLPK3 (TENANT_ID, GLOBAL_PARTY_ID) > VALUES('00000000000DEL3','party1'); > DELETE from TEST.KINGDOMTABLEWITHNULLPK3 where TENANT_ID='00000000000DEL3'AND > GLOBAL_PARTY_ID='party1' AND GLOBAL_INPUT_ID is NULL ; > > 0: jdbc:phoenix:perf1hdaas-mnds2-1-prd.eng.sf> select * from > TEST.KINGDOMTABLEWITHNULLPK3; > ------------------------------------------------------------------------------------------------- > TENANT_ID GLOBAL_PARTY_ID > GLOBAL_INPUT_ID > ------------------------------------------------------------------------------------------------- > 00000000000DEL3 party1 > > ------------------------------------------------------------------------------------------------- > 0: jdbc:phoenix:perf1hdaas-mnds2-1-prd.eng.sf> > > > =================== > But if there is one column after the GLOBAL_INPUT_ID column, delete works, as > shown below. > > CREATE TABLE IF NOT EXISTS TEST.KINGDOMTABLEWITHNULLPK4 ( > TENANT_ID CHAR(15) NOT NULL, > GLOBAL_PARTY_ID VARCHAR, > GLOBAL_INPUT_ID VARCHAR, > TRAN_ID VARCHAR, > CONSTRAINT PK PRIMARY KEY > (TENANT_ID, > GLOBAL_PARTY_ID, > GLOBAL_INPUT_ID DESC, > TRAN_ID > ) ) MULTI_TENANT=true; > > UPSERT INTO TEST.KINGDOMTABLEWITHNULLPK4 (TENANT_ID, GLOBAL_PARTY_ID,TRAN_ID) > VALUES('00000000000DEL3','party1’,’1’); > > delete from TEST.KINGDOMTABLEWITHNULLPK4 where TENANT_ID='00000000000DEL3'AND > GLOBAL_PARTY_ID='party1' AND GLOBAL_INPUT_ID is NULL and TRAN_ID=‘1’ ; > 0: jdbc:phoenix:perf1hdaas-mnds2-1-prd.eng.sf> select * from > TEST.KINGDOMTABLEWITHNULLPK4; > -----------------------------------------------------------------------------------------------------------------------------------------+ > TENANT_ID GLOBAL_PARTY_ID > GLOBAL_INPUT_ID TRAN_ID > -----------------------------------------------------------------------------------------------------------------------------------------+ > -----------------------------------------------------------------------------------------------------------------------------------------+ > 0: jdbc:phoenix:perf1hdaas-mnds2-1-prd.eng.sf> > {code} > -- This message was sent by Atlassian Jira (v8.3.4#803005)