phoenix-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hudson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PHOENIX-5109) Allow local indexes to work for queries with uncovered columns.
Date Mon, 28 Jan 2019 11:38:00 GMT

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

Hudson commented on PHOENIX-5109:
---------------------------------

FAILURE: Integrated in Jenkins build PreCommit-PHOENIX-Build #2274 (See [https://builds.apache.org/job/PreCommit-PHOENIX-Build/2274/])
PHOENIX-5109; addendum, more tests, and test fixes. (larsh: rev 341dde7ed2433c39fbb01722d909f446717fdc17)
* (edit) phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
* (edit) phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
* (edit) phoenix-core/src/main/java/org/apache/phoenix/optimize/QueryOptimizer.java
PHOENIX-5109; 2nd addendum, test fixes. (larsh: rev 573ec9f73a86d236a6e69a2bac23f177a29f3c44)
* (edit) phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
* (edit) phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
* (edit) phoenix-core/src/main/java/org/apache/phoenix/optimize/QueryOptimizer.java


> Allow local indexes to work for queries with uncovered columns.
> ---------------------------------------------------------------
>
>                 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
>            Assignee: Lars Hofhansl
>            Priority: Major
>             Fix For: 4.15.0
>
>         Attachments: 5109-addendum.txt, 5109-addendum2.txt, 5109-v1.txt, 5109-v2.txt,
5109-v3.txt, 5109-v4-master.txt
>
>
> This change allows local indexes to be used for a wide set of queries where not all columns
are covered.
>  See scenarios in the test case attached with the patch.
> This is important for various reasons:
>  # Unlike global indexes, local indexes can support a wide range case where the queries
are not covered.
>  # Indexes that cover only the indexed columns are much friendlier to schema changes.
(changes to any extra included column cause a need to rebuild these indexes)
>  # A lot of storage is saved. The same is true for read and write IO.
> (Of course uncovered columns have disadvantages too, Phoenix needs to reassemble the
complete row in those cases.)
> —
> Was:
> 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:java}
> 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