@@ -37,7 +37,7 @@ use crate::compute::zip;
3737use crate :: expr:: Arity ;
3838use crate :: expr:: ChildName ;
3939use crate :: expr:: ExecutionArgs ;
40- use crate :: expr :: ExecutionResult ;
40+
4141use crate :: expr:: ExprId ;
4242use crate :: expr:: VTable ;
4343use crate :: expr:: VTableExt ;
@@ -168,7 +168,7 @@ impl VTable for CaseWhen {
168168 & self ,
169169 options : & Self :: Options ,
170170 args : ExecutionArgs ,
171- ) -> VortexResult < ExecutionResult > {
171+ ) -> VortexResult < ArrayRef > {
172172 let row_count = args. row_count ;
173173 let num_pairs = options. num_when_then_pairs as usize ;
174174
@@ -222,7 +222,7 @@ impl VTable for CaseWhen {
222222 result = zip ( then_value. as_ref ( ) , result. as_ref ( ) , & mask) ?;
223223 }
224224
225- result. execute :: < ExecutionResult > ( args. ctx )
225+ result. execute :: < ArrayRef > ( args. ctx )
226226 }
227227
228228 fn is_null_sensitive ( & self , _options : & Self :: Options ) -> bool {
@@ -236,7 +236,7 @@ impl VTable for CaseWhen {
236236}
237237
238238/// Efficient implementation for binary CASE WHEN (single when/then pair)
239- fn execute_binary_case_when ( _has_else : bool , args : ExecutionArgs ) -> VortexResult < ExecutionResult > {
239+ fn execute_binary_case_when ( _has_else : bool , args : ExecutionArgs ) -> VortexResult < ArrayRef > {
240240 let row_count = args. row_count ;
241241
242242 // Extract inputs based on arity: [condition, then_value] or [condition, then_value, else_value]
@@ -265,20 +265,20 @@ fn execute_binary_case_when(_has_else: bool, args: ExecutionArgs) -> VortexResul
265265
266266 // Short-circuit: all true -> just return THEN value
267267 if mask. all_true ( ) {
268- return then_value. execute :: < ExecutionResult > ( args. ctx ) ;
268+ return then_value. execute :: < ArrayRef > ( args. ctx ) ;
269269 }
270270
271271 // Short-circuit: all false -> return ELSE value or NULL
272272 if mask. all_false ( ) {
273273 return match else_value {
274- Some ( else_value) => else_value. execute :: < ExecutionResult > ( args. ctx ) ,
274+ Some ( else_value) => else_value. execute :: < ArrayRef > ( args. ctx ) ,
275275 None => {
276276 // Create NULL constant of appropriate type
277277 let then_dtype = then_value. dtype ( ) . as_nullable ( ) ;
278- Ok ( ExecutionResult :: constant (
278+ Ok ( ConstantArray :: new (
279279 Scalar :: null ( then_dtype) ,
280280 row_count,
281- ) )
281+ ) . into_array ( ) )
282282 }
283283 } ;
284284 }
@@ -292,7 +292,7 @@ fn execute_binary_case_when(_has_else: bool, args: ExecutionArgs) -> VortexResul
292292 // Use zip to select: where mask is true, take then_value; else take else_value
293293 let result = zip ( then_value. as_ref ( ) , else_value. as_ref ( ) , & mask) ?;
294294
295- result. execute :: < ExecutionResult > ( args. ctx )
295+ result. execute :: < ArrayRef > ( args. ctx )
296296}
297297
298298/// Creates an N-ary CASE WHEN expression from a flat list of children.
0 commit comments