1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
---
source: src/client/src/tests/mod.rs
expression: displayable.tree_render().to_string()
---
┌───────────────────────────┐
│ ProjectionExec │
│ -------------------- │
│ avg_yearly: │
│ CAST(sum(lineitem │
│ .l_extendedprice │
│ ) AS Float64) / 7 │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ AggregateExec │
│ -------------------- │
│ aggr: │
│ sum(lineitem │
│ .l_extendedp │
│ rice) │
│ │
│ mode: Final │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ CoalescePartitionsExec │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ AggregateExec │
│ -------------------- │
│ aggr: │
│ sum(lineitem │
│ .l_extendedp │
│ rice) │
│ │
│ mode: Partial │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ CoalesceBatchesExec │
│ -------------------- │
│ target_batch_size: │
│ 16384 │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ HashJoinExec │
│ -------------------- │
│ filter: │
│ CAST(l_quantity AS │
│ Decimal128(30, │
│ 15)) < Float64(0.2) * ├───────────────────────────────────────────┐
│ avg(lineitem.l_quantity) │ │
│ │ │
│ on: │ │
│ (p_partkey = l_partkey) │ │
└─────────────┬─────────────┘ │
┌─────────────┴─────────────┐ ┌─────────────┴─────────────┐
│ ProjectionExec │ │ ProjectionExec │
│ -------------------- │ │ -------------------- │
│ l_extendedprice: │ │ Float64(0.2) * avg │
│ l_extendedprice │ │ (lineitem │
│ │ │ .l_quantity): │
│ l_quantity: │ │ CAST(0.2 * CAST(avg │
│ l_quantity │ │ (lineitem │
│ │ │ .l_quantity) AS │
│ p_partkey: p_partkey │ │ Float64) AS Decimal128 │
│ │ │ (30, 15)) │
│ │ │ │
│ │ │ l_partkey: l_partkey │
└─────────────┬─────────────┘ └─────────────┬─────────────┘
┌─────────────┴─────────────┐ ┌─────────────┴─────────────┐
│ CoalesceBatchesExec │ │ AggregateExec │
│ -------------------- │ │ -------------------- │
│ target_batch_size: │ │ aggr: │
│ 16384 │ │ avg(lineitem.l_quantity) │
│ │ │ │
│ │ │ group_by: l_partkey │
│ │ │ │
│ │ │ mode: │
│ │ │ FinalPartitioned │
└─────────────┬─────────────┘ └─────────────┬─────────────┘
┌─────────────┴─────────────┐ ┌─────────────┴─────────────┐
│ HashJoinExec │ │ CoalesceBatchesExec │
│ -------------------- │ │ -------------------- │
│ on: ├──────────────┐ │ target_batch_size: │
│ (p_partkey = l_partkey) │ │ │ 16384 │
└─────────────┬─────────────┘ │ └─────────────┬─────────────┘
┌─────────────┴─────────────┐┌─────────────┴─────────────┐┌─────────────┴─────────────┐
│ LiquidCacheClientExec ││ LiquidCacheClientExec ││ RepartitionExec │
│ -------------------- ││ -------------------- ││ -------------------- │
│ server: ││ server: ││ partition_count(in->out): │
│ http://localhost:50051, ││ http://localhost:50051, ││ 8 -> 8 │
│ object_stores=[] ││ object_stores=[] ││ │
│ ││ ││ partitioning_scheme: │
│ ││ ││ Hash([l_partkey@0], 8) │
└─────────────┬─────────────┘└─────────────┬─────────────┘└─────────────┬─────────────┘
┌─────────────┴─────────────┐┌─────────────┴─────────────┐┌─────────────┴─────────────┐
│ DataSourceExec ││ DataSourceExec ││ RepartitionExec │
│ -------------------- ││ -------------------- ││ -------------------- │
│ files: 1 ││ files: 1 ││ partition_count(in->out): │
│ format: parquet ││ format: parquet ││ 1 -> 8 │
│ ││ predicate: true ││ │
│ predicate: ││ ││ partitioning_scheme: │
│ p_brand = Brand#23 AND ││ ││ RoundRobinBatch(8) │
│ p_container = MED BOX ││ ││ │
└───────────────────────────┘└───────────────────────────┘└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ AggregateExec │
│ -------------------- │
│ aggr: │
│ avg(lineitem.l_quantity) │
│ │
│ group_by: l_partkey │
│ mode: Partial │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ LiquidCacheClientExec │
│ -------------------- │
│ server: │
│ http://localhost:50051, │
│ object_stores=[] │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ DataSourceExec │
│ -------------------- │
│ files: 1 │
│ format: parquet │
└───────────────────────────┘