You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@asterixdb.apache.org by abdullah alamoudi <ba...@gmail.com> on 2017/11/08 04:38:47 UTC
Re: [jira] [Commented] (ASTERIXDB-2157) Parsing metadata of UDF with
UnorderedList return type
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) <ji...@apache.org> 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)
Re: [jira] [Commented] (ASTERIXDB-2157) Parsing metadata of UDF with
UnorderedList return type
Posted by abdullah alamoudi <ba...@gmail.com>.
Awesome,
Thanks Ian,
~Abdullah.
> On Dec 8, 2017, at 6:44 PM, Ian Maxon <im...@uci.edu> wrote:
>
> 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 <ba...@gmail.com> wrote:
>> Ian,
>> Let's not drop this?
>>
>> Cheers,
>> Abdullah.
>>
>>
>>> Begin forwarded message:
>>>
>>> From: abdullah alamoudi <ba...@gmail.com>
>>> 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: dev@asterixdb.apache.org
>>> Cc: notifications@asterixdb.incubator.apache.org
>>>
>>> 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) <ji...@apache.org> 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)
>>>
>>
Re: [jira] [Commented] (ASTERIXDB-2157) Parsing metadata of UDF with
UnorderedList return type
Posted by Ian Maxon <im...@uci.edu>.
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 <ba...@gmail.com> wrote:
> Ian,
> Let's not drop this?
>
> Cheers,
> Abdullah.
>
>
>> Begin forwarded message:
>>
>> From: abdullah alamoudi <ba...@gmail.com>
>> 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: dev@asterixdb.apache.org
>> Cc: notifications@asterixdb.incubator.apache.org
>>
>> 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) <ji...@apache.org> 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)
>>
>
Fwd: [jira] [Commented] (ASTERIXDB-2157) Parsing metadata of UDF with
UnorderedList return type
Posted by abdullah alamoudi <ba...@gmail.com>.
Ian,
Let's not drop this?
Cheers,
Abdullah.
> Begin forwarded message:
>
> From: abdullah alamoudi <ba...@gmail.com>
> 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: dev@asterixdb.apache.org
> Cc: notifications@asterixdb.incubator.apache.org
>
> 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) <ji...@apache.org> 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)
>