phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Taylor (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (PHOENIX-3042) Using local index on the expression in where statement for join query fails.
Date Sat, 09 Jul 2016 08:25:10 GMT

    [ https://issues.apache.org/jira/browse/PHOENIX-3042?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15368990#comment-15368990
] 

James Taylor edited comment on PHOENIX-3042 at 7/9/16 8:25 AM:
---------------------------------------------------------------

Patch looks good, [~tdsilva]. So the table alias was messing up functional indexes? Is this
just for tables with joins? And what would happen if the table alias was required because
two tables have the same column? If the answer is "we don't handle that case" and "we'd have
to completely change the way we determine whether or not a functional index may be used",
then your workaround is reasonable, but please file a follow up JIRA. I think when we move
to Calcite, this is one of those issues that goes away (or worst case is replaced by new bugs
:-) ).


was (Author: jamestaylor):
Patch looks good, [~tdsilva]. So the table alias was messing up functional indexes? Is this
just for tables with joins? And what would happen if the table alias was required because
two tables have the same column?

> Using local index on the expression in where statement for join query fails. 
> -----------------------------------------------------------------------------
>
>                 Key: PHOENIX-3042
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3042
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.8.0
>            Reporter: Sergey Soldatov
>            Assignee: Thomas D'Silva
>         Attachments: PHOENIX-3042.patch
>
>
> A simple scenario:
> {noformat}
> CREATE TABLE customer_phx ( c_customer_sk varchar primary key, c_first_name varchar,
c_last_name varchar );
> UPSERT INTO customer_phx values ( '1', 'David', 'Smith');
> CREATE LOCAL INDEX CUSTINDEX ON customer_phx (c_customer_sk || c_first_name asc) include
(c_customer_sk);
> select c.c_customer_sk from  customer_phx c left outer join customer_phx c2 on c.c_customer_sk
= c2.c_customer_sk where c.c_customer_sk || c.c_first_name = '1David';
> {noformat}
> It fails with an Exception :
> {noformat}
> Error: ERROR 504 (42703): Undefined column. columnName=C_FIRST_NAME (state=42703,code=504)
> org.apache.phoenix.schema.ColumnNotFoundException: ERROR 504 (42703): Undefined column.
columnName=C_FIRST_NAME
> 	at org.apache.phoenix.compile.WhereCompiler$WhereExpressionCompiler.resolveColumn(WhereCompiler.java:190)
> 	at org.apache.phoenix.compile.WhereCompiler$WhereExpressionCompiler.visit(WhereCompiler.java:169)
> 	at org.apache.phoenix.compile.WhereCompiler$WhereExpressionCompiler.visit(WhereCompiler.java:156)
> 	at org.apache.phoenix.parse.ColumnParseNode.accept(ColumnParseNode.java:56)
> 	at org.apache.phoenix.parse.CompoundParseNode.acceptChildren(CompoundParseNode.java:64)
> 	at org.apache.phoenix.parse.StringConcatParseNode.accept(StringConcatParseNode.java:46)
> 	at org.apache.phoenix.parse.CompoundParseNode.acceptChildren(CompoundParseNode.java:64)
> 	at org.apache.phoenix.parse.ComparisonParseNode.accept(ComparisonParseNode.java:45)
> 	at org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:130)
> 	at org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:100)
> 	at org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:556)
> 	at org.apache.phoenix.compile.QueryCompiler.compileJoinQuery(QueryCompiler.java:324)
> 	at org.apache.phoenix.compile.QueryCompiler.compileSelect(QueryCompiler.java:200)
> 	at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:157)
> 	at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:404)
> 	at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:378)
> 	at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:271)
> 	at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:266)
> 	at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
> 	at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:265)
> 	at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1444)
> 	at sqlline.Commands.execute(Commands.java:822)
> 	at sqlline.Commands.sql(Commands.java:732)
> 	at sqlline.SqlLine.dispatch(SqlLine.java:807)
> 	at sqlline.SqlLine.begin(SqlLine.java:681)
> 	at sqlline.SqlLine.start(SqlLine.java:398)
> 	at sqlline.SqlLine.main(SqlLine.java:292)
> {noformat}
> Meanwhile using the same where statement without join works just fine.
> Any ideas [~jamestaylor], [~ramkrishna.s.vasudevan@gmail.com] ?



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

Mime
View raw message