You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "Taewoo Kim (JIRA)" <ji...@apache.org> on 2017/03/02 17:03:45 UTC
[jira] [Closed] (ASTERIXDB-1806) IllegalStateException from
BTreeAccessMethod
[ https://issues.apache.org/jira/browse/ASTERIXDB-1806?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Taewoo Kim closed ASTERIXDB-1806.
---------------------------------
Resolution: Fixed
At first, I tried to prevent the optimizer check this function's argument. After having a discussion with [~dtabass], we came up with a general solution. Regarding the index utilization transformation, the function's arguments should not be checked by the optimizer. Only arguments of AND function can be checked. This change has been merged into the master.
> IllegalStateException from BTreeAccessMethod
> --------------------------------------------
>
> Key: ASTERIXDB-1806
> URL: https://issues.apache.org/jira/browse/ASTERIXDB-1806
> Project: Apache AsterixDB
> Issue Type: Bug
> Components: Compiler
> Reporter: Yingyi Bu
> Assignee: Taewoo Kim
>
> DDL:
> {noformat}
> drop dataverse tpch if exists;
> create dataverse tpch;
> use tpch;
> create type LineItemType as
> closed {
> l_orderkey : integer,
> l_partkey : integer,
> l_suppkey : integer,
> l_linenumber : integer,
> l_quantity : double,
> l_extendedprice : double,
> l_discount : double,
> l_tax : double,
> l_returnflag : string,
> l_linestatus : string,
> l_shipdate : string,
> l_commitdate : string,
> l_receiptdate : string,
> l_shipinstruct : string,
> l_shipmode : string,
> l_comment : string
> }
> create dataset LineItem(LineItemType) primary key l_orderkey,l_linenumber;
> {noformat}
> Query:
> {noformat}
> USE tpch;
> SET `import-private-functions` "true";
> SELECT l_returnflag,
> l_linestatus,
> sum(l_quantity) AS sum_qty,
> sum(l_extendedprice) AS sum_base_price,
> sum(l_extendedprice * (1 - l_discount)) AS sum_disc_price,
> sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) AS sum_charge,
> avg(l_quantity) AS ave_qty,
> avg(l_extendedprice) AS ave_price,
> avg(l_discount) AS ave_disc,
> count(1) AS count_order
> FROM LineItem l
> WHERE inject_failure(l.l_shipdate <= '1998-09-02', l.l_orderkey=5988)
> GROUP BY l_returnflag, l_linestatus
> ORDER BY l_returnflag, l_linestatus
> ;
> {noformat}
> Exception:
> {noformat}
> java.lang.IllegalStateException
> at org.apache.asterix.optimizer.rules.am.BTreeAccessMethod.getNewConditionExprs(BTreeAccessMethod.java:651)
> at org.apache.asterix.optimizer.rules.am.BTreeAccessMethod.createSecondaryToPrimaryPlan(BTreeAccessMethod.java:544)
> at org.apache.asterix.optimizer.rules.am.BTreeAccessMethod.applySelectPlanTransformation(BTreeAccessMethod.java:129)
> at org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.intersectAllSecondaryIndexes(IntroduceSelectAccessMethodRule.java:221)
> at org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformationRule(IntroduceSelectAccessMethodRule.java:176)
> at org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformationRule(IntroduceSelectAccessMethodRule.java:195)
> at org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformationRule(IntroduceSelectAccessMethodRule.java:195)
> at org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformationRule(IntroduceSelectAccessMethodRule.java:195)
> at org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformationRule(IntroduceSelectAccessMethodRule.java:195)
> at org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformationRule(IntroduceSelectAccessMethodRule.java:195)
> at org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformationRule(IntroduceSelectAccessMethodRule.java:195)
> at org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.rewritePost(IntroduceSelectAccessMethodRule.java:130)
> at org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:126)
> at org.apache.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialFixpointRuleController.rewriteWithRuleCollection(SequentialFixpointRuleController.java:53)
> at org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.runOptimizationSets(HeuristicOptimizer.java:102)
> at org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.optimize(HeuristicOptimizer.java:82)
> at org.apache.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder$1$1.optimize(HeuristicCompilerFactoryBuilder.java:90)
> at org.apache.asterix.api.common.APIFramework.compileQuery(APIFramework.java:251)
> at org.apache.asterix.app.translator.QueryTranslator.rewriteCompileQuery(QueryTranslator.java:1920)
> at org.apache.asterix.app.translator.QueryTranslator.lambda$handleQuery$1(QueryTranslator.java:2393)
> at org.apache.asterix.app.translator.QueryTranslator$$Lambda$67/2055910122.compile(Unknown Source)
> at org.apache.asterix.app.translator.QueryTranslator.createAndRunJob(QueryTranslator.java:2459)
> at org.apache.asterix.app.translator.QueryTranslator.deliverResult(QueryTranslator.java:2438)
> at org.apache.asterix.app.translator.QueryTranslator.handleQuery(QueryTranslator.java:2405)
> at org.apache.asterix.app.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:365)
> at org.apache.asterix.api.http.server.QueryServiceServlet.handleRequest(QueryServiceServlet.java:525)
> at org.apache.asterix.api.http.server.QueryServiceServlet.handle(QueryServiceServlet.java:94)
> at org.apache.hyracks.http.server.HttpRequestHandler.handle(HttpRequestHandler.java:70)
> at org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:55)
> at org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:36)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> testFile src/test/resources/runtimets/queries_sqlpp/failure/q01_pricing_summary_report_failure/q01_pricing_summary_report_failure.3.query.sqlpp raised an exception: org.apache.asterix.common.exceptions.AsterixException: IllegalStateException
> org.apache.asterix.common.exceptions.AsterixException: IllegalStateException
> at org.apache.asterix.test.aql.ResultExtractor.extract(ResultExtractor.java:77)
> at org.apache.asterix.test.aql.TestExecutor.executeTestFile(TestExecutor.java:834)
> at org.apache.asterix.test.aql.TestExecutor.executeTest(TestExecutor.java:1144)
> at org.apache.asterix.test.runtime.LangExecutionUtil.test(LangExecutionUtil.java:118)
> at org.apache.asterix.test.runtime.LangExecutionUtil.test(LangExecutionUtil.java:105)
> at org.apache.asterix.test.runtime.SqlppExecutionTest.test(SqlppExecutionTest.java:61)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:497)
> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> at org.junit.runners.Suite.runChild(Suite.java:128)
> at org.junit.runners.Suite.runChild(Suite.java:27)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
> at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
> at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)
> at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
> at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:253)
> at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:497)
> at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
> ...Unexpected!
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)