Change is up here: https://asterix-gerrit.ics.uci.edu/#/c/2211/, I'll email him and the reviewers since I am not sure whether or not he is on this list.
On Fri, Dec 8, 2017 at 4:42 PM, abdullah alamoudi <[email protected]> wrote: > Ian, > Let's not drop this? > > Cheers, > Abdullah. > > >> Begin forwarded message: >> >> From: abdullah alamoudi <[email protected]> >> Subject: Re: [jira] [Commented] (ASTERIXDB-2157) Parsing metadata of UDF >> with UnorderedList return type >> Date: November 7, 2017 at 8:38:47 PM PST >> To: [email protected] >> Cc: [email protected] >> >> Hi Tomasz, >> Thanks for creating the issue and for the fix. >> >> @Ian, >> I looked at the PR and it looked good to me. How can we get this in? through >> Gerrit? >> >> Cheers, >> Abdullah. >> >>> On Nov 7, 2017, at 1:21 PM, Tomasz Pawłowski (JIRA) <[email protected]> wrote: >>> >>> >>> [ >>> https://issues.apache.org/jira/browse/ASTERIXDB-2157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16242901#comment-16242901 >>> ] >>> >>> Tomasz Pawłowski commented on ASTERIXDB-2157: >>> --------------------------------------------- >>> >>> I have already created a pull request for this bug >>> https://github.com/apache/asterixdb/pull/6 including a proper unit test. >>> >>>> Parsing metadata of UDF with UnorderedList return type >>>> ------------------------------------------------------ >>>> >>>> Key: ASTERIXDB-2157 >>>> URL: https://issues.apache.org/jira/browse/ASTERIXDB-2157 >>>> Project: Apache AsterixDB >>>> Issue Type: Bug >>>> Components: MTD - Metadata >>>> Reporter: Tomasz Pawłowski >>>> Priority: Minor >>>> Labels: easyfix, newbie >>>> >>>> While defining a library UDF with return_type representing a unordered >>>> list (eg. {{ ASTRING }}). UDF is created with result type {{ {{ ASTRING }} >>>> }}. >>>> This error can be replicated with libraryFunction: >>>> <libraryFunction> >>>> <function_type>SCALAR</function_type> >>>> <name>test</name> >>>> <arguments>ASTRING</arguments> >>>> <return_type>{{ ASTRING }}</return_type> >>>> >>>> <definition>org.apache.asterix.external.library.TestFactory</definition> >>>> </libraryFunction> >>>> TestFactory.java: >>>> package org.apache.asterix.external.library; >>>> import org.apache.asterix.external.api.IExternalScalarFunction; >>>> import org.apache.asterix.external.api.IFunctionFactory; >>>> public class TestFactory implements IFunctionFactory { >>>> @Override >>>> public IExternalScalarFunction getExternalFunction() { >>>> return new TestFunction(); >>>> } >>>> } >>>> // END of TestFactory.java >>>> TestFunction.java: >>>> package org.apache.asterix.external.library; >>>> import org.apache.asterix.external.api.IExternalScalarFunction; >>>> import org.apache.asterix.external.api.IFunctionHelper; >>>> import org.apache.asterix.external.library.java.JObjects; >>>> import org.apache.asterix.om.types.BuiltinType; >>>> public class TestFunction implements IExternalScalarFunction { >>>> private JObjects.JUnorderedList results; >>>> @Override >>>> public void deinitialize() {} >>>> @Override >>>> public void evaluate(IFunctionHelper functionHelper) throws Exception { >>>> JObjects.JString input = (JObjects.JString) >>>> functionHelper.getArgument(0); >>>> results.reset(); >>>> JObjects.JUnorderedList test = new >>>> JObjects.JUnorderedList(BuiltinType.ASTRING); >>>> test.add(input); >>>> test.add(input); >>>> test.add(input); >>>> results.add(test); >>>> functionHelper.setResult(results); >>>> } >>>> @Override >>>> public void initialize(IFunctionHelper functionHelper) throws Exception{ >>>> results = (JObjects.JUnorderedList) functionHelper.getResultObject(); >>>> } >>>> } >>>> // END of TestFunction.java >>>> And executing (AQL): >>>> use dataverse test; >>>> testlib#test("test") >>>> Which results in: >>>> {{ {{ "test", "test", "test" }} }} >>>> At the same time writing TestFunction evaluate to return {{ ASTRING }} >>>> results in error: >>>> org.apache.hyracks.algebricks.common.exceptions.AlgebricksException: >>>> java.io.EOFException >>>> at >>>> org.apache.asterix.optimizer.rules.ConstantFoldingRule$ConstantFoldingVisitor.visitScalarFunctionCallExpression(ConstantFoldingRule.java:231) >>>> at >>>> org.apache.asterix.optimizer.rules.ConstantFoldingRule$ConstantFoldingVisitor.visitScalarFunctionCallExpression(ConstantFoldingRule.java:153) >>>> at >>>> org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression.accept(ScalarFunctionCallExpression.java:55) >>>> at >>>> org.apache.asterix.optimizer.rules.ConstantFoldingRule$ConstantFoldingVisitor.transform(ConstantFoldingRule.java:163) >>>> at >>>> org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractAssignOperator.acceptExpressionTransform(AbstractAssignOperator.java:67) >>>> at >>>> org.apache.asterix.optimizer.rules.ConstantFoldingRule.rewritePost(ConstantFoldingRule.java:150) >>>> at >>>> org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:126) >>>> at >>>> org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:100) >>>> at >>>> org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:100) >>>> 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:102) >>>> 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:90) >>>> at >>>> org.apache.asterix.api.common.APIFramework.compileQuery(APIFramework.java:267) >>>> at >>>> org.apache.asterix.app.translator.QueryTranslator.rewriteCompileQuery(QueryTranslator.java:1834) >>>> at >>>> org.apache.asterix.app.translator.QueryTranslator.lambda$handleQuery$1(QueryTranslator.java:2307) >>>> at >>>> org.apache.asterix.app.translator.QueryTranslator.createAndRunJob(QueryTranslator.java:2407) >>>> at >>>> org.apache.asterix.app.translator.QueryTranslator.deliverResult(QueryTranslator.java:2340) >>>> at >>>> org.apache.asterix.app.translator.QueryTranslator.handleQuery(QueryTranslator.java:2319) >>>> at >>>> org.apache.asterix.app.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:370) >>>> at >>>> org.apache.asterix.app.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:253) >>>> at >>>> org.apache.asterix.api.http.server.ApiServlet.post(ApiServlet.java:153) >>>> 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) >>>> Caused by: org.apache.hyracks.api.exceptions.HyracksDataException: >>>> java.io.EOFException >>>> at >>>> org.apache.hyracks.api.exceptions.HyracksDataException.create(HyracksDataException.java:45) >>>> at >>>> org.apache.asterix.dataflow.data.nontagged.serde.AUnorderedListSerializerDeserializer.deserialize(AUnorderedListSerializerDeserializer.java:102) >>>> at >>>> org.apache.asterix.dataflow.data.nontagged.serde.AUnorderedListSerializerDeserializer.deserialize(AUnorderedListSerializerDeserializer.java:43) >>>> at >>>> org.apache.asterix.dataflow.data.nontagged.serde.AUnorderedListSerializerDeserializer.deserialize(AUnorderedListSerializerDeserializer.java:96) >>>> at >>>> org.apache.asterix.dataflow.data.nontagged.serde.AUnorderedListSerializerDeserializer.deserialize(AUnorderedListSerializerDeserializer.java:43) >>>> at >>>> org.apache.asterix.formats.nontagged.SerializerDeserializerProvider$1.deserialize(SerializerDeserializerProvider.java:191) >>>> at >>>> org.apache.asterix.formats.nontagged.SerializerDeserializerProvider$1.deserialize(SerializerDeserializerProvider.java:173) >>>> at >>>> org.apache.asterix.optimizer.rules.ConstantFoldingRule$ConstantFoldingVisitor.visitScalarFunctionCallExpression(ConstantFoldingRule.java:228) >>>> ... 29 more >>>> Caused by: java.io.EOFException >>>> at java.io.DataInputStream.readInt(DataInputStream.java:392) >>>> at >>>> org.apache.asterix.dataflow.data.nontagged.serde.AUnorderedListSerializerDeserializer.deserialize(AUnorderedListSerializerDeserializer.java:92) >>>> ... 35 more >>> >>> >>> >>> -- >>> This message was sent by Atlassian JIRA >>> (v6.4.14#64029) >> >
