[jira] [Commented] (ASTERIXDB-2157) Parsing metadata of UDF with UnorderedList return type
[ https://issues.apache.org/jira/browse/ASTERIXDB-2157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=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: JenkinsTested-by: Jenkins Contrib: Jenkins Integration-Tests: Jenkins Reviewed-by: Till Westmann > 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: > > SCALAR > test > ASTRING > {{ ASTRING }} > org.apache.asterix.external.library.TestFactory > > 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 >
[jira] [Commented] (ASTERIXDB-2157) Parsing metadata of UDF with UnorderedList return type
[ https://issues.apache.org/jira/browse/ASTERIXDB-2157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=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: > > SCALAR > test > ASTRING > {{ ASTRING }} > org.apache.asterix.external.library.TestFactory > > 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 >