@@ -8,14 +8,14 @@ use prost::Message;
88use vortex_compute:: arrow:: IntoArrow ;
99use vortex_compute:: arrow:: IntoVector ;
1010use vortex_dtype:: DType ;
11- use vortex_error:: VortexExpect ;
12- use vortex_error:: VortexResult ;
1311use vortex_error:: vortex_bail;
1412use vortex_error:: vortex_err;
13+ use vortex_error:: VortexExpect ;
14+ use vortex_error:: VortexResult ;
1515use vortex_proto:: expr as pb;
1616use vortex_vector:: Datum ;
17+ use vortex_vector:: VectorOps ;
1718
18- use crate :: ArrayRef ;
1919use crate :: compute;
2020use crate :: compute:: add;
2121use crate :: compute:: and_kleene;
@@ -24,17 +24,18 @@ use crate::compute::div;
2424use crate :: compute:: mul;
2525use crate :: compute:: or_kleene;
2626use crate :: compute:: sub;
27+ use crate :: expr:: expression:: Expression ;
28+ use crate :: expr:: exprs:: literal:: lit;
29+ use crate :: expr:: exprs:: operators:: Operator ;
30+ use crate :: expr:: stats:: Stat ;
2731use crate :: expr:: Arity ;
2832use crate :: expr:: ChildName ;
2933use crate :: expr:: ExecutionArgs ;
3034use crate :: expr:: ExprId ;
3135use crate :: expr:: StatsCatalog ;
3236use crate :: expr:: VTable ;
3337use crate :: expr:: VTableExt ;
34- use crate :: expr:: expression:: Expression ;
35- use crate :: expr:: exprs:: literal:: lit;
36- use crate :: expr:: exprs:: operators:: Operator ;
37- use crate :: expr:: stats:: Stat ;
38+ use crate :: ArrayRef ;
3839
3940pub struct Binary ;
4041
@@ -187,6 +188,11 @@ impl VTable for Binary {
187188 }
188189 } ;
189190
191+ // Arrow computed over scalar datums
192+ if vector. len ( ) == 1 && args. row_count != 1 {
193+ return Ok ( Datum :: Scalar ( vector. scalar_at ( 0 ) ) ) ;
194+ }
195+
190196 Ok ( Datum :: Vector ( vector) )
191197 }
192198
@@ -583,10 +589,10 @@ mod tests {
583589 use super :: lt_eq;
584590 use super :: not_eq;
585591 use super :: or;
586- use crate :: expr:: Expression ;
587592 use crate :: expr:: exprs:: get_item:: col;
588593 use crate :: expr:: exprs:: literal:: lit;
589594 use crate :: expr:: test_harness;
595+ use crate :: expr:: Expression ;
590596
591597 #[ test]
592598 fn and_collect_left_assoc ( ) {
0 commit comments