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