[
https://issues.apache.org/jira/browse/PHOENIX-7492?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Istvan Toth updated PHOENIX-7492:
---------------------------------
Component/s: core
> 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
> Components: core
> Reporter: Abhradeep Kundu
> Assignee: Abhradeep Kundu
> Priority: Major
> Fix For: 5.3.0, 5.1.4, 5.2.2
>
>
> 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)