@@ -9,7 +9,7 @@ use vortex_vector::{Vector, VectorOps, vector_matches_dtype};
99
1010use crate :: execution:: { BatchKernelRef , BindCtx , DummyExecutionCtx , ExecutionCtx } ;
1111use crate :: pipeline:: source_driver:: PipelineSourceDriver ;
12- use crate :: vtable:: { OperatorVTable , VTable } ;
12+ use crate :: vtable:: { OperatorVTable , PipelineNode , VTable } ;
1313use crate :: { Array , ArrayAdapter , ArrayRef } ;
1414
1515/// Array functions as provided by the `OperatorVTable`.
@@ -63,11 +63,12 @@ impl ArrayOperator for Arc<dyn Array> {
6363
6464impl < V : VTable > ArrayOperator for ArrayAdapter < V > {
6565 fn execute_batch ( & self , selection : & Mask , ctx : & mut dyn ExecutionCtx ) -> VortexResult < Vector > {
66- // Check if the array is a pipeline source, and if so use the single-node driver for now.
67- if let Some ( pipeline_source) =
68- <V :: OperatorVTable as OperatorVTable < V > >:: as_pipelined_source ( & self . 0 )
66+ // Check if the array is a pipeline node
67+ if let Some ( pipeline_node) =
68+ <V :: OperatorVTable as OperatorVTable < V > >:: pipeline_node ( & self . 0 )
69+ && let PipelineNode :: Source ( source) = pipeline_node
6970 {
70- return PipelineSourceDriver :: new ( pipeline_source ) . execute ( selection) ;
71+ return PipelineSourceDriver :: new ( source ) . execute ( selection) ;
7172 }
7273
7374 let vector =
0 commit comments