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

Reply via email to