You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Maryann Xue (JIRA)" <ji...@apache.org> on 2017/03/09 20:21:38 UTC

[jira] [Resolved] (PHOENIX-3724) Infinite loop in local index tests having filters on non indexed columns in Phoenix-Calcite

     [ https://issues.apache.org/jira/browse/PHOENIX-3724?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Maryann Xue resolved PHOENIX-3724.
----------------------------------
    Resolution: Fixed
      Assignee: Maryann Xue  (was: Rajeshbabu Chintaguntla)

Thank you very much, [~rajeshbabu], for finding this issue! The problem was that the new "extendedColumnRef" was not computed correctly and thus prevented the exit condition of the rule from taking effect.
So the fix is to set the {{extendedColumnRef}} right before passing it into the {{PhoenixTableScan}} constructor and then assert that it contains the columns used by the filter within the constructor.

> Infinite loop in local index tests having filters on non indexed columns in Phoenix-Calcite
> -------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-3724
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3724
>             Project: Phoenix
>          Issue Type: Sub-task
>            Reporter: Rajeshbabu Chintaguntla
>            Assignee: Maryann Xue
>              Labels: calcite
>         Attachments: PHOENIX-3724.patch
>
>
> Here is the failing test QueryIT#testIsNotNull. With PhoenixTableScanColumnRefRule rule there is infinite loop to finalize best plan. 
> {noformat}
> java.lang.OutOfMemoryError: GC overhead limit exceeded
> 	at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:68)
> 	at java.lang.StringBuffer.<init>(StringBuffer.java:116)
> 	at java.io.StringWriter.<init>(StringWriter.java:50)
> 	at org.apache.calcite.rel.AbstractRelNode.computeDigest(AbstractRelNode.java:397)
> 	at org.apache.calcite.rel.AbstractRelNode.recomputeDigest(AbstractRelNode.java:358)
> 	at org.apache.calcite.plan.hep.HepPlanner.updateVertex(HepPlanner.java:839)
> 	at org.apache.calcite.plan.hep.HepPlanner.addRelToGraph(HepPlanner.java:780)
> 	at org.apache.calcite.plan.hep.HepPlanner.applyTransformationResults(HepPlanner.java:691)
> 	at org.apache.calcite.plan.hep.HepPlanner.applyRule(HepPlanner.java:509)
> 	at org.apache.calcite.plan.hep.HepPlanner.applyRules(HepPlanner.java:384)
> 	at org.apache.calcite.plan.hep.HepPlanner.executeInstruction(HepPlanner.java:251)
> 	at org.apache.calcite.plan.hep.HepInstruction$RuleInstance.execute(HepInstruction.java:125)
> 	at org.apache.calcite.plan.hep.HepPlanner.executeProgram(HepPlanner.java:210)
> 	at org.apache.calcite.plan.hep.HepPlanner.findBestExp(HepPlanner.java:197)
> 	at org.apache.calcite.tools.Programs$2.run(Programs.java:213)
> 	at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:387)
> 	at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:387)
> 	at org.apache.phoenix.calcite.PhoenixPrograms$1.planFor(PhoenixPrograms.java:200)
> 	at org.apache.phoenix.calcite.PhoenixPrograms$1.run(PhoenixPrograms.java:180)
> 	at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:387)
> 	at org.apache.calcite.prepare.Prepare.optimize(Prepare.java:158)
> 	at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:291)
> 	at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:200)
> 	at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:761)
> 	at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:617)
> 	at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:587)
> 	at org.apache.phoenix.calcite.PhoenixPrepareImpl.prepareSql(PhoenixPrepareImpl.java:208)
> 	at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:214)
> 	at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement_(CalciteConnectionImpl.java:195)
> 	at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:185)
> 	at org.apache.calcite.jdbc.PhoenixCalciteFactory$PhoenixCalciteConnection.prepareStatement(PhoenixCalciteFactory.java:161)
> 	at org.apache.calcite.jdbc.PhoenixCalciteFactory$PhoenixCalciteConnection.prepareStatement(PhoenixCalciteFactory.java:1)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)