Wail Y. Alkowaileet created ASTERIXDB-3092:
----------------------------------------------
Summary: 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
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)