[ 
https://issues.apache.org/jira/browse/ASTERIXDB-3205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17732313#comment-17732313
 ] 

ASF subversion and git services commented on ASTERIXDB-3205:
------------------------------------------------------------

Commit bbe9d0344cff8723d162c313ba42c19e72fd159d in asterixdb's branch 
refs/heads/master from Wail Alkowaileet
[ https://gitbox.apache.org/repos/asf?p=asterixdb.git;h=bbe9d0344c ]

[ASTERIXDB-3205][COMP] Avoid inlining non-pure functions in aggregate functions

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
Currently, the compiler blindly inlines all functions
from assign operators into aggregate functions. However,
non-pure functions should not be inlined.

Change-Id: Ib3fbd684f1732a276d6033bf38507df41d33b843
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17589
Reviewed-by: Wail Alkowaileet <[email protected]>
Reviewed-by: Ali Alsuliman <[email protected]>
Integration-Tests: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>


> 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
>            Priority: Critical
>             Fix For: 0.9.9
>
>
> The following query fails at compile time
> {code:sql}SELECT SUM(random(1))
> FROM ExperDataset
> GROUP BY a.ai; {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