You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Gasper Metelko (JIRA)" <ji...@apache.org> on 2015/09/29 11:41:05 UTC

[jira] [Updated] (PHOENIX-2295) NullPointerException when parisng a query with hints in UNION ALL

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

Gasper Metelko updated PHOENIX-2295:
------------------------------------
    Description: 
On the following db objects:
CREATE TABLE table1 (
  id BIGINT,
  col1 VARCHAR,
  col2 VARCHAR,
  CONSTRAINT pk PRIMARY KEY (id)) IMMUTABLE_ROWS=true;
 
CREATE TABLE table2 (
  id BIGINT,
  col1 VARCHAR,
  col2 VARCHAR,
  CONSTRAINT pk PRIMARY KEY (id)) IMMUTABLE_ROWS=true;
 
CREATE INDEX INDEX_TABLE1_COL ON table1 (col1);
 
CREATE INDEX INDEX_TABLE2_COL ON table2 (col1);

explain SELECT /*+ INDEX(table1 INDEX_TABLE1_COL) */ col1, col2 FROM table1 WHERE col1='123' UNION ALL SELECT /*+ INDEX(table2 INDEX_TABLE2_COL) */ col1, col2 FROM table2 WHERE col1='123';

On running the above statement there is a NPE:
java.lang.NullPointerException
        at java.util.ArrayList.addAll(ArrayList.java:559)
        at org.apache.phoenix.iterate.UnionResultIterators.<init>(UnionResultIterators.java:51)
        at org.apache.phoenix.execute.UnionPlan.iterator(UnionPlan.java:131)
        at org.apache.phoenix.execute.UnionPlan.iterator(UnionPlan.java:127)
        at org.apache.phoenix.execute.UnionPlan.getExplainPlan(UnionPlan.java:150)
        at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableExplainStatement.compilePlan(PhoenixStatement.java:424)
        at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableExplainStatement.compilePlan(PhoenixStatement.java:403)
        at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:246)
        at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:241)
        at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
        at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:240)
        at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1250)
        at sqlline.Commands.execute(Commands.java:822)
        at sqlline.Commands.sql(Commands.java:732)
        at sqlline.SqlLine.dispatch(SqlLine.java:808)
        at sqlline.SqlLine.begin(SqlLine.java:681)
        at sqlline.SqlLine.start(SqlLine.java:398)
        at sqlline.SqlLine.main(SqlLine.java:292)


  was:
On the following db objects:
CREATE TABLE table1 (
  id BIGINT,
  col1 VARCHAR,
  col2 VARCHAR,
  CONSTRAINT pk PRIMARY KEY (id)) IMMUTABLE_ROWS=true;
 
CREATE TABLE table2 (
  id BIGINT,
  col1 VARCHAR,
  col2 VARCHAR,
  CONSTRAINT pk PRIMARY KEY (id)) IMMUTABLE_ROWS=true;
 
CREATE INDEX INDEX_TABLE1_COL ON table1 (col1);
 
CREATE INDEX INDEX_TABLE2_COL ON table2 (col1);

explain SELECT /*+ INDEX(table1 INDEX_TABLE1_COL) */ col1, col2 FROM table1 WHERE col1='123' UNION ALL SELECT /*+ INDEX(table2 INDEX_TABLE2_COL) */ col1, col2 FROM table2 WHERE col1='123';

On running the above statment there is a NPE:
java.lang.NullPointerException
        at java.util.ArrayList.addAll(ArrayList.java:559)
        at org.apache.phoenix.iterate.UnionResultIterators.<init>(UnionResultIterators.java:51)
        at org.apache.phoenix.execute.UnionPlan.iterator(UnionPlan.java:131)
        at org.apache.phoenix.execute.UnionPlan.iterator(UnionPlan.java:127)
        at org.apache.phoenix.execute.UnionPlan.getExplainPlan(UnionPlan.java:150)
        at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableExplainStatement.compilePlan(PhoenixStatement.java:424)
        at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableExplainStatement.compilePlan(PhoenixStatement.java:403)
        at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:246)
        at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:241)
        at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
        at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:240)
        at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1250)
        at sqlline.Commands.execute(Commands.java:822)
        at sqlline.Commands.sql(Commands.java:732)
        at sqlline.SqlLine.dispatch(SqlLine.java:808)
        at sqlline.SqlLine.begin(SqlLine.java:681)
        at sqlline.SqlLine.start(SqlLine.java:398)
        at sqlline.SqlLine.main(SqlLine.java:292)



> NullPointerException when parisng a query with hints in UNION ALL
> -----------------------------------------------------------------
>
>                 Key: PHOENIX-2295
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2295
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.4.0
>         Environment: Linux, phoenix phoenix-4.4.0-HBase-1.1
>            Reporter: Gasper Metelko
>
> On the following db objects:
> CREATE TABLE table1 (
>   id BIGINT,
>   col1 VARCHAR,
>   col2 VARCHAR,
>   CONSTRAINT pk PRIMARY KEY (id)) IMMUTABLE_ROWS=true;
>  
> CREATE TABLE table2 (
>   id BIGINT,
>   col1 VARCHAR,
>   col2 VARCHAR,
>   CONSTRAINT pk PRIMARY KEY (id)) IMMUTABLE_ROWS=true;
>  
> CREATE INDEX INDEX_TABLE1_COL ON table1 (col1);
>  
> CREATE INDEX INDEX_TABLE2_COL ON table2 (col1);
> explain SELECT /*+ INDEX(table1 INDEX_TABLE1_COL) */ col1, col2 FROM table1 WHERE col1='123' UNION ALL SELECT /*+ INDEX(table2 INDEX_TABLE2_COL) */ col1, col2 FROM table2 WHERE col1='123';
> On running the above statement there is a NPE:
> java.lang.NullPointerException
>         at java.util.ArrayList.addAll(ArrayList.java:559)
>         at org.apache.phoenix.iterate.UnionResultIterators.<init>(UnionResultIterators.java:51)
>         at org.apache.phoenix.execute.UnionPlan.iterator(UnionPlan.java:131)
>         at org.apache.phoenix.execute.UnionPlan.iterator(UnionPlan.java:127)
>         at org.apache.phoenix.execute.UnionPlan.getExplainPlan(UnionPlan.java:150)
>         at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableExplainStatement.compilePlan(PhoenixStatement.java:424)
>         at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableExplainStatement.compilePlan(PhoenixStatement.java:403)
>         at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:246)
>         at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:241)
>         at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
>         at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:240)
>         at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1250)
>         at sqlline.Commands.execute(Commands.java:822)
>         at sqlline.Commands.sql(Commands.java:732)
>         at sqlline.SqlLine.dispatch(SqlLine.java:808)
>         at sqlline.SqlLine.begin(SqlLine.java:681)
>         at sqlline.SqlLine.start(SqlLine.java:398)
>         at sqlline.SqlLine.main(SqlLine.java:292)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)