[
https://issues.apache.org/jira/browse/ASTERIXDB-3092?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Wail Y. Alkowaileet resolved ASTERIXDB-3092.
--------------------------------------------
Resolution: Fixed
> LoadRecordFieldsRule should only consider field-access functions
> ----------------------------------------------------------------
>
> Key: ASTERIXDB-3092
> URL: https://issues.apache.org/jira/browse/ASTERIXDB-3092
> Project: Apache AsterixDB
> Issue Type: Bug
> Components: COMP - Compiler
> Affects Versions: 0.9.7
> Reporter: Wail Y. Alkowaileet
> Assignee: Wail Y. Alkowaileet
> Priority: Major
> Fix For: 0.9.9
>
>
> Reproducer is as follows:
> DDL:
> {code:java}
> DROP DATAVERSE test IF EXISTS;
> CREATE DATAVERSE test;
> USE test;
> CREATE TYPE OpenType AS {
> id: int
> };
> CREATE DATASET MyDataset(OpenType)
> PRIMARY KEY id;{code}
> Query:
> {code:java}
> USE test;
> -- Disabled for a simpler plan
> SET `compiler.sort.parallel` "false";
> SELECT VALUE md.name
> FROM MyDataset md
> LET currentData = {"myDate": current_date()}
> WHERE currentData.myDate = current_date()
> ORDER BY md.id
> {code}
> Error:
> {code:java}
> java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
> at jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
> ~[?:?]
> at
> jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
> ~[?:?]
> at jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
> ~[?:?]
> at java.util.Objects.checkIndex(Objects.java:372) ~[?:?]
> at java.util.ArrayList.get(ArrayList.java:459) ~[?:?]
> at
> org.apache.asterix.optimizer.rules.LoadRecordFieldsRule.rewritePost(LoadRecordFieldsRule.java:115)
> ~[classes/:?]
> at
> org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:118)
> ~[classes/:?]
> at
> org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:91)
> ~[classes/:?]
> at
> org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:91)
> ~[classes/:?]
> at
> org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:91)
> ~[classes/:?]
> at
> org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:91)
> ~[classes/:?]
> at
> org.apache.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialFixpointRuleController.rewriteWithRuleCollection(SequentialFixpointRuleController.java:52)
> ~[classes/:?]
> at
> org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.runOptimizationSets(HeuristicOptimizer.java:91)
> ~[classes/:?]
> at
> org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.runLogicalOptimizationSets(HeuristicOptimizer.java:82)
> ~[classes/:?]
> at
> org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.optimize(HeuristicOptimizer.java:63)
> ~[classes/:?]
> at
> org.apache.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder$1$1.optimize(HeuristicCompilerFactoryBuilder.java:94)
> ~[classes/:?]
> at
> org.apache.asterix.api.common.APIFramework.compileQuery(APIFramework.java:269)
> ~[classes/:?]
> at
> org.apache.asterix.app.translator.QueryTranslator.rewriteCompileQuery(QueryTranslator.java:3708)
> ~[classes/:?]
> at
> org.apache.asterix.app.translator.QueryTranslator.lambda$handleQuery$2(QueryTranslator.java:4216)
> ~[classes/:?]
> at
> org.apache.asterix.app.translator.QueryTranslator.createAndRunJob(QueryTranslator.java:4348)
> ~[classes/:?]
> at
> org.apache.asterix.app.translator.QueryTranslator.deliverResult(QueryTranslator.java:4252)
> ~[classes/:?]
> at
> org.apache.asterix.app.translator.QueryTranslator.handleQuery(QueryTranslator.java:4231)
> ~[classes/:?]
> at
> org.apache.asterix.app.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:490)
> ~[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$$$capture(FutureTask.java:264)
> [?:?]
> at java.util.concurrent.FutureTask.run(FutureTask.java) [?:?]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> [?:?]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> [?:?]
> at java.lang.Thread.run(Thread.java:829) [?:?] {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)