[
https://issues.apache.org/jira/browse/TAJO-729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13955176#comment-13955176
]
ASF GitHub Bot commented on TAJO-729:
-------------------------------------
GitHub user hyunsik opened a pull request:
https://github.com/apache/tajo/pull/2
TAJO-729: PreLogicalPlanVerifier verifies distinct aggregation functions...
... incorrectly. (hyunsik)
https://reviews.apache.org/r/19841/
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/hyunsik/tajo TAJO-729
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/tajo/pull/2.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #2
----
commit 644c83ee53a059f62ac525945dfa883d6197ec0e
Author: Hyunsik Choi <[email protected]>
Date: 2014-03-31T13:19:14Z
TAJO-729: PreLogicalPlanVerifier verifies distinct aggregation functions
incorrectly. (hyunsik)
----
> PreLogicalPlanVerifier verifies distinct aggregation functions incorrectly.
> ---------------------------------------------------------------------------
>
> Key: TAJO-729
> URL: https://issues.apache.org/jira/browse/TAJO-729
> Project: Tajo
> Issue Type: Bug
> Components: planner/optimizer
> Reporter: Hyunsik Choi
> Assignee: Hyunsik Choi
> Fix For: 0.8-incubating, 1.0-incubating
>
> Attachments: TAJO-729.patch
>
>
> Since the current Tajo cannot process distinct aggregation functions for
> multiple columns, PreLogicalPlanVerifier prevents such a case. But,
> PreLogicalPlanVerifier checks it incorrectly. As a result, it causes a
> verification error even though a query can be actually executed in Tajo.
> See the below example. This query can be actually executed in Tajo.
> {code:sql}
> select
> count(distinct l_orderkey) as v0,
> sum(l_orderkey) as v1,
> sum(l_linenumber) as v2,
> count(*) as v4
> from
> lineitem
> group by
> l_orderkey;
> {code}
> But, it causes the following verification error.
> {noformat}
> org.apache.tajo.engine.planner.PlanningException: different DISTINCT columns
> are not supported yet: l_orderkey, l_linenumber
> at
> org.apache.tajo.engine.planner.PreLogicalPlanVerifier.visitProjection(PreLogicalPlanVerifier.java:89)
> at
> org.apache.tajo.engine.planner.PreLogicalPlanVerifier.visitProjection(PreLogicalPlanVerifier.java:33)
> at
> org.apache.tajo.engine.planner.BaseAlgebraVisitor.visit(BaseAlgebraVisitor.java:55)
> at
> org.apache.tajo.engine.planner.PreLogicalPlanVerifier.verify(PreLogicalPlanVerifier.java:52)
> at
> org.apache.tajo.master.GlobalEngine.createLogicalPlan(GlobalEngine.java:247)
> at org.apache.tajo.master.GlobalEngine.executeQuery(GlobalEngine.java:138)
> at
> org.apache.tajo.master.TajoMasterClientService$TajoMasterClientProtocolServiceHandler.submitQuery(TajoMasterClientService.java:286)
> at
> org.apache.tajo.ipc.TajoMasterClientProtocol$TajoMasterClientProtocolService$2.callBlockingMethod(TajoMasterClientProtocol.java:513)
> at
> org.apache.tajo.rpc.BlockingRpcServer$ServerHandler.messageReceived(BlockingRpcServer.java:103)
> at
> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
> at
> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
> at
> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
> at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
> at
> org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:70)
> at
> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
> at
> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
> at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
> at
> org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)
> at
> org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)
> at
> org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
> at
> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
> at
> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
> at
> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
> at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
> at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
> at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
> at
> org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)
> at
> org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312)
> at
> org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
> at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
> at
> org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
> at
> org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:744)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.2#6252)