|
198 | 198 | StreamMaterialize { columns: [x, i.t._row_id(hidden), i.t._row_id#1(hidden), i.x(hidden), i.t._row_id#2(hidden), i.t._row_id#3(hidden), i.x#1(hidden)], pk_columns: [i.t._row_id, i.t._row_id#1, i.x, i.t._row_id#2, i.t._row_id#3, i.x#1], pk_conflict: "no check" }
|
199 | 199 | └─StreamExchange { dist: HashShard(i.t._row_id, i.t._row_id, i.x, i.t._row_id, i.t._row_id, i.x) }
|
200 | 200 | └─StreamProject { exprs: [Coalesce(i.x, i.x) as $expr1, i.t._row_id, i.t._row_id, i.x, i.t._row_id, i.t._row_id, i.x] }
|
201 |
| - └─StreamHashJoin { type: FullOuter, predicate: i.x = i.x, output: [i.x, i.x, i.t._row_id, i.t._row_id, i.t._row_id, i.t._row_id] } |
202 |
| - ├─StreamShare { id = 5 } |
203 |
| - | └─StreamHashJoin { type: Inner, predicate: i.x = i.x, output: [i.x, i.t._row_id, i.t._row_id] } |
204 |
| - | ├─StreamExchange { dist: HashShard(i.x) } |
205 |
| - | | └─StreamTableScan { table: i, columns: [i.x, i.t._row_id], pk: [i.t._row_id], dist: UpstreamHashShard(i.x) } |
206 |
| - | └─StreamExchange { dist: HashShard(i.x) } |
207 |
| - | └─StreamTableScan { table: i, columns: [i.x, i.t._row_id], pk: [i.t._row_id], dist: UpstreamHashShard(i.x) } |
208 |
| - └─StreamShare { id = 5 } |
209 |
| - └─StreamHashJoin { type: Inner, predicate: i.x = i.x, output: [i.x, i.t._row_id, i.t._row_id] } |
210 |
| - ├─StreamExchange { dist: HashShard(i.x) } |
211 |
| - | └─StreamTableScan { table: i, columns: [i.x, i.t._row_id], pk: [i.t._row_id], dist: UpstreamHashShard(i.x) } |
212 |
| - └─StreamExchange { dist: HashShard(i.x) } |
213 |
| - └─StreamTableScan { table: i, columns: [i.x, i.t._row_id], pk: [i.t._row_id], dist: UpstreamHashShard(i.x) } |
| 201 | + └─StreamFilter { predicate: (((((IsNotNull(i.t._row_id) OR IsNotNull(i.t._row_id)) OR IsNotNull(i.x)) OR IsNotNull(i.t._row_id)) OR IsNotNull(i.t._row_id)) OR IsNotNull(i.x)) } |
| 202 | + └─StreamHashJoin { type: FullOuter, predicate: i.x = i.x, output: [i.x, i.x, i.t._row_id, i.t._row_id, i.t._row_id, i.t._row_id] } |
| 203 | + ├─StreamShare { id = 5 } |
| 204 | + | └─StreamHashJoin { type: Inner, predicate: i.x = i.x, output: [i.x, i.t._row_id, i.t._row_id] } |
| 205 | + | ├─StreamExchange { dist: HashShard(i.x) } |
| 206 | + | | └─StreamTableScan { table: i, columns: [i.x, i.t._row_id], pk: [i.t._row_id], dist: UpstreamHashShard(i.x) } |
| 207 | + | └─StreamExchange { dist: HashShard(i.x) } |
| 208 | + | └─StreamTableScan { table: i, columns: [i.x, i.t._row_id], pk: [i.t._row_id], dist: UpstreamHashShard(i.x) } |
| 209 | + └─StreamShare { id = 5 } |
| 210 | + └─StreamHashJoin { type: Inner, predicate: i.x = i.x, output: [i.x, i.t._row_id, i.t._row_id] } |
| 211 | + ├─StreamExchange { dist: HashShard(i.x) } |
| 212 | + | └─StreamTableScan { table: i, columns: [i.x, i.t._row_id], pk: [i.t._row_id], dist: UpstreamHashShard(i.x) } |
| 213 | + └─StreamExchange { dist: HashShard(i.x) } |
| 214 | + └─StreamTableScan { table: i, columns: [i.x, i.t._row_id], pk: [i.t._row_id], dist: UpstreamHashShard(i.x) } |
214 | 215 | - name: Use lookup join
|
215 | 216 | sql: |
|
216 | 217 | create table t1 (v1 int, v2 int);
|
|
505 | 506 | └─StreamExchange { dist: HashShard(a._row_id, b._row_id, a.x, b.x) }
|
506 | 507 | └─StreamProject { exprs: [(2:Int32 * Coalesce(a.x, b.x)) as $expr1, (Coalesce(a.x, b.x) + Coalesce(a.x, b.x)) as $expr2, (Coalesce(a.x, b.x) + Coalesce(a.x, b.x)) as $expr3, a._row_id, b._row_id, a.x, b.x] }
|
507 | 508 | └─StreamFilter { predicate: ((2:Int32 * Coalesce(a.x, b.x)) < 10:Int32) }
|
508 |
| - └─StreamHashJoin { type: FullOuter, predicate: a.x = b.x, output: [a.x, b.x, a._row_id, b._row_id] } |
509 |
| - ├─StreamExchange { dist: HashShard(a.x) } |
510 |
| - | └─StreamTableScan { table: a, columns: [a.x, a._row_id], pk: [a._row_id], dist: UpstreamHashShard(a._row_id) } |
511 |
| - └─StreamExchange { dist: HashShard(b.x) } |
512 |
| - └─StreamTableScan { table: b, columns: [b.x, b._row_id], pk: [b._row_id], dist: UpstreamHashShard(b._row_id) } |
| 509 | + └─StreamFilter { predicate: (IsNotNull(a._row_id) OR IsNotNull(b._row_id)) } |
| 510 | + └─StreamHashJoin { type: FullOuter, predicate: a.x = b.x, output: [a.x, b.x, a._row_id, b._row_id] } |
| 511 | + ├─StreamExchange { dist: HashShard(a.x) } |
| 512 | + | └─StreamTableScan { table: a, columns: [a.x, a._row_id], pk: [a._row_id], dist: UpstreamHashShard(a._row_id) } |
| 513 | + └─StreamExchange { dist: HashShard(b.x) } |
| 514 | + └─StreamTableScan { table: b, columns: [b.x, b._row_id], pk: [b._row_id], dist: UpstreamHashShard(b._row_id) } |
513 | 515 | - sql: |
|
514 | 516 | CREATE TABLE test (a INTEGER, b INTEGER);
|
515 | 517 | CREATE TABLE test2 (a INTEGER, c INTEGER);
|
|
0 commit comments