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

Taewoo Kim commented on ASTERIXDB-1079:
---------------------------------------

The simple reason was that after copying the LIMIT operator, we didn't compute 
delivered physical properties. This can be easily fixed. However, there is 
another issue. We should not copy LIMIT operator under the UNNEST-MAP unless 
UNNEST-MAP retains null value during the search (e.g., left-outer-join case). 
This needs to be fixed, too. 

> IX-NLJ fails with limit (during rewrite)
> ----------------------------------------
>
>                 Key: ASTERIXDB-1079
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-1079
>             Project: Apache AsterixDB
>          Issue Type: Bug
>          Components: AsterixDB, Optimizer
>            Reporter: Pouria
>            Assignee: Yingyi Bu
>
> Adding a limit clause to the Index join query from our famous TinySocial 
> tutorial causes the query to fail during rewrite phase. 
> Here is the query;
> use dataverse TinySocial;
>        for $user in dataset MugshotUsers
>         for $message in dataset MugshotMessages
>         where $message.author_id /*+ indexnl */  = $user.id
>         limit 20
>         return {
>         "uname": $user.name,
>         "message": $message.message
>         };
> and Here is the error stack:
> java.lang.NullPointerException
>       at 
> edu.uci.ics.hyracks.algebricks.core.algebra.operators.physical.OneToOneExchangePOperator.computeDeliveredProperties(OneToOneExchangePOperator.java:45)
>       at 
> edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator.computeDeliveredPhysicalProperties(AbstractLogicalOperator.java:118)
>       at 
> edu.uci.ics.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil.computeSchemaAndPropertiesRecIfNull(OperatorPropertiesUtil.java:227)
>       at 
> edu.uci.ics.hyracks.algebricks.rewriter.rules.IsolateHyracksOperatorsRule.insertOneToOneExchange(IsolateHyracksOperatorsRule.java:133)
>       at 
> edu.uci.ics.hyracks.algebricks.rewriter.rules.IsolateHyracksOperatorsRule.testIfExchangeBelow(IsolateHyracksOperatorsRule.java:73)
>       at 
> edu.uci.ics.hyracks.algebricks.rewriter.rules.IsolateHyracksOperatorsRule.rewritePost(IsolateHyracksOperatorsRule.java:51)
>       at 
> edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:122)
>       at 
> edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
>       at 
> edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
>       at 
> edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
>       at 
> edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
>       at 
> edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
>       at 
> edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
>       at 
> edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
>       at 
> edu.uci.ics.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialOnceRuleController.rewriteWithRuleCollection(SequentialOnceRuleController.java:40)
>       at 
> edu.uci.ics.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.runOptimizationSets(HeuristicOptimizer.java:91)
>       at 
> edu.uci.ics.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.runPhysicalOptimizations(HeuristicOptimizer.java:122)
>       at 
> edu.uci.ics.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.optimize(HeuristicOptimizer.java:80)
>       at 
> edu.uci.ics.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder$1$1.optimize(HeuristicCompilerFactoryBuilder.java:83)
>       at 
> edu.uci.ics.asterix.api.common.APIFramework.compileQuery(APIFramework.java:275)
>       at 
> edu.uci.ics.asterix.aql.translator.AqlTranslator.rewriteCompileQuery(AqlTranslator.java:1893)
>       at 
> edu.uci.ics.asterix.aql.translator.AqlTranslator.handleQuery(AqlTranslator.java:2473)
>       at 
> edu.uci.ics.asterix.aql.translator.AqlTranslator.compileAndExecute(AqlTranslator.java:378)
>       at 
> edu.uci.ics.asterix.api.http.servlet.APIServlet.doPost(APIServlet.java:111)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
>       at 
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:546)
>       at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:483)
>       at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
>       at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:970)
>       at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:411)
>       at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
>       at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:904)
>       at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
>       at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
>       at org.eclipse.jetty.server.Server.handle(Server.java:347)
>       at 
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:439)
>       at 
> org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:924)
>       at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:781)
>       at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:220)
>       at 
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:43)
>       at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:545)
>       at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43)
>       at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)
>       at java.lang.Thread.run(Thread.java:745)
>  



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

Reply via email to