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)