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