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

Tajo QA commented on TAJO-1565:
-------------------------------

{color:red}*-1 overall.*{color}  Here are the results of testing the latest 
attachment 
  
http://issues.apache.org/jira/secure/attachment/12726591/TAJO-1565.Hyun.150421.0.patch.txt
  against master revision release-0.9.0-rc0-646-g6debe7f.

      {color:red}-1 patch.{color}  The patch command could not apply the patch.

    {color:red}-1 patch.{color}  The patch command could not apply the patch.

Console output: https://builds.apache.org/job/PreCommit-TAJO-Build/902//console

This message is automatically generated.

> Simple column name in ORDER BY is failed with "Ambiguous Column Name ERROR".
> ----------------------------------------------------------------------------
>
>                 Key: TAJO-1565
>                 URL: https://issues.apache.org/jira/browse/TAJO-1565
>             Project: Tajo
>          Issue Type: Bug
>    Affects Versions: 0.10.0, 0.11.0, 0.12.0
>            Reporter: Hyoungjun Kim
>         Attachments: TAJO-1565.Hyun.150419.0.patch.txt, 
> TAJO-1565.Hyun.150421.0.patch.txt
>
>
> I ran the following query which contains self join and doesn't use a fully 
> qualified column name in ORDER BY clause. The query failed with "Ambiguous 
> Column Name ERROR".
> {code:sql}
> select n1.n_nationkey, n2.n_name
> from nation n1, nation n2, nation n3
>  where n1.n_nationkey = n2.n_nationkey
>  and n1.n_nationkey = n3.n_nationkey
> order by n_name;
> {code}
> {noformat}
> org.apache.tajo.plan.algebra.AmbiguousFieldException: ERROR: column name 
> Ambiguous Column Name: default.n1.n_name (TEXT), default.n2.n_name (TEXT), 
> default.n3.n_name (TEXT) is ambiguous
>       at 
> org.apache.tajo.plan.nameresolver.NameResolver.ensureUniqueColumn(NameResolver.java:286)
>       at 
> org.apache.tajo.plan.nameresolver.NameResolver.resolveFromAllRelsInBlock(NameResolver.java:183)
>       at 
> org.apache.tajo.plan.nameresolver.ResolverByLegacy.resolveColumnWithoutQualifier(ResolverByLegacy.java:104)
>       at 
> org.apache.tajo.plan.nameresolver.ResolverByLegacy.resolve(ResolverByLegacy.java:44)
>       at 
> org.apache.tajo.plan.nameresolver.NameResolver.resolve(NameResolver.java:90)
>       at 
> org.apache.tajo.plan.ExprNormalizer.visitColumnReference(ExprNormalizer.java:344)
>       at 
> org.apache.tajo.plan.ExprNormalizer.visitColumnReference(ExprNormalizer.java:84)
>       at 
> org.apache.tajo.plan.algebra.BaseAlgebraVisitor.visit(BaseAlgebraVisitor.java:218)
>       at 
> org.apache.tajo.plan.visitor.SimpleAlgebraVisitor.visit(SimpleAlgebraVisitor.java:43)
>       at 
> org.apache.tajo.plan.ExprNormalizer.normalize(ExprNormalizer.java:122)
>       at 
> org.apache.tajo.plan.ExprNormalizer.normalize(ExprNormalizer.java:115)
>       at 
> org.apache.tajo.plan.LogicalPlanner.visitSort(LogicalPlanner.java:829)
>       at org.apache.tajo.plan.LogicalPlanner.visitSort(LogicalPlanner.java:66)
>       at 
> org.apache.tajo.plan.algebra.BaseAlgebraVisitor.visit(BaseAlgebraVisitor.java:65)
>       at 
> org.apache.tajo.plan.LogicalPlanner.visitProjection(LogicalPlanner.java:238)
>       at 
> org.apache.tajo.plan.LogicalPlanner.visitProjection(LogicalPlanner.java:66)
>       at 
> org.apache.tajo.plan.algebra.BaseAlgebraVisitor.visit(BaseAlgebraVisitor.java:59)
>       at 
> org.apache.tajo.plan.LogicalPlanner.createPlan(LogicalPlanner.java:143)
>       at 
> org.apache.tajo.plan.LogicalPlanner.createPlan(LogicalPlanner.java:131)
>       at 
> org.apache.tajo.master.GlobalEngine.createLogicalPlan(GlobalEngine.java:271)
>       at 
> org.apache.tajo.master.GlobalEngine.executeQuery(GlobalEngine.java:188)
>       at 
> org.apache.tajo.master.TajoMasterClientService$TajoMasterClientProtocolServiceHandler.submitQuery(TajoMasterClientService.java:287)
>       at 
> org.apache.tajo.ipc.TajoMasterClientProtocol$TajoMasterClientProtocolService$2.callBlockingMethod(TajoMasterClientProtocol.java:543)
>       at 
> org.apache.tajo.rpc.BlockingRpcServer$ServerHandler.channelRead(BlockingRpcServer.java:113)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
>       at 
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
>       at 
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:182)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
>       at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
>       at 
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846)
>       at 
> io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:130)
>       at 
> io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
>       at 
> io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
>       at 
> io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
>       at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
>       at 
> io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
>       at java.lang.Thread.run(Thread.java:744)
> {noformat}
> This query run successfully on PostgreSQL.
> {noformat}
> babokim=# select n1.n_nationkey, n2.n_name
> babokim-# from nation n1, nation n2, nation n3
> babokim-#  where n1.n_nationkey = n2.n_nationkey
> babokim-#  and n1.n_nationkey = n3.n_nationkey
> babokim-# order by n_name;;
>  n_nationkey |  n_name
> -------------+-----------
>            0 | ALGERIA
>            1 | ARGENTINA
>            2 | BRAZIL
> (3 rows)
> {noformat}
> Also I found a strange code in NameResolver.ensureUniqueColumn().
> I think "else if (candidates.size() > 2)" statement should be "else". I don't 
> know why compare great than 2.
> {code:java}
>   static Column ensureUniqueColumn(List<Column> candidates) throws 
> VerifyException {
>     if (candidates.size() == 1) {
>       return candidates.get(0);
>     } else if (candidates.size() > 2) {
>       StringBuilder sb = new StringBuilder();
>       boolean first = true;
>       for (Column column : candidates) {
>         if (first) {
>           first = false;
>         } else {
>           sb.append(", ");
>         }
>         sb.append(column);
>       }
>       throw new AmbiguousFieldException("Ambiguous Column Name: " + 
> sb.toString());
>     } else {
>       return null;
>     }
>   }
> {code}



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

Reply via email to