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

Lars Hofhansl commented on PHOENIX-5109:
----------------------------------------

-v2 automates this. It looks at the plan. If the index plan managed to push any 
(bounded) KeyRanges into the plan we will very likely still benefiting from 
using the plan.
We can still use the cost-based planning, this just makes the plan eligible.
I'll add some tests, but please have a look at the code and let know if this 
heads down the wrong path. ([~tdsilva], [~vincentpoon])

> Hinted local index with uncovered column in the WHERE clause throws an 
> exception.
> ---------------------------------------------------------------------------------
>
>                 Key: PHOENIX-5109
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5109
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.14.1
>            Reporter: Lars Hofhansl
>            Priority: Major
>         Attachments: 5109-v1.txt, 5109-v2.txt
>
>
> Example:
> {{create table test (pk integer primary key, v1 float, v2 float, v3 
> integer);}}
> {{create local index l1 on test(v1);}}
> {{select /*+ INDEX(test l1) */ * from test where v2 = 1;}}
> {code}
> 0: jdbc:phoenix:localhost> select /*+ INDEX(test l1) */ * from test where v2 
> = 1;
> Error: ERROR 504 (42703): Undefined column. columnName=TEST.V2 
> (state=42703,code=504)
> org.apache.phoenix.schema.ColumnNotFoundException: ERROR 504 (42703): 
> Undefined column. columnName=TEST.V2
>       at 
> org.apache.phoenix.compile.WhereCompiler$WhereExpressionCompiler.resolveColumn(WhereCompiler.java:202)
>       at 
> org.apache.phoenix.compile.WhereCompiler$WhereExpressionCompiler.visit(WhereCompiler.java:177)
>       at 
> org.apache.phoenix.compile.WhereCompiler$WhereExpressionCompiler.visit(WhereCompiler.java:164)
>       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.CastParseNode.accept(CastParseNode.java:60)
>       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:138)
>       at 
> org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:108)
>       at 
> org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:559)
>       at 
> org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:510)
>       at 
> org.apache.phoenix.compile.QueryCompiler.compileSelect(QueryCompiler.java:195)
>       at 
> org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:155)
>       at 
> org.apache.phoenix.compile.QueryCompiler.compileSubquery(QueryCompiler.java:499)
>       at 
> org.apache.phoenix.compile.QueryCompiler.compileJoinQuery(QueryCompiler.java:221)
>       at 
> org.apache.phoenix.compile.QueryCompiler.compileJoinQuery(QueryCompiler.java:295)
>       at 
> org.apache.phoenix.compile.QueryCompiler.compileJoinQuery(QueryCompiler.java:230)
>       at 
> org.apache.phoenix.compile.QueryCompiler.compileSelect(QueryCompiler.java:193)
>       at 
> org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:155)
>       at 
> org.apache.phoenix.optimize.QueryOptimizer.addPlan(QueryOptimizer.java:399)
>       at 
> org.apache.phoenix.optimize.QueryOptimizer.getHintedQueryPlan(QueryOptimizer.java:279)
>       at 
> org.apache.phoenix.optimize.QueryOptimizer.getApplicablePlansForSingleFlatQuery(QueryOptimizer.java:220)
>       at 
> org.apache.phoenix.optimize.QueryOptimizer.getApplicablePlans(QueryOptimizer.java:133)
>       at 
> org.apache.phoenix.optimize.QueryOptimizer.optimize(QueryOptimizer.java:111)
>       at 
> org.apache.phoenix.optimize.QueryOptimizer.optimize(QueryOptimizer.java:97)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:309)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:291)
>       at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:290)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:283)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1830)
>       at sqlline.Commands.execute(Commands.java:822)
>       at sqlline.Commands.sql(Commands.java:732)
>       at sqlline.SqlLine.dispatch(SqlLine.java:813)
>       at sqlline.SqlLine.begin(SqlLine.java:686)
>       at sqlline.SqlLine.start(SqlLine.java:398)
>       at sqlline.SqlLine.main(SqlLine.java:291)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to