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)

Reply via email to