[
https://issues.apache.org/jira/browse/ASTERIXDB-1298?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15204628#comment-15204628
]
Steven Jacobs commented on ASTERIXDB-1298:
------------------------------------------
Wenhai is this the same as the original issue query? I saw that you updated the
description but it doesn't seem possible to view the original description. If
it is a different query, perhaps it should be a new issue to avoid confusion
(as the original would have been specifically addressed by Yingyi's change). If
it is the same query, than the status of this issue should be changed back to
open.
> IndexOutOfBounds when joining through function
> ----------------------------------------------
>
> Key: ASTERIXDB-1298
> URL: https://issues.apache.org/jira/browse/ASTERIXDB-1298
> Project: Apache AsterixDB
> Issue Type: Bug
> Reporter: Steven Jacobs
> Assignee: Yingyi Bu
>
> The following gives an IndexOutOfBounds exception:
> {noformat}
> drop dataverse channels if exists;
> create dataverse channels;
> use dataverse channels;
> create type userLocation as closed {
> userId: int,
> roomNumber: int
> }
> create dataset userLocations(userLocation)
> primary key userId;
> create function currentOccupancy($room) {
> let $list := for $location in dataset userLocations where
> $location.roomNumber = $room return $location.userId
> return $list
> };
> upsert into dataset userLocations(
> [{"userId":1, "roomNumber":123},
> {"userId":2, "roomNumber":123},
> {"userId":3, "roomNumber":123},
> {"userId":4, "roomNumber":123},
> {"userId":5, "roomNumber":350},
> {"userId":6, "roomNumber":350},
> {"userId":7, "roomNumber":350},
> {"userId":8, "roomNumber":350},
> {"userId":9, "roomNumber":350},
> {"userId":10,"roomNumber":210},
> {"userId":11,"roomNumber":210},
> {"userId":12,"roomNumber":210},
> {"userId":13,"roomNumber":210},
> {"userId":14,"roomNumber":210}]
> );
> create type subscription as {
> "id":uuid,
> "param0":int
> }
> create dataset subscriptions(subscription)
> primary key id autogenerated;
> insert into dataset subscriptions({"param0":123});
> for $sub in dataset subscriptions
> for $result in currentOccupancy($sub.param0)
> return $result;
> {noformat}
> Error information
> {noformat}
> SEVERE: Index: 0, Size: 0
> java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
> at java.util.ArrayList.rangeCheck(ArrayList.java:653)
> at java.util.ArrayList.get(ArrayList.java:429)
> at
> org.apache.asterix.optimizer.rules.subplan.InlineSubplanInputForNestedTupleSourceRule.applySpecialFlattening(InlineSubplanInputForNestedTupleSourceRule.java:523)
> at
> org.apache.asterix.optimizer.rules.subplan.InlineSubplanInputForNestedTupleSourceRule.rewriteSubplanOperator(InlineSubplanInputForNestedTupleSourceRule.java:285)
> at
> org.apache.asterix.optimizer.rules.subplan.InlineSubplanInputForNestedTupleSourceRule.traverseNonSubplanOperator(InlineSubplanInputForNestedTupleSourceRule.java:313)
> at
> org.apache.asterix.optimizer.rules.subplan.InlineSubplanInputForNestedTupleSourceRule.rewriteSubplanOperator(InlineSubplanInputForNestedTupleSourceRule.java:280)
> at
> org.apache.asterix.optimizer.rules.subplan.InlineSubplanInputForNestedTupleSourceRule.traverseNonSubplanOperator(InlineSubplanInputForNestedTupleSourceRule.java:313)
> at
> org.apache.asterix.optimizer.rules.subplan.InlineSubplanInputForNestedTupleSourceRule.rewriteSubplanOperator(InlineSubplanInputForNestedTupleSourceRule.java:280)
> at
> org.apache.asterix.optimizer.rules.subplan.InlineSubplanInputForNestedTupleSourceRule.traverseNonSubplanOperator(InlineSubplanInputForNestedTupleSourceRule.java:313)
> at
> org.apache.asterix.optimizer.rules.subplan.InlineSubplanInputForNestedTupleSourceRule.rewriteSubplanOperator(InlineSubplanInputForNestedTupleSourceRule.java:280)
> at
> org.apache.asterix.optimizer.rules.subplan.InlineSubplanInputForNestedTupleSourceRule.rewritePre(InlineSubplanInputForNestedTupleSourceRule.java:270)
> at
> org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:90)
> at
> org.apache.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialFixpointRuleController.rewriteWithRuleCollection(SequentialFixpointRuleController.java:53)
> at
> org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.runOptimizationSets(HeuristicOptimizer.java:95)
> at
> org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.optimize(HeuristicOptimizer.java:82)
> at
> org.apache.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder$1$1.optimize(HeuristicCompilerFactoryBuilder.java:87)
> at
> org.apache.asterix.api.common.APIFramework.compileQuery(APIFramework.java:289)
> at
> org.apache.asterix.aql.translator.QueryTranslator.rewriteCompileQuery(QueryTranslator.java:2110)
> at
> org.apache.asterix.aql.translator.QueryTranslator.handleQuery(QueryTranslator.java:3015)
> at
> org.apache.asterix.aql.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:462)
> at
> org.apache.asterix.aql.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:286)
> at
> org.apache.asterix.api.http.servlet.APIServlet.doPost(APIServlet.java:148)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> 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:228)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:956)
> at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:411)
> at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:188)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:891)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:114)
> at org.eclipse.jetty.server.Server.handle(Server.java:353)
> at
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:598)
> at
> org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1076)
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:805)
> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218)
> at
> org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:427)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:510)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.access$000(SelectChannelEndPoint.java:34)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:450)
> at java.lang.Thread.run(Thread.java:745)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)