[ 
https://issues.apache.org/jira/browse/PHOENIX-7492?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Abhradeep Kundu updated PHOENIX-7492:
-------------------------------------
    Description: 
Steps to Reproduce

1) Create below tables

 
{code:java}
CREATE TABLE ACCOUNT (
ACCOUNT_IDENTIFIER VARCHAR(100) NOT NULL,
CRN_NUMBER_TEXT VARCHAR(100),
ORIGINAL_CURRENCY_CODE VARCHAR(100),
OUTSTANDING_BALANCE_AMOUNT DECIMAL(20,4),
SOURCE_SYSTEM_CODE VARCHAR(6) NOT NULL,
ACCOUNT_TYPE_CODE VARCHAR(100)
CONSTRAINT pk PRIMARY KEY (ACCOUNT_IDENTIFIER, SOURCE_SYSTEM_CODE)
) SALT_BUCKET=4;
CREATE TABLE EXCHANGE_RATE (
CURRENCY_CODE VARCHAR(3) NOT NULL,
SPOT_RATE DECIMAL(15,9),
EXPANDED_SPOT_RATE DECIMAL(19,9),
RECORD_LAST_UPDATE_DATE TIMESTAMP
CONSTRAINT pk PRIMARY KEY (CURRENCY_CODE)
)SALT_BUCKETS=4;
CREATE TABLE CUSTOMER (
CUSTOMER_IDENTIFIER VARCHAR(100),
SOURCE_SYSTEM_CODE VARCHAR(100) NOT NULL,
CRN_NUMBER_TEXT VARCHAR(100),
CONSTRAINT pk PRIMARY KEY (CUSTOMER_IDENTIFIER, SOURCE_SYSTEM_CODE)
) SALT_BUCKETS=4;
{code}
 

2) Upsert values
{code:java}
UPSERT INTO ACCOUNT VALUES ('ACC_1', 'CRN_1', 'IDR', 999, 'SRC_1', 'ATC_1');
UPSERT INTO EXCHANGE_RATE VALUES ('IDR', 0.53233436, 0.198919644, '2024-07-03');
UPSERT INTO CUSTOMER VALUES ('CUST_1', 'SRC_1','CRN_1');{code}
3) Run query
{code:java}
SELECT
    ca1.ORIGINAL_CURRENCY_CODE AS ORIGINAL_CURRENCY_CODE
FROM
    ACCOUNT ca1
LEFT JOIN EXCHANGE_RATE er1 ON
    ca1.ORIGINAL_CURRENCY_CODE = er1.CURRENCY_CODE
WHERE
    (ca1.ACCOUNT_IDENTIFIER,
    ca1.SOURCE_SYSTEM_CODE) IN (
    SELECT
        ca.ACCOUNT_IDENTIFIER,
        ca.SOURCE_SYSTEM_CODE
    FROM
        ACCOUNT ca
    WHERE
        ca.CRN_NUMBER_TEXT IN (
        SELECT
            CRN_NUMBER_TEXT
        FROM
            CUSTOMER
        WHERE
            CUSTOMER_IDENTIFIER = 'CUST_2'
        AND SOURCE_SYSTEM_CODE='SRC_1'))
AND ca1.ACCOUNT_TYPE_CODE IN ('ATC_1')
UNION ALL
SELECT
    ca1.ORIGINAL_CURRENCY_CODE AS ORIGINAL_CURRENCY_CODE
FROM
    ACCOUNT ca1
WHERE
    ca1.ACCOUNT_TYPE_CODE IN ('ATC_1');{code}
4) Result 

 
{code:java}
Caused by: java.lang.NullPointerException
    at 
org.apache.phoenix.cache.ServerCacheClient.removeServerCache(ServerCacheClient.java:380)
    at 
org.apache.phoenix.cache.ServerCacheClient.access$000(ServerCacheClient.java:89)
    at 
org.apache.phoenix.cache.ServerCacheClient$ServerCache.close(ServerCacheClient.java:211)
    at 
org.apache.phoenix.util.SQLCloseables.closeAllQuietly(SQLCloseables.java:59)
    at org.apache.phoenix.util.SQLCloseables.closeAll(SQLCloseables.java:46)
    at org.apache.phoenix.execute.BaseQueryPlan$1.close(BaseQueryPlan.java:229)
    at 
