You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Jungtaek Lim (JIRA)" <ji...@apache.org> on 2016/10/19 23:30:58 UTC

[jira] [Closed] (CALCITE-1438) RelOptUtils.toString() throws StackOverflowError when RelSubset and input makes cycle

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

Jungtaek Lim closed CALCITE-1438.
---------------------------------
    Resolution: Invalid

Root reason is a bug in user side code. Closing.

> RelOptUtils.toString() throws StackOverflowError when RelSubset and input makes cycle
> -------------------------------------------------------------------------------------
>
>                 Key: CALCITE-1438
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1438
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Jungtaek Lim
>            Assignee: Julian Hyde
>            Priority: Critical
>
> I found that one of rels in Relsub has parent Relsub as 'input' (Relsub and Project). Fortunately it was not selected to 'best', but Relsub print out first occurence of rel which match the trait, and unfortunately it's first one.
> Query is really simple, INSERT INTO BAR SELECT ID, NAME, ADDR FROM FOO WHERE ID > 3. I didn't see this when I directly uses Calcite logical.
> rels:
> {code}
> 0 = {LogicalFilter@3579} "rel#10:LogicalFilter.NONE.[](input=rel#9:Subset#0.ENUMERABLE.[],condition=>($0, 3))"
> 1 = {LogicalProject@3584} "rel#12:LogicalProject.NONE.[](input=rel#11:Subset#1.NONE.[],ID=$0,NAME=$1,ADDR=$2)"
> 2 = {StormProjectRel@3554} "rel#21:StormProjectRel.STORM_LOGICAL.[](input=rel#20:Subset#1.STORM_LOGICAL.[],ID=$0,NAME=$1,ADDR=$2)"
> 3 = {LogicalCalc@3585} "rel#22:LogicalCalc.NONE.[[]](input=rel#11:Subset#1.NONE.[],expr#0..2={inputs},ID=$t0,NAME=$t1,ADDR=$t2)"
> 4 = {TridentStormFilterRel@3569} "rel#24:TridentStormFilterRel.STORM_LOGICAL.[](input=rel#23:Subset#0.STORM_LOGICAL.[],condition=>($0, 3))"
> 5 = {TridentStormCalcRel@3586} "rel#25:TridentStormCalcRel.STORM_LOGICAL.[[]](input=rel#20:Subset#1.STORM_LOGICAL.[],expr#0..2={inputs},ID=$t0,NAME=$t1,ADDR=$t2)"
> 6 = {LogicalCalc@3587} "rel#26:LogicalCalc.NONE.[[]](input=rel#9:Subset#0.ENUMERABLE.[],expr#0..2={inputs},expr#3=3,expr#4=>($t0, $t3),ID=$t0,NAME=$t1,ADDR=$t2,$condition=$t4)"
> 7 = {TridentStormCalcRel@3588} "rel#27:TridentStormCalcRel.STORM_LOGICAL.[[]](input=rel#23:Subset#0.STORM_LOGICAL.[],expr#0..2={inputs},expr#3=3,expr#4=>($t0, $t3),ID=$t0,NAME=$t1,ADDR=$t2,$condition=$t4)"
> {code}
> best: 
> {code}
> rel#24:TridentStormFilterRel.STORM_LOGICAL.[](input=rel#23:Subset#0.STORM_LOGICAL.[],condition=>($0, 3))
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)