You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Hadoop QA (JIRA)" <ji...@apache.org> on 2016/07/13 22:12:20 UTC

[jira] [Commented] (PHOENIX-3042) Using functional index expression in where statement for join query fails.

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

Hadoop QA commented on PHOENIX-3042:
------------------------------------

{color:red}-1 overall{color}.  Here are the results of testing the latest attachment 
  http://issues.apache.org/jira/secure/attachment/12817791/PHOENIX-3042-V2.patch
  against master branch at commit e5a8dca90c369320ee12098e42f856626f2c9d69.
  ATTACHMENT ID: 12817791

    {color:green}+1 @author{color}.  The patch does not contain any @author tags.

    {color:green}+1 tests included{color}.  The patch appears to include 3 new or modified tests.

    {color:green}+1 javac{color}.  The applied patch does not increase the total number of javac compiler warnings.

    {color:red}-1 javadoc{color}.  The javadoc tool appears to have generated 35 warning messages.

    {color:green}+1 release audit{color}.  The applied patch does not increase the total number of release audit warnings.

    {color:red}-1 lineLengths{color}.  The patch introduces the following lines longer than 100:
    +        String nameSuffix = "T" + (mutable ? "MUTABLE" : "_IMMUTABLE") + (localIndex ? "_LOCAL" : "_GLOBAL");
+                                + "( c_customer_sk varchar primary key, c_first_name varchar, c_last_name varchar )"
+                + " INDEX " + indexName + " ON " + tableName + " (c_customer_sk || c_first_name asc) include (c_customer_sk)");
+            PreparedStatement stmt = conn.prepareStatement("UPSERT INTO " + tableName + " VALUES(?,?,?)");
+            	assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + tableName + " [1,'1David']\n" + 
+    public IndexStatementRewriter(ColumnResolver dataResolver, Map<TableRef, TableRef> multiTableRewriteMap, boolean setTableAlias) {
+        return rewrite(statement, new IndexStatementRewriter(dataResolver, multiTableRewriteMap, false));
+        // if the setTableAlias flag is true and the original table has an alias we use that as the table name
+        SelectStatement indexSelect = IndexStatementRewriter.translate(NODE_FACTORY.select(select, newFrom), resolver, replacement);
+            indexSelect = ParseNodeRewriter.rewrite(indexSelect, new  IndexExpressionParseNodeRewriter(indexTableRef.getTable(), indexTableRef.getTableAlias(), statement.getConnection(), indexSelect.getUdfParseNodes()));

    {color:green}+1 core tests{color}.  The patch passed unit tests in .

     {color:red}-1 core zombie tests{color}.  There are 1 zombie test(s): 	at org.apache.ambari.server.state.stack.LatestRepoCallable.mergeDefinitions(LatestRepoCallable.java:233)
	at org.apache.ambari.server.state.stack.LatestRepoCallable.call(LatestRepoCallable.java:176)
	at org.apache.ambari.server.state.stack.LatestRepoCallable.call(LatestRepoCallable.java:47)

Test results: https://builds.apache.org/job/PreCommit-PHOENIX-Build/445//testReport/
Javadoc warnings: https://builds.apache.org/job/PreCommit-PHOENIX-Build/445//artifact/patchprocess/patchJavadocWarnings.txt
Console output: https://builds.apache.org/job/PreCommit-PHOENIX-Build/445//console

This message is automatically generated.

> Using functional index 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
>             Fix For: 4.9.0
>
>         Attachments: PHOENIX-3042-V2.patch, 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)