@@ -133,9 +133,6 @@ TableScan
133
133
โโโ virtual columns: [v['a'][0], v['b']]
134
134
โโโ estimated rows: 0.00
135
135
136
- statement ok
137
- drop table t1
138
-
139
136
statement ok
140
137
drop table if exists t2
141
138
@@ -256,6 +253,109 @@ Filter
256
253
โโโ virtual columns: [v['a'][0], v['b']]
257
254
โโโ estimated rows: 1.00
258
255
256
+ query T
257
+ explain select t1.a, t1.v['b'] from t1 left outer join t2 on t1.v['b'] = t2.a where t1.v['a'][0] = 1;
258
+ ----
259
+ HashJoin
260
+ โโโ output columns: [t1.a (#0), t1.v['b'] (#4)]
261
+ โโโ join type: RIGHT OUTER
262
+ โโโ build keys: []
263
+ โโโ probe keys: []
264
+ โโโ keys is null equal: []
265
+ โโโ filters: [TRY_CAST(v['b'] (#4) AS Int32 NULL) = t2.a (#2)]
266
+ โโโ estimated rows: 0.00
267
+ โโโ TableScan(Build)
268
+ โ โโโ table: default.test_virtual_db.t1
269
+ โ โโโ output columns: [a (#0), v['b'] (#4)]
270
+ โ โโโ read rows: 1
271
+ โ โโโ read size: < 1 KiB
272
+ โ โโโ partitions total: 1
273
+ โ โโโ partitions scanned: 1
274
+ โ โโโ pruning stats: [segments: <range pruning: 1 to 1>, blocks: <range pruning: 1 to 1>]
275
+ โ โโโ push downs: [filters: [is_true(TRY_CAST(v['a'][0] (#5) AS UInt8 NULL) = 1)], limit: NONE]
276
+ โ โโโ virtual columns: [v['a'][0], v['b']]
277
+ โ โโโ estimated rows: 0.00
278
+ โโโ TableScan(Probe)
279
+ โโโ table: default.test_virtual_db.t2
280
+ โโโ output columns: [a (#2)]
281
+ โโโ read rows: 1
282
+ โโโ read size: < 1 KiB
283
+ โโโ partitions total: 1
284
+ โโโ partitions scanned: 1
285
+ โโโ pruning stats: [segments: <range pruning: 1 to 1>, blocks: <range pruning: 1 to 1>]
286
+ โโโ push downs: [filters: [], limit: NONE]
287
+ โโโ estimated rows: 1.00
288
+
289
+ query T
290
+ explain select t1.a, t1.v['b'] from t1 left outer join t2 on t1.v['b'] = t2.a where t1.v['a'][0] = 1;
291
+ ----
292
+ HashJoin
293
+ โโโ output columns: [t1.a (#0), t1.v['b'] (#4)]
294
+ โโโ join type: RIGHT OUTER
295
+ โโโ build keys: []
296
+ โโโ probe keys: []
297
+ โโโ keys is null equal: []
298
+ โโโ filters: [TRY_CAST(v['b'] (#4) AS Int32 NULL) = t2.a (#2)]
299
+ โโโ estimated rows: 0.00
300
+ โโโ TableScan(Build)
301
+ โ โโโ table: default.test_virtual_db.t1
302
+ โ โโโ output columns: [a (#0), v['b'] (#4)]
303
+ โ โโโ read rows: 1
304
+ โ โโโ read size: < 1 KiB
305
+ โ โโโ partitions total: 1
306
+ โ โโโ partitions scanned: 1
307
+ โ โโโ pruning stats: [segments: <range pruning: 1 to 1>, blocks: <range pruning: 1 to 1>]
308
+ โ โโโ push downs: [filters: [is_true(TRY_CAST(v['a'][0] (#5) AS UInt8 NULL) = 1)], limit: NONE]
309
+ โ โโโ virtual columns: [v['a'][0], v['b']]
310
+ โ โโโ estimated rows: 0.00
311
+ โโโ TableScan(Probe)
312
+ โโโ table: default.test_virtual_db.t2
313
+ โโโ output columns: [a (#2)]
314
+ โโโ read rows: 1
315
+ โโโ read size: < 1 KiB
316
+ โโโ partitions total: 1
317
+ โโโ partitions scanned: 1
318
+ โโโ pruning stats: [segments: <range pruning: 1 to 1>, blocks: <range pruning: 1 to 1>]
319
+ โโโ push downs: [filters: [], limit: NONE]
320
+ โโโ estimated rows: 1.00
321
+
322
+
323
+ query T
324
+ explain select * from t1 join t2 on t1.v['b'] = t2.a;
325
+ ----
326
+ HashJoin
327
+ โโโ output columns: [t1.a (#0), t1.v (#1), t2.a (#2), t2.v (#3)]
328
+ โโโ join type: INNER
329
+ โโโ build keys: [t2.a (#2)]
330
+ โโโ probe keys: [CAST(v['b'] (#4) AS Int32 NULL)]
331
+ โโโ keys is null equal: [false]
332
+ โโโ filters: []
333
+ โโโ estimated rows: 1.00
334
+ โโโ TableScan(Build)
335
+ โ โโโ table: default.test_virtual_db.t2
336
+ โ โโโ output columns: [a (#2), v (#3)]
337
+ โ โโโ read rows: 1
338
+ โ โโโ read size: < 1 KiB
339
+ โ โโโ partitions total: 1
340
+ โ โโโ partitions scanned: 1
341
+ โ โโโ pruning stats: [segments: <range pruning: 1 to 1>, blocks: <range pruning: 1 to 1>]
342
+ โ โโโ push downs: [filters: [], limit: NONE]
343
+ โ โโโ estimated rows: 1.00
344
+ โโโ TableScan(Probe)
345
+ โโโ table: default.test_virtual_db.t1
346
+ โโโ output columns: [a (#0), v (#1), v['b'] (#4)]
347
+ โโโ read rows: 1
348
+ โโโ read size: < 1 KiB
349
+ โโโ partitions total: 1
350
+ โโโ partitions scanned: 1
351
+ โโโ pruning stats: [segments: <range pruning: 1 to 1>, blocks: <range pruning: 1 to 1>]
352
+ โโโ push downs: [filters: [], limit: NONE]
353
+ โโโ virtual columns: [v['b']]
354
+ โโโ estimated rows: 1.00
355
+
356
+ statement ok
357
+ drop table t1
358
+
259
359
statement ok
260
360
drop table t2
261
361
0 commit comments