Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-3499

EnumerableTableFunctionScanRule doesn't convert its inputs to Enumerable.CONVENTION

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.22.0
    • core
    • None

    Description

      The fix is trival: use convertList to convert inputs to Enumerable.CONVENTION.

      > Graphviz:
      > digraph G {
      > root [style=filled,label="Root"];
      > subgraph cluster0{
      > label="Set 0 RecordType(TIMESTAMP(0) ROWTIME, INTEGER ID, VARCHAR(10) PRODUCT, INTEGER UNITS)";
      > rel2 [label="rel#2:LogicalTableScan\ntable=[ORINOCO, ORDERS]\nrows=100.0, cost=

      {inf}",shape=box]
      > rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,ROWTIME=$0,ID=$1,PRODUCT=$2,UNITS=$3\nrows=100.0, cost={inf}

      ",shape=box]
      > rel30 [label="rel#30:EnumerableProject\ninput=RelSubset#29,ROWTIME=$0,ID=$1,PRODUCT=$2,UNITS=$3\nrows=100.0, cost=

      {151.0 rows, 451.01 cpu, 0.0 io}

      ",shape=box]
      > rel32 [label="rel#32:BindableTableScan\ntable=[ORINOCO, ORDERS]\nrows=100.0, cost=

      {1.0 rows, 1.01 cpu, 0.0 io}

      ",color=blue,shape=box]
      > rel34 [label="rel#34:EnumerableTableScan\ntable=[ORINOCO, ORDERS]\nrows=100.0, cost=

      {100.0 rows, 101.0 cpu, 0.0 io}

      ",shape=box]
      > rel35 [label="rel#35:EnumerableInterpreter\ninput=RelSubset#33\nrows=100.0, cost=

      {51.0 rows, 51.01 cpu, 0.0 io}

      ",color=blue,shape=box]
      > subset14 label="rel#14:Subset#0.NONE.[0]"
      > subset29 label="rel#29:Subset#0.ENUMERABLE.[0]"
      > subset33 label="rel#33:Subset#0.BINDABLE.[0]"
      > }
      > subgraph cluster2{
      > label="Set 2 RecordType(TIMESTAMP(0) ROWTIME, INTEGER ID, VARCHAR(10) PRODUCT, INTEGER UNITS, TIMESTAMP(0) wstart, TIMESTAMP(0) wend)";
      > rel17 [label="rel#17:LogicalTableFunctionScan\ninput#0=RelSubset#14,invocation=TUMBLE($3, 'ROWTIME', 60000:INTERVAL MINUTE),rowType=RecordType(TIMESTAMP(0) ROWTIME, INTEGER ID, VARCHAR(10) PRODUCT, INTEGER UNITS, TIMESTAMP(0) wstart, TIMESTAMP(0) wend)\nrows=100.0, cost=

      {inf}",shape=box]
      > rel19 [label="rel#19:LogicalProject\ninput=RelSubset#18,ROWTIME=$0,ID=$1,PRODUCT=$2,UNITS=$3,wstart=$4,wend=$5\nrows=100.0, cost={inf}

      ",shape=box]
      > rel25 [label="rel#25:AbstractConverter\ninput=RelSubset#18,convention=ENUMERABLE,sort=[]\nrows=100.0, cost=

      {inf}",shape=box]
      > rel27 [label="rel#27:EnumerableProject\ninput=RelSubset#26,ROWTIME=$0,ID=$1,PRODUCT=$2,UNITS=$3,wstart=$4,wend=$5\nrows=100.0, cost={inf}

      ",shape=box]
      > rel28 [label="rel#28:EnumerableTableFunctionScan\ninput#0=RelSubset#14,invocation=TUMBLE($3, 'ROWTIME', 60000:INTERVAL MINUTE),rowType=RecordType(TIMESTAMP(0) ROWTIME, INTEGER ID, VARCHAR(10) PRODUCT, INTEGER UNITS, TIMESTAMP(0) wstart, TIMESTAMP(0) wend)\nrows=100.0, cost=

      {inf}

      ",shape=box]
      > subset18 label="rel#18:Subset#2.NONE.[]"
      > subset26 label="rel#26:Subset#2.ENUMERABLE.[]"
      > }
      > root -> subset26;
      > subset14 -> rel2;
      > subset14 -> rel15; rel15 -> subset14;
      > subset29 -> rel30; rel30 -> subset29;
      > subset33 -> rel32[color=blue];
      > subset29 -> rel34;
      > subset29 -> rel35[color=blue]; rel35 -> subset33[color=blue];
      > subset18 -> rel17; rel17 -> subset14;
      > subset18 -> rel19; rel19 -> subset18;
      > subset26 -> rel25; rel25 -> subset18;
      > subset26 -> rel27; rel27 -> subset26;
      > subset26 -> rel28; rel28 -> subset14;
      > }

      Attachments

        Issue Links

          Activity

            People

              amaliujia Rui Wang
              amaliujia Rui Wang
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: