Wail Y. Alkowaileet created ASTERIXDB-3205:
----------------------------------------------
Summary: Avoid inlining non-pure functions in aggregate functions
Key: ASTERIXDB-3205
URL: https://issues.apache.org/jira/browse/ASTERIXDB-3205
Project: Apache AsterixDB
Issue Type: Bug
Components: COMP - Compiler
Affects Versions: 0.9.9
Reporter: Wail Y. Alkowaileet
Assignee: Wail Y. Alkowaileet
Fix For: 0.9.9
The following queries fail at compile time
{code:sql}SELECT SUM(random(1))
FROM ExperDataset
GROUP BY a.ai; {code}
{code:sql}SELECT
SUM((MS_FROM_DAY_TIME_DURATION(GET_DAY_TIME_DURATION(DATETIME(CURRENT_DATE())-DATETIME(`DS3`.`z`)))
DIV 86400000)) AS `mySum`
FROM `DS1` `DS1`
LEFT JOIN `DS3` `DS3` ON ((`DS1`.`x` = `DS3`.`x`)
AND (`DS1`.`z` = `DS3`.`z`))
INNER JOIN `DS2` `DS2` ON (`DS1`.`y` = `DS2`.`yy`)
GROUP BY 1.1000000000000001; {code}
With the following error
{noformat}
org.apache.asterix.common.exceptions.CompilationException: ASX1079: Compilation
error: Found non-functional function asterix:agg-local-sql-sum#1 (in line 3, at
column 12)
at
org.apache.asterix.optimizer.rules.SweepIllegalNonfunctionalFunctions$IllegalNonfunctionalFunctionSweeperOperatorVisitor.sweepExpression(SweepIllegalNonfunctionalFunctions.java:108)
~[classes/:?]
at
org.apache.asterix.optimizer.rules.SweepIllegalNonfunctionalFunctions$IllegalNonfunctionalFunctionSweeperOperatorVisitor.visitAggregateOperator(SweepIllegalNonfunctionalFunctions.java:115)
~[classes/:?]
at
org.apache.asterix.optimizer.rules.SweepIllegalNonfunctionalFunctions$IllegalNonfunctionalFunctionSweeperOperatorVisitor.visitAggregateOperator(SweepIllegalNonfunctionalFunctions.java:102)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator.accept(AggregateOperator.java:54)
~[classes/:?]
at
org.apache.asterix.optimizer.rules.SweepIllegalNonfunctionalFunctions.rewritePost(SweepIllegalNonfunctionalFunctions.java:96)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:119)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:104)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:92)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:92)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:92)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:92)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:92)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:92)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:92)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:92)
~[classes/:?]
at
org.apache.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialOnceRuleController.rewriteWithRuleCollection(SequentialOnceRuleController.java:43)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.runOptimizationSets(HeuristicOptimizer.java:92)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.runPhysicalOptimizationSets(HeuristicOptimizer.java:122)
~[classes/:?]
at
org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.optimize(HeuristicOptimizer.java:66)
~[classes/:?]
at
org.apache.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder$CompilerImpl.optimize(HeuristicCompilerFactoryBuilder.java:163)
~[classes/:?]
at
org.apache.asterix.api.common.APIFramework.compileQuery(APIFramework.java:268)
~[classes/:?]
at
org.apache.asterix.app.translator.QueryTranslator.rewriteCompileQuery(QueryTranslator.java:3630)
~[classes/:?]
at
org.apache.asterix.app.translator.QueryTranslator.lambda$handleQuery$2(QueryTranslator.java:4543)
~[classes/:?]
at
org.apache.asterix.app.translator.QueryTranslator.createAndRunJob(QueryTranslator.java:4685)
~[classes/:?]
at
org.apache.asterix.app.translator.QueryTranslator.deliverResult(QueryTranslator.java:4580)
~[classes/:?]
at
org.apache.asterix.app.translator.QueryTranslator.handleQuery(QueryTranslator.java:4559)
~[classes/:?]
at
org.apache.asterix.app.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:497)
~[classes/:?]
at
org.apache.asterix.api.http.server.QueryServiceServlet.executeStatement(QueryServiceServlet.java:415)
~[classes/:?]
at
org.apache.asterix.api.http.server.QueryServiceServlet.handleRequest(QueryServiceServlet.java:305)
~[classes/:?]
at
org.apache.asterix.api.http.server.QueryServiceServlet.post(QueryServiceServlet.java:139)
~[classes/:?]
at
org.apache.hyracks.http.server.AbstractServlet.handle(AbstractServlet.java:94)
~[classes/:?]
at
org.apache.hyracks.http.server.HttpRequestHandler.handle(HttpRequestHandler.java:83)
~[classes/:?]
at
org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:68)
~[classes/:?]
at
org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:37)
~[classes/:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
~[?:?]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
~[?:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)