You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "James Fang (JIRA)" <ji...@apache.org> on 2018/10/30 18:45:00 UTC
[jira] [Created] (ASTERIXDB-2471) CommonFuctionMapUtil Alias do not
work correctly for distinct and serializable functions
James Fang created ASTERIXDB-2471:
-------------------------------------
Summary: CommonFuctionMapUtil Alias do not work correctly for distinct and serializable functions
Key: ASTERIXDB-2471
URL: https://issues.apache.org/jira/browse/ASTERIXDB-2471
Project: Apache AsterixDB
Issue Type: Bug
Components: FUN - Functions
Reporter: James Fang
When trying to implement correct alias for stddev that are used in existing database systems (Postgres, Oracle), there were problems in getting the alias to work correctly for distinct and serializable aggregates.
The following alias were created for this:
stddev --> sql-stddev_samp
array_stddev --> sql-stddev_samp
strict_stddev --> stddev_samp
For distinct aggregates, test the following query:
{
't1': to_bigint(array_stddev(distinct [10,20,30,10,20,30,10])),
't2': to_bigint(array_stddev(distinct [null,missing,null,missing])),
't3': to_bigint(array_stddev(distinct [40,null,missing,50,40,null,missing,50,40])),
't4': to_bigint(array_stddev(distinct []))
};
You will receive the following error:
java.lang.Exception: ASX1079: Compilation error: function Default.strict_stddev-distinct@1 is not defined (in line 20, at column 20)
at org.apache.asterix.test.common.ResultExtractor.checkForErrors(ResultExtractor.java:185) ~[test-classes/:?]
at org.apache.asterix.test.common.ResultExtractor.extract(ResultExtractor.java:117) ~[test-classes/:?]
at org.apache.asterix.test.common.ResultExtractor.extract(ResultExtractor.java:87) ~[test-classes/:?]
at org.apache.asterix.test.common.TestExecutor.executeQuery(TestExecutor.java:1217) ~[test-classes/:?]
at org.apache.asterix.test.common.TestExecutor.executeTestFile(TestExecutor.java:900) ~[test-classes/:?]
at org.apache.asterix.test.common.TestExecutor.executeTest(TestExecutor.java:1622) [test-classes/:?]
at org.apache.asterix.test.runtime.LangExecutionUtil.test(LangExecutionUtil.java:132) [test-classes/:?]
at org.apache.asterix.test.runtime.LangExecutionUtil.test(LangExecutionUtil.java:119) [test-classes/:?]
at org.apache.asterix.test.runtime.SqlppExecutionTest.test(SqlppExecutionTest.java:62) [test-classes/:?]
at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) [junit-4.12.jar:4.12]
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.12.jar:4.12]
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) [junit-4.12.jar:4.12]
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) [junit-4.12.jar:4.12]
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) [junit-4.12.jar:4.12]
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner.run(ParentRunner.java:363) [junit-4.12.jar:4.12]
at org.junit.runners.Suite.runChild(Suite.java:128) [junit-4.12.jar:4.12]
at org.junit.runners.Suite.runChild(Suite.java:27) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) [junit-4.12.jar:4.12]
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) [junit-4.12.jar:4.12]
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) [junit-4.12.jar:4.12]
at org.junit.runners.ParentRunner.run(ParentRunner.java:363) [junit-4.12.jar:4.12]
at org.junit.runner.JUnitCore.run(JUnitCore.java:137) [junit-4.12.jar:4.12]
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) [junit-rt.jar:?]
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) [junit-rt.jar:?]
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) [junit-rt.jar:?]
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) [junit-rt.jar:?]
For serializable aggregates, it cannot resolve the identifier for the variables passed in. The query is:
drop dataverse test if exists;
create dataverse test;
use test;
create type test.TestType as
{
id : bigint,
gid : bigint,
val : double
};
create dataset Test(TestType) primary key id;
insert into Test
select element \{'id':0,'gid':1,'val':double(4.32),'valplus':double(473847.0)};
insert into Test
select element \{'id':1,'gid':1,'val':double(5.32)};
insert into Test
select element \{'id':2,'gid':1,'val':double(6.32),'valplus':double(38473827484738239.0)};
insert into Test
select element \{'id':3,'gid':1,'val':double(4.32),'valplus':double(678900.0)};
insert into Test
select element \{'id':4,'gid':1,'val':double(4.32),'valplus':null};
select gid, stddev(t.val) as stddev
from Test as t
/* +hash */
group by t.gid as gid;
The following error occurs:
ERROR org.apache.asterix - ASX1074: Cannot resolve ambiguous alias reference for identifier t (in line 26, at column 20)
org.apache.asterix.common.exceptions.CompilationException: ASX1074: Cannot resolve ambiguous alias reference for identifier t (in line 26, at column 20)
at org.apache.asterix.lang.sqlpp.rewrites.visitor.VariableCheckAndRewriteVisitor.resolve(VariableCheckAndRewriteVisitor.java:132) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.rewrites.visitor.VariableCheckAndRewriteVisitor.visit(VariableCheckAndRewriteVisitor.java:74) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.rewrites.visitor.VariableCheckAndRewriteVisitor.visit(VariableCheckAndRewriteVisitor.java:50) ~[classes/:?]
at org.apache.asterix.lang.common.expression.FieldAccessor.accept(FieldAccessor.java:51) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:359) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:373) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:308) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.rewrites.visitor.VariableCheckAndRewriteVisitor.visit(VariableCheckAndRewriteVisitor.java:210) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.rewrites.visitor.VariableCheckAndRewriteVisitor.visit(VariableCheckAndRewriteVisitor.java:50) ~[classes/:?]
at org.apache.asterix.lang.common.expression.CallExpr.accept(CallExpr.java:62) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:359) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:112) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:66) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.clause.Projection.accept(Projection.java:46) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:169) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:66) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.clause.SelectRegular.accept(SelectRegular.java:40) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:155) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:66) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.clause.SelectClause.accept(SelectClause.java:43) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:145) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:66) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.struct.SetOperationInput.accept(SetOperationInput.java:57) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppExpressionScopingVisitor.visit(AbstractSqlppExpressionScopingVisitor.java:194) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppExpressionScopingVisitor.visit(AbstractSqlppExpressionScopingVisitor.java:59) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.clause.SelectSetOperation.accept(SelectSetOperation.java:47) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppExpressionScopingVisitor.visit(AbstractSqlppExpressionScopingVisitor.java:308) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppExpressionScopingVisitor.visit(AbstractSqlppExpressionScopingVisitor.java:59) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.expression.SelectExpression.accept(SelectExpression.java:55) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:359) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppExpressionScopingVisitor.visit(AbstractSqlppExpressionScopingVisitor.java:214) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppExpressionScopingVisitor.visit(AbstractSqlppExpressionScopingVisitor.java:59) ~[classes/:?]
at org.apache.asterix.lang.common.statement.Query.accept(Query.java:94) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.rewrites.SqlppQueryRewriter.variableCheckAndRewrite(SqlppQueryRewriter.java:213) ~[classes/:?]
at org.apache.asterix.lang.sqlpp.rewrites.SqlppQueryRewriter.rewrite(SqlppQueryRewriter.java:119) ~[classes/:?]
at org.apache.asterix.api.common.APIFramework.reWriteQuery(APIFramework.java:191) ~[classes/:?]
at org.apache.asterix.app.translator.QueryTranslator.rewriteCompileQuery(QueryTranslator.java:1978) ~[classes/:?]
at org.apache.asterix.app.translator.QueryTranslator.lambda$handleQuery$2(QueryTranslator.java:2489) ~[classes/:?]
at org.apache.asterix.app.translator.QueryTranslator.createAndRunJob(QueryTranslator.java:2614) ~[classes/:?]
at org.apache.asterix.app.translator.QueryTranslator.deliverResult(QueryTranslator.java:2523) ~[classes/:?]
at org.apache.asterix.app.translator.QueryTranslator.handleQuery(QueryTranslator.java:2502) ~[classes/:?]
at org.apache.asterix.app.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:393) ~[classes/:?]
at org.apache.asterix.api.http.server.ApiServlet.post(ApiServlet.java:155) [classes/:?]
at org.apache.hyracks.http.server.AbstractServlet.handle(AbstractServlet.java:92) [classes/:?]
at org.apache.hyracks.http.server.HttpRequestHandler.handle(HttpRequestHandler.java:80) [classes/:?]
at org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:65) [classes/:?]
at org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:37) [classes/:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)