[
https://issues.apache.org/jira/browse/ASTERIXDB-2157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16344233#comment-16344233
]
ASF subversion and git services commented on ASTERIXDB-2157:
------------------------------------------------------------
Commit 62feff13beb86033521dff756fc456ba5d65f717 in asterixdb's branch
refs/heads/master from [~tpawlowski]
[ https://git-wip-us.apache.org/repos/asf?p=asterixdb.git;h=62feff1 ]
[ASTERIXDB-2157] Parsing metadata of UDF with UnorderedList return type
changes from https://github.com/apache/asterixdb/pull/6
Change-Id: Ie9e7795d9c8c212e9610dcb9bb5d26ec9fbbee8b
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2211
Sonar-Qube: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
Contrib: Jenkins <[email protected]>
Integration-Tests: Jenkins <[email protected]>
Reviewed-by: Till Westmann <[email protected]>
> 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
(v7.6.3#76005)