phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Maryann Xue (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (PHOENIX-3724) Infinite loop in local index tests having filters on non indexed columns in Phoenix-Calcite
Date Thu, 09 Mar 2017 20:21:38 GMT

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

Mime
View raw message