[ https://issues.apache.org/jira/browse/ASTERIXDB-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16170285#comment-16170285 ]
Steven Jacobs commented on ASTERIXDB-2101: ------------------------------------------ Here is the generated plan: distribute result [$$30] -- DISTRIBUTE_RESULT |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| project ([$$30]) -- STREAM_PROJECT |PARTITIONED| commit -- COMMIT |PARTITIONED| project ([$$28, $$30]) -- STREAM_PROJECT |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| insert into channels.roomRecordsResults from record: $$31 partitioned by [$$28] -- INSERT_DELETE |PARTITIONED| exchange -- HASH_PARTITION_EXCHANGE [$$28] |PARTITIONED| assign [$$28] <- [$$31.getField(0)] -- ASSIGN |PARTITIONED| assign [$$31] <- [cast($$30)] -- ASSIGN |PARTITIONED| project ([$$30]) -- STREAM_PROJECT |PARTITIONED| assign [$$30] <- [check-unknown(object-merge($$26, {"id": create-uuid()}))] -- ASSIGN |PARTITIONED| project ([$$26]) -- STREAM_PROJECT |PARTITIONED| assign [$$26] <- [{"result": {"userId": $$35}, "channelExecutionTime": $$channelExecutionTime, "subscriptionId": $$32, "deliveryTime": current-datetime()}] -- ASSIGN |PARTITIONED| project ([$$channelExecutionTime, $$32, $$35]) -- STREAM_PROJECT |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| join (eq($$40, $$41)) -- HYBRID_HASH_JOIN [$$41][$$40] |PARTITIONED| exchange -- HASH_PARTITION_EXCHANGE [$$41] |PARTITIONED| project ([$$channelExecutionTime, $$32, $$41]) -- STREAM_PROJECT |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| join (and(eq($$33, $$39), eq($$34, $$37))) -- HYBRID_HASH_JOIN [$$39, $$37][$$33, $$34] |PARTITIONED| exchange -- HASH_PARTITION_EXCHANGE [$$39, $$37] |PARTITIONED| project ([$$channelExecutionTime, $$32, $$37, $$39, $$41]) -- STREAM_PROJECT |PARTITIONED| assign [$$41, $$39, $$37] <- [$$sub.getField(1), $$sub.getField("DataverseName"), $$sub.getField("BrokerName")] -- ASSIGN |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| data-scan []<-[$$32, $$sub] <- channels.roomRecordsSubscriptions -- DATASOURCE_SCAN |PARTITIONED| exchange -- BROADCAST_EXCHANGE |PARTITIONED| assign [$$channelExecutionTime] <- [current-datetime()] -- ASSIGN |UNPARTITIONED| empty-tuple-source -- EMPTY_TUPLE_SOURCE |UNPARTITIONED| exchange -- HASH_PARTITION_EXCHANGE [$$33, $$34] |PARTITIONED| project ([$$33, $$34]) -- STREAM_PROJECT |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| data-scan []<-[$$33, $$34, $$b] <- Metadata.Datatype -- DATASOURCE_SCAN |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| empty-tuple-source -- EMPTY_TUPLE_SOURCE |PARTITIONED| exchange -- HASH_PARTITION_EXCHANGE [$$40] |PARTITIONED| project ([$$35, $$40]) -- STREAM_PROJECT |PARTITIONED| assign [$$40] <- [$$location.getField(1)] -- ASSIGN |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| data-scan []<-[$$35, $$location] <- channels.UserLocations -- DATASOURCE_SCAN |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| empty-tuple-source -- EMPTY_TUPLE_SOURCE |PARTITIONED| > Record Merge Error when compiling job > ------------------------------------- > > Key: ASTERIXDB-2101 > URL: https://issues.apache.org/jira/browse/ASTERIXDB-2101 > Project: Apache AsterixDB > Issue Type: Bug > Reporter: Steven Jacobs > > The following will throw a runtime exception: > drop dataverse channels if exists; > create dataverse channels; > use channels; > create type userLocation as { > userId: int, > roomNumber: int > }; > create type result as { > id:uuid > }; > create type subscriptionType as { > subscriptionId:uuid, > param0:int > }; > create dataset roomRecordsResults(result) > primary key id autogenerated; > create dataset roomRecordsSubscriptions(subscriptionType) > primary key subscriptionId autogenerated; > create dataset UserLocations(userLocation) > primary key userId; > create function RoomOccupants(room) { > (select location.userId > from UserLocations location > where location.roomNumber = room) > }; > SET inline_with "false"; > insert into channels.roomRecordsResults as a ( > with channelExecutionTime as current_datetime() > select result, channelExecutionTime, sub.subscriptionId as > subscriptionId,current_datetime() as deliveryTime > from channels.roomRecordsSubscriptions sub, > Metadata.Datatype b, > channels.RoomOccupants(sub.param0) result > where b.DatatypeName = sub.BrokerName > and b.DataverseName = sub.DataverseName > ) returning a; > Here is the stack trace: > WARNING: Unhandled throwable > java.lang.VerifyError: Bad return type > Exception Details: > Location: > > org/apache/asterix/runtime/evaluators/functions/records/RecordMergeDescriptor$_EvaluatorFactoryGen.access$0(Lorg/apache/asterix/runtime/evaluators/functions/records/RecordMergeDescriptor$_EvaluatorFactoryGen;)Lorg/apache/asterix/runtime/evaluators/functions/records/RecordMergeDescriptor; > @4: areturn > Reason: > Type > 'org/apache/asterix/runtime/evaluators/functions/records/RecordMergeDescriptor$_Gen' > (current frame, stack[0]) is not assignable to > 'org/apache/asterix/runtime/evaluators/functions/records/RecordMergeDescriptor' > (from method signature) > Current Frame: > bci: @4 > flags: { } > locals: { > 'org/apache/asterix/runtime/evaluators/functions/records/RecordMergeDescriptor$_EvaluatorFactoryGen' > } > stack: { > 'org/apache/asterix/runtime/evaluators/functions/records/RecordMergeDescriptor$_Gen' > } > Bytecode: > 0x0000000: 2ab4 0063 b0 > at > org.apache.asterix.runtime.evaluators.functions.records.RecordMergeDescriptor$_Gen.createEvaluatorFactory(RecordMergeDescriptor.java:86) > at > org.apache.asterix.jobgen.QueryLogicalExpressionJobGen.createScalarFunctionEvaluatorFactory(QueryLogicalExpressionJobGen.java:144) > at > org.apache.asterix.jobgen.QueryLogicalExpressionJobGen.createEvaluatorFactory(QueryLogicalExpressionJobGen.java:109) > at > org.apache.asterix.jobgen.QueryLogicalExpressionJobGen.codegenArguments(QueryLogicalExpressionJobGen.java:161) > at > org.apache.asterix.jobgen.QueryLogicalExpressionJobGen.createScalarFunctionEvaluatorFactory(QueryLogicalExpressionJobGen.java:134) > at > org.apache.asterix.jobgen.QueryLogicalExpressionJobGen.createEvaluatorFactory(QueryLogicalExpressionJobGen.java:109) > at > org.apache.hyracks.algebricks.core.algebra.expressions.ExpressionRuntimeProvider.createEvaluatorFactory(ExpressionRuntimeProvider.java:41) > at > org.apache.hyracks.algebricks.core.algebra.operators.physical.AssignPOperator.contributeRuntimeOperator(AssignPOperator.java:84) > at > org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator.contributeRuntimeOperator(AbstractLogicalOperator.java:166) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compileOpRef(PlanCompiler.java:97) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compileOpRef(PlanCompiler.java:84) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compileOpRef(PlanCompiler.java:84) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compileOpRef(PlanCompiler.java:84) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compileOpRef(PlanCompiler.java:84) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compileOpRef(PlanCompiler.java:84) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compileOpRef(PlanCompiler.java:84) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compileOpRef(PlanCompiler.java:84) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compileOpRef(PlanCompiler.java:84) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compileOpRef(PlanCompiler.java:84) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compileOpRef(PlanCompiler.java:84) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compileOpRef(PlanCompiler.java:84) > at > org.apache.hyracks.algebricks.core.jobgen.impl.PlanCompiler.compilePlan(PlanCompiler.java:60) > at > org.apache.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder$1$1.createJob(HeuristicCompilerFactoryBuilder.java:107) > at > org.apache.asterix.api.common.APIFramework.compileQuery(APIFramework.java:333) > at > org.apache.asterix.app.translator.QueryTranslator.rewriteCompileInsertUpsert(QueryTranslator.java:1867) > at > org.apache.asterix.app.translator.QueryTranslator.lambda$0(QueryTranslator.java:1755) > at > org.apache.asterix.app.translator.QueryTranslator.createAndRunJob(QueryTranslator.java:2412) > at > org.apache.asterix.app.translator.QueryTranslator.deliverResult(QueryTranslator.java:2345) > at > org.apache.asterix.app.translator.QueryTranslator.handleInsertUpsertStatement(QueryTranslator.java:1776) > at > org.apache.asterix.app.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:337) > at > org.apache.asterix.app.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:254) > at > org.apache.asterix.api.http.server.ApiServlet.post(ApiServlet.java:157) > at > org.apache.hyracks.http.server.AbstractServlet.handle(AbstractServlet.java:78) > at > org.apache.hyracks.http.server.HttpRequestHandler.handle(HttpRequestHandler.java:70) > at > org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:55) > at > org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:36) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) -- This message was sent by Atlassian JIRA (v6.4.14#64029)