org.apache.phoenix.iterate.DelegateResultIterator.close(DelegateResultIterator.java:41)
    at 
org.apache.phoenix.iterate.LookAheadResultIterator$1.close(LookAheadResultIterator.java:50)
    at 
org.apache.phoenix.iterate.UnionResultIterators.close(UnionResultIterators.java:87)
 
{code}
 

  was:
Steps to Reproduce

1) Create below tables

CREATE TABLE ACCOUNT (
ACCOUNT_IDENTIFIER VARCHAR(100) NOT NULL,
CRN_NUMBER_TEXT VARCHAR(100),
ORIGINAL_CURRENCY_CODE VARCHAR(100),
OUTSTANDING_BALANCE_AMOUNT DECIMAL(20,4),
SOURCE_SYSTEM_CODE VARCHAR(6) NOT NULL,
ACCOUNT_TYPE_CODE VARCHAR(100)
CONSTRAINT pk PRIMARY KEY (ACCOUNT_IDENTIFIER, SOURCE_SYSTEM_CODE)
) SALT_BUCKET=4;

CREATE TABLE EXCHANGE_RATE (
CURRENCY_CODE VARCHAR(3) NOT NULL,
SPOT_RATE DECIMAL(15,9),
EXPANDED_SPOT_RATE DECIMAL(19,9),
RECORD_LAST_UPDATE_DATE TIMESTAMP
CONSTRAINT pk PRIMARY KEY (CURRENCY_CODE)
)SALT_BUCKETS=4;

CREATE TABLE CUSTOMER (
CUSTOMER_IDENTIFIER VARCHAR(100),
SOURCE_SYSTEM_CODE VARCHAR(100) NOT NULL,
CRN_NUMBER_TEXT VARCHAR(100),
CONSTRAINT pk PRIMARY KEY (CUSTOMER_IDENTIFIER, SOURCE_SYSTEM_CODE)
) SALT_BUCKETS=4;

2) Upsert values

UPSERT INTO ACCOUNT VALUES ('ACC_1', 'CRN_1', 'IDR', 999, 'SRC_1', 'ATC_1');
UPSERT INTO EXCHANGE_RATE VALUES ('IDR', 0.53233436, 0.198919644, '2024-07-03');
UPSERT INTO CUSTOMER VALUES ('CUST_1', 'SRC_1','CRN_1');

3) Run query

SELECT
    ca1.ORIGINAL_CURRENCY_CODE AS ORIGINAL_CURRENCY_CODE
FROM
    ACCOUNT ca1
LEFT JOIN EXCHANGE_RATE er1 ON
    ca1.ORIGINAL_CURRENCY_CODE = er1.CURRENCY_CODE
WHERE
    (ca1.ACCOUNT_IDENTIFIER,
    ca1.SOURCE_SYSTEM_CODE) IN (
    SELECT
        ca.ACCOUNT_IDENTIFIER,
        ca.SOURCE_SYSTEM_CODE
    FROM
        ACCOUNT ca
    WHERE
        ca.CRN_NUMBER_TEXT IN (
        SELECT
            CRN_NUMBER_TEXT
        FROM
            CUSTOMER
        WHERE
            CUSTOMER_IDENTIFIER = 'CUST_2'
        AND SOURCE_SYSTEM_CODE='SRC_1'))
AND ca1.ACCOUNT_TYPE_CODE IN ('ATC_1')
UNION ALL
SELECT
    ca1.ORIGINAL_CURRENCY_CODE AS ORIGINAL_CURRENCY_CODE
FROM
    ACCOUNT ca1
WHERE
    ca1.ACCOUNT_TYPE_CODE IN ('ATC_1');

4) Result 

 


