Hi all.

Using SQL with blink planner for batch calculations, i see *Reused*  nodes
in Optimized Execution Plan while making self join operations:


== Optimized Execution Plan ==
Union(all=[true], union=[id, v, v0, w0$o0])
:- OverAggregate(orderBy=[id DESC], window#0=[ROW_NUMBER(*) AS w0$o0 ROWS
BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], select=[id, v, v0,
w0$o0])(reuse_id=[2])
:  +- Sort(orderBy=[id DESC])
:     +- Exchange(distribution=[single])
:        +- Calc(select=[id, v, v0])
:           +- HashJoin(joinType=[LeftOuterJoin], where=[($f2 = id0)],
select=[id, v, $f2, id0, v0], build=[right])
:              :- Exchange(distribution=[hash[$f2]])
:              :  +- Calc(select=[id, v, (id + 1) AS $f2])
:              :     +- TableSourceScan(table=[[default_catalog,
default_database, t1]], fields=[id, v])(reuse_id=[1])
:              +- Exchange(distribution=[hash[id]])
:                 +- *Reused*(reference_id=[1])
+- *Reused*(reference_id=[2])


Question is: do these steps (scans, intermediate calculations) really be
calculated once or it is just a print shortcut?

Reply via email to