simlaudato / asterixdb

Automatically exported from code.google.com/p/asterixdb
0 stars 0 forks source link

Putting query result in wrapper object with singleton list gives wrong result #918

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
Given this query:

for $x in dataset BigIssuesExternal
for $proj in $x.projects where $proj.name = "asterixdb"
return {
    "name" : $proj.name,
    "key": "ASTERIXDB",
    "description": $proj.description,
    "components": ["AsterixDB","Hyracks"],
    "issues": for $y in dataset jiraIssues return $y
}

"issues" has a value of a list with about ~1046 records, each with a large 
amount of nested fields. However if the return clause is modified slightly, to 
this:

for $x in dataset BigIssuesExternal
for $proj in $x.projects where $proj.name = "asterixdb"
return {
"project" : [ {
    "name" : $proj.name,
    "key": "ASTERIXDB",
    "description": $proj.description,
    "components": ["AsterixDB","Hyracks"],
    "issues": for $y in dataset jiraIssues return $y
}]
}

The whole "issues" field value becomes null. Furthermore, wrapping a count() 
around the "for $y ..." statement will cause a runtime exception: 
SEVERE: edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: 
java.lang.IllegalStateException: java.lang.IllegalStateException: 
java.lang.IllegalStateException: java.lang.IndexOutOfBoundsException
edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: 
java.lang.IllegalStateException: java.lang.IllegalStateException: 
java.lang.IllegalStateException: java.lang.IndexOutOfBoundsException
    at edu.uci.ics.hyracks.client.dataset.HyracksDatasetReader.nextPartition(HyracksDatasetReader.java:120)
    at edu.uci.ics.hyracks.client.dataset.HyracksDatasetReader.read(HyracksDatasetReader.java:131)
    at edu.uci.ics.asterix.result.ResultReader.read(ResultReader.java:55)
    at edu.uci.ics.asterix.result.ResultUtils.displayResults(ResultUtils.java:96)
    at edu.uci.ics.asterix.aql.translator.AqlTranslator.handleQuery(AqlTranslator.java:2507)
    at edu.uci.ics.asterix.aql.translator.AqlTranslator.compileAndExecute(AqlTranslator.java:377)
    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)
Caused by: edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: 
java.lang.IllegalStateException: java.lang.IllegalStateException: 
java.lang.IllegalStateException: java.lang.IndexOutOfBoundsException
    at edu.uci.ics.hyracks.control.common.utils.ExceptionUtils.setNodeIds(ExceptionUtils.java:41)
    at edu.uci.ics.hyracks.control.nc.Task.run(Task.java:308)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    ... 1 more
Caused by: edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: 
java.lang.IllegalStateException: java.lang.IllegalStateException: 
java.lang.IllegalStateException: java.lang.IndexOutOfBoundsException
    at edu.uci.ics.hyracks.control.nc.Task.pushFrames(Task.java:354)
    at edu.uci.ics.hyracks.control.nc.Task.run(Task.java:286)
    ... 3 more
Caused by: edu.uci.ics.hyracks.api.exceptions.HyracksDataException: 
edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: 
java.lang.IllegalStateException: java.lang.IllegalStateException: 
java.lang.IllegalStateException: java.lang.IndexOutOfBoundsException
    at edu.uci.ics.hyracks.algebricks.runtime.serializer.ResultSerializerFactoryProvider$1$1.appendTuple(ResultSerializerFactoryProvider.java:69)
    at edu.uci.ics.hyracks.dataflow.std.result.ResultWriterOperatorDescriptor$1.nextFrame(ResultWriterOperatorDescriptor.java:97)
    at edu.uci.ics.hyracks.dataflow.common.comm.io.AbstractFrameAppender.flush(AbstractFrameAppender.java:79)
    at edu.uci.ics.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.flushAndReset(AbstractOneInputOneOutputOneFramePushRuntime.java:56)
    at edu.uci.ics.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.flushIfNotFailed(AbstractOneInputOneOutputOneFramePushRuntime.java:62)
    at edu.uci.ics.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.close(AbstractOneInputOneOutputOneFramePushRuntime.java:50)
    at edu.uci.ics.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.close(AbstractOneInputOneOutputOneFramePushRuntime.java:51)
    at edu.uci.ics.hyracks.algebricks.runtime.operators.meta.AlgebricksMetaOperatorDescriptor$2.close(AlgebricksMetaOperatorDescriptor.java:141)
    at edu.uci.ics.hyracks.dataflow.std.join.NestedLoopJoinOperatorDescriptor$NestedLoopJoinActivityNode$1.close(NestedLoopJoinOperatorDescriptor.java:206)
    at edu.uci.ics.hyracks.control.nc.Task.pushFrames(Task.java:345)
    ... 4 more
Caused by: 
edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: 
java.lang.IllegalStateException: java.lang.IllegalStateException: 
java.lang.IllegalStateException: java.lang.IndexOutOfBoundsException
    at edu.uci.ics.asterix.dataflow.data.nontagged.printers.ARecordPrinterFactory$1.print(ARecordPrinterFactory.java:64)
    at edu.uci.ics.hyracks.algebricks.runtime.writers.PrinterBasedWriterFactory$1.printTuple(PrinterBasedWriterFactory.java:62)
    at edu.uci.ics.hyracks.algebricks.runtime.serializer.ResultSerializerFactoryProvider$1$1.appendTuple(ResultSerializerFactoryProvider.java:65)
    ... 13 more
Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException: 
java.lang.IllegalStateException: java.lang.IndexOutOfBoundsException
    at edu.uci.ics.asterix.om.pointables.ARecordVisitablePointable.set(ARecordVisitablePointable.java:263)
    at edu.uci.ics.asterix.dataflow.data.nontagged.printers.ARecordPrinterFactory$1.print(ARecordPrinterFactory.java:60)
    ... 15 more
Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException: 
java.lang.IndexOutOfBoundsException
    at edu.uci.ics.asterix.om.pointables.AListVisitablePointable.set(AListVisitablePointable.java:161)
    at edu.uci.ics.asterix.om.pointables.ARecordVisitablePointable.set(ARecordVisitablePointable.java:225)
    ... 16 more
Caused by: java.lang.IllegalStateException: java.lang.IndexOutOfBoundsException
    at edu.uci.ics.asterix.om.pointables.ARecordVisitablePointable.set(ARecordVisitablePointable.java:263)
    at edu.uci.ics.asterix.om.pointables.AListVisitablePointable.set(AListVisitablePointable.java:136)
    ... 17 more
Caused by: java.lang.IndexOutOfBoundsException
    at edu.uci.ics.hyracks.data.std.util.ByteArrayAccessibleOutputStream.write(ByteArrayAccessibleOutputStream.java:43)
    at java.io.DataOutputStream.write(DataOutputStream.java:107)
    at edu.uci.ics.asterix.om.pointables.ARecordVisitablePointable.set(ARecordVisitablePointable.java:222)
    ... 18 more

Original issue reported on code.google.com by ima...@uci.edu on 31 Jul 2015 at 11:54