@@ -16,18 +16,14 @@ use std::sync::Arc;
16
16
17
17
use common_base:: base:: tokio:: sync:: Barrier ;
18
18
use common_exception:: Result ;
19
- use common_pipeline_core:: processors:: InputPort ;
20
19
use common_pipeline_core:: processors:: ProcessorPtr ;
21
- use common_pipeline_core:: Pipe ;
22
- use common_pipeline_core:: PipeItem ;
23
20
use common_pipeline_sinks:: Sinker ;
24
21
use common_pipeline_transforms:: processors:: ProcessorProfileWrapper ;
25
22
use common_pipeline_transforms:: processors:: ProfileStub ;
26
23
use common_pipeline_transforms:: processors:: Transformer ;
27
24
use common_sql:: executor:: physical_plans:: HashJoin ;
28
25
use common_sql:: executor:: physical_plans:: MaterializedCte ;
29
26
use common_sql:: executor:: physical_plans:: RangeJoin ;
30
- use common_sql:: executor:: physical_plans:: RuntimeFilterSource ;
31
27
use common_sql:: executor:: PhysicalPlan ;
32
28
use common_sql:: ColumnBinding ;
33
29
use common_sql:: IndexType ;
@@ -42,13 +38,10 @@ use crate::pipelines::processors::transforms::HashJoinProbeState;
42
38
use crate :: pipelines:: processors:: transforms:: MaterializedCteSink ;
43
39
use crate :: pipelines:: processors:: transforms:: MaterializedCteState ;
44
40
use crate :: pipelines:: processors:: transforms:: ProbeSpillState ;
45
- use crate :: pipelines:: processors:: transforms:: RuntimeFilterState ;
46
41
use crate :: pipelines:: processors:: transforms:: TransformHashJoinBuild ;
47
42
use crate :: pipelines:: processors:: transforms:: TransformHashJoinProbe ;
48
43
use crate :: pipelines:: processors:: HashJoinDesc ;
49
44
use crate :: pipelines:: processors:: HashJoinState ;
50
- use crate :: pipelines:: processors:: SinkRuntimeFilterSource ;
51
- use crate :: pipelines:: processors:: TransformRuntimeFilter ;
52
45
use crate :: pipelines:: PipelineBuilder ;
53
46
use crate :: sessions:: QueryContext ;
54
47
@@ -202,17 +195,11 @@ impl PipelineBuilder {
202
195
Ok ( ProcessorPtr :: create ( transform) )
203
196
}
204
197
} ;
205
- if hash_join_plan. contain_runtime_filter {
206
- build_res. main_pipeline . duplicate ( false ) ?;
207
- self . join_state = Some ( build_state. clone ( ) ) ;
208
- self . index = Some ( self . pipelines . len ( ) ) ;
209
- } else {
210
- // for merge into
211
- if hash_join_plan. need_hold_hash_table {
212
- self . join_state = Some ( build_state. clone ( ) )
213
- }
214
- build_res. main_pipeline . add_sink ( create_sink_processor) ?;
198
+ // for merge into
199
+ if hash_join_plan. need_hold_hash_table {
200
+ self . join_state = Some ( build_state. clone ( ) )
215
201
}
202
+ build_res. main_pipeline . add_sink ( create_sink_processor) ?;
216
203
217
204
self . pipelines . push ( build_res. main_pipeline . finalize ( ) ) ;
218
205
self . pipelines . extend ( build_res. sources_pipelines ) ;
@@ -301,83 +288,6 @@ impl PipelineBuilder {
301
288
Ok ( ( ) )
302
289
}
303
290
304
- pub fn build_runtime_filter_source (
305
- & mut self ,
306
- runtime_filter_source : & RuntimeFilterSource ,
307
- ) -> Result < ( ) > {
308
- let state = self . build_runtime_filter_state ( self . ctx . clone ( ) , runtime_filter_source) ?;
309
- self . expand_runtime_filter_source ( & runtime_filter_source. right_side , state. clone ( ) ) ?;
310
- self . build_runtime_filter ( & runtime_filter_source. left_side , state) ?;
311
- Ok ( ( ) )
312
- }
313
-
314
- fn expand_runtime_filter_source (
315
- & mut self ,
316
- _right_side : & PhysicalPlan ,
317
- state : Arc < RuntimeFilterState > ,
318
- ) -> Result < ( ) > {
319
- let pipeline = & mut self . pipelines [ self . index . unwrap ( ) ] ;
320
- let output_size = pipeline. output_len ( ) ;
321
- debug_assert ! ( output_size % 2 == 0 ) ;
322
-
323
- let mut items = Vec :: with_capacity ( output_size) ;
324
- // Join
325
- // / \
326
- // / \
327
- // RFSource \
328
- // / \ \
329
- // / \ \
330
- // scan t1 scan t2
331
- for _ in 0 ..output_size / 2 {
332
- let input = InputPort :: create ( ) ;
333
- items. push ( PipeItem :: create (
334
- ProcessorPtr :: create ( TransformHashJoinBuild :: try_create (
335
- input. clone ( ) ,
336
- self . join_state . as_ref ( ) . unwrap ( ) . clone ( ) ,
337
- None ,
338
- ) ?) ,
339
- vec ! [ input] ,
340
- vec ! [ ] ,
341
- ) ) ;
342
- let input = InputPort :: create ( ) ;
343
- items. push ( PipeItem :: create (
344
- ProcessorPtr :: create ( Sinker :: < SinkRuntimeFilterSource > :: create (
345
- input. clone ( ) ,
346
- SinkRuntimeFilterSource :: new ( state. clone ( ) ) ,
347
- ) ) ,
348
- vec ! [ input] ,
349
- vec ! [ ] ,
350
- ) ) ;
351
- }
352
- pipeline. add_pipe ( Pipe :: create ( output_size, 0 , items) ) ;
353
- Ok ( ( ) )
354
- }
355
-
356
- fn build_runtime_filter (
357
- & mut self ,
358
- left_side : & PhysicalPlan ,
359
- state : Arc < RuntimeFilterState > ,
360
- ) -> Result < ( ) > {
361
- self . build_pipeline ( left_side) ?;
362
- self . main_pipeline . add_transform ( |input, output| {
363
- let processor = TransformRuntimeFilter :: create ( input, output, state. clone ( ) ) ;
364
- Ok ( ProcessorPtr :: create ( processor) )
365
- } ) ?;
366
- Ok ( ( ) )
367
- }
368
-
369
- fn build_runtime_filter_state (
370
- & self ,
371
- ctx : Arc < QueryContext > ,
372
- runtime_filter_source : & RuntimeFilterSource ,
373
- ) -> Result < Arc < RuntimeFilterState > > {
374
- Ok ( Arc :: new ( RuntimeFilterState :: new (
375
- ctx,
376
- runtime_filter_source. left_runtime_filters . clone ( ) ,
377
- runtime_filter_source. right_runtime_filters . clone ( ) ,
378
- ) ) )
379
- }
380
-
381
291
pub ( crate ) fn build_materialized_cte (
382
292
& mut self ,
383
293
materialized_cte : & MaterializedCte ,
0 commit comments