Vaibhav Joshi created PHOENIX-7491:
--------------------------------------

             Summary: Mixed-cased alias doesn't work in select statement of 
“INNER JOIN”
                 Key: PHOENIX-7491
                 URL: https://issues.apache.org/jira/browse/PHOENIX-7491
             Project: Phoenix
          Issue Type: Bug
          Components: phoenix
            Reporter: Vaibhav Joshi


Mixed-cased alias doesn't work in select statement of “INNER JOIN”. Following 
are the repro steps.

*1. Setup: Create tables and views.*

 
{code:java}
CREATE TABLE T1 (ID CHAR(256) PRIMARY KEY, "F".DUMMY_COLUMN VARCHAR);

CREATE VIEW V1(ROWKEY VARCHAR PRIMARY KEY,F.COL1 VARCHAR,F.COL2 VARCHAR,F.COL3 
VARCHAR) AS SELECT * FROM T1;

CREATE TABLE T2 (ID CHAR(256) PRIMARY KEY, "F2".DUMMY_COLUMN VARCHAR);

CREATE VIEW V2(ROWKEY VARCHAR PRIMARY KEY,F2.COL1 VARCHAR,F2.COL2 
VARCHAR,F2.COL3 VARCHAR) AS SELECT * FROM T2; {code}
*2. Execute query - Alias name without quotes, which are treated as UPPERCASE 
internally*
{code:java}
SELECT MixedCaseAlias1."COL1" as "MixedCaseAlias1_COL1", 
"MixedCaseAlias2"."COL2" as "MixedCaseAlias2_COL2", "MixedCaseAlias2"."COL3" as 
"MixedCaseAlias2_COL3" FROM (SELECT "COL1", "COL2" FROM V1) AS MixedCaseAlias1 
INNER JOIN V2 AS "MixedCaseAlias2" on (MixedCaseAlias1."COL1" = 
"MixedCaseAlias2"."COL1") {code}
{+}Result{+}: Query is executed successfully
{code:java}
jdbc:phoenix:> SELECT MixedCaseAlias1."COL1" as "MixedCaseAlias1_COL1", 
"MixedCaseAlias2"."COL2" as "MixedCaseAlias2_COL2", "MixedCaseAlias2"."COL3" as 
"MixedCaseAlias2_COL3" FROM (SELECT "COL1", "COL2" FROM V1) AS MixedCaseAlias1 
INNER JOIN V2 AS "MixedCaseAlias2" on (MixedCaseAlias1."COL1" = 
"MixedCaseAlias2"."COL1");
+----------------------+----------------------+----------------------+
| MixedCaseAlias1_COL1 | MixedCaseAlias2_COL2 | MixedCaseAlias2_COL3 |
+----------------------+----------------------+----------------------+
+----------------------+----------------------+----------------------+
No rows selected (0.258 seconds)
0: jdbc:phoenix:> {code}
 

*3. Execute Problematic query - Alias name with quotes, which are not converted 
to UPPERCASE*
{code:java}
SELECT "MixedCaseAlias1"."COL1" as "MixedCaseAlias1_COL1", 
"MixedCaseAlias2"."COL2" as "MixedCaseAlias2_COL2", "MixedCaseAlias2"."COL3" as 
"MixedCaseAlias2_COL3" FROM (SELECT "COL1", "COL2" FROM V1) AS 
"MixedCaseAlias1" INNER JOIN V2 AS "MixedCaseAlias2" on 
("MixedCaseAlias1"."COL1" = "MixedCaseAlias2"."COL1") {code}
{+}Result{+}: Got exception
{code:java}
jdbc:phoenix:> SELECT "MixedCaseAlias1"."COL1" as "MixedCaseAlias1_COL1", 
"MixedCaseAlias2"."COL2" as "MixedCaseAlias2_COL2", "MixedCaseAlias2"."COL3" as 
"MixedCaseAlias2_COL3" FROM (SELECT "COL1", "COL2" FROM V1) AS 
"MixedCaseAlias1" INNER JOIN V2 AS "MixedCaseAlias2" on 
("MixedCaseAlias1"."COL1" = "MixedCaseAlias2"."COL1")
. . . .semicolon> ;
java.lang.NullPointerException
    at 
org.apache.phoenix.compile.FromCompiler.getResolverForCompiledDerivedTable(FromCompiler.java:301)
    at 
org.apache.phoenix.compile.JoinCompiler$Table.createProjectedTable(JoinCompiler.java:1145)
    at 
org.apache.phoenix.compile.QueryCompiler.compileJoinQuery(QueryCompiler.java:348)
    at 
org.apache.phoenix.compile.QueryCompiler.compileJoinQuery(QueryCompiler.java:302)
    at 
org.apache.phoenix.compile.QueryCompiler.compileSelect(QueryCompiler.java:249)
    at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:178)
    at 
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:543)
    at 
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:506)
    at 
org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:311)
    at 
org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:300)
    at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
    at 
org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:299)
    at 
org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:292)
    at 
org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:2021)
    at sqlline.Commands.executeSingleQuery(Commands.java:1054)
    at sqlline.Commands.execute(Commands.java:1003)
    at sqlline.Commands.sql(Commands.java:967)
    at sqlline.SqlLine.dispatch(SqlLine.java:734)
    at sqlline.SqlLine.begin(SqlLine.java:541)
    at sqlline.SqlLine.start(SqlLine.java:267)
    at sqlline.SqlLine.main(SqlLine.java:206) {code}
 



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

Reply via email to