phoenix-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lars Hofhansl (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PHOENIX-5109) Hinted local index with uncovered column in the WHERE clause throws an exception.
Date Wed, 23 Jan 2019 23:02:00 GMT

    [ 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)

Mime
View raw message