[ 
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)

Reply via email to