[jira] [Commented] (ASTERIXDB-2157) Parsing metadata of UDF with UnorderedList return type

2018-01-29 Thread ASF subversion and git services (JIRA)

[ 
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: Jenkins 
Tested-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

2017-11-07 Thread JIRA

[ 
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 
>