> Subquery with join and union not working together when one side of union 
> finds no result
> ----------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-7492
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-7492
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Abhradeep Kundu
>            Assignee: Abhradeep Kundu
>            Priority: Major
>
> Steps to Reproduce
> 1) Create below tables
>  
> {code:java}
> CREATE TABLE ACCOUNT (
> ACCOUNT_IDENTIFIER VARCHAR(100) NOT NULL,
> CRN_NUMBER_TEXT VARCHAR(100),
> ORIGINAL_CURRENCY_CODE VARCHAR(100),
> OUTSTANDING_BALANCE_AMOUNT DECIMAL(20,4),
> SOURCE_SYSTEM_CODE VARCHAR(6) NOT NULL,
> ACCOUNT_TYPE_CODE VARCHAR(100)
> CONSTRAINT pk PRIMARY KEY (ACCOUNT_IDENTIFIER, SOURCE_SYSTEM_CODE)
> ) SALT_BUCKET=4;
> CREATE TABLE EXCHANGE_RATE (
> CURRENCY_CODE VARCHAR(3) NOT NULL,
> SPOT_RATE DECIMAL(15,9),
> EXPANDED_SPOT_RATE DECIMAL(19,9),
> RECORD_LAST_UPDATE_DATE TIMESTAMP
> CONSTRAINT pk PRIMARY KEY (CURRENCY_CODE)
> )SALT_BUCKETS=4;
> CREATE TABLE CUSTOMER (
> CUSTOMER_IDENTIFIER VARCHAR(100),
> SOURCE_SYSTEM_CODE VARCHAR(100) NOT NULL,
> CRN_NUMBER_TEXT VARCHAR(100),
> CONSTRAINT pk PRIMARY KEY (CUSTOMER_IDENTIFIER, SOURCE_SYSTEM_CODE)
> ) SALT_BUCKETS=4;
> {code}
>  
> 2) Upsert values
> {code:java}
> UPSERT INTO ACCOUNT VALUES ('ACC_1', 'CRN_1', 'IDR', 999, 'SRC_1', 'ATC_1');
> UPSERT INTO EXCHANGE_RATE VALUES ('IDR', 0.53233436, 0.198919644, 
> '2024-07-03');
> UPSERT INTO CUSTOMER VALUES ('CUST_1', 'SRC_1','CRN_1');{code}
> 3) Run query
> {code:java}
> SELECT
>     ca1.ORIGINAL_CURRENCY_CODE AS ORIGINAL_CURRENCY_CODE
> FROM
>     ACCOUNT ca1
> LEFT JOIN EXCHANGE_RATE er1 ON
>     ca1.ORIGINAL_CURRENCY_CODE = er1.CURRENCY_CODE
> WHERE
>     (ca1.ACCOUNT_IDENTIFIER,
>     ca1.SOURCE_SYSTEM_CODE) IN (
>     SELECT
>         ca.ACCOUNT_IDENTIFIER,
>         ca.SOURCE_SYSTEM_CODE
>     FROM
>         ACCOUNT ca
>     WHERE
>         ca.CRN_NUMBER_TEXT IN (
>         SELECT
>             CRN_NUMBER_TEXT
>         FROM
>             CUSTOMER
>         WHERE
>             CUSTOMER_IDENTIFIER = 'CUST_2'
>         AND SOURCE_SYSTEM_CODE='SRC_1'))
> AND ca1.ACCOUNT_TYPE_CODE IN ('ATC_1')
> UNION ALL
> SELECT
>     ca1.ORIGINAL_CURRENCY_CODE AS ORIGINAL_CURRENCY_CODE
> FROM
>     ACCOUNT ca1
> WHERE
>     ca1.ACCOUNT_TYPE_CODE IN ('ATC_1');{code}
> 4) Result 
>  
> {code:java}
> Caused by: java.lang.NullPointerException
>     at 
> org.apache.phoenix.cache.ServerCacheClient.removeServerCache(ServerCacheClient.java:380)
>     at 
> org.apache.phoenix.cache.ServerCacheClient.access$000(ServerCacheClient.java:89)
>     at 
> org.apache.phoenix.cache.ServerCacheClient$ServerCache.close(ServerCacheClient.java:211)
>     at 
> org.apache.phoenix.util.SQLCloseables.closeAllQuietly(SQLCloseables.java:59)
>     at org.apache.phoenix.util.SQLCloseables.closeAll(SQLCloseables.java:46)
>     at 
> org.apache.phoenix.execute.BaseQueryPlan$1.close(BaseQueryPlan.java:229)
>     at 
> org.apache.phoenix.iterate.DelegateResultIterator.close(DelegateResultIterator.java:41)
>     at 
> org.apache.phoenix.iterate.LookAheadResultIterator$1.close(LookAheadResultIterator.java:50)
>     at 
> org.apache.phoenix.iterate.UnionResultIterators.close(UnionResultIterators.java:87)
>  
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to