|
17 | 17 |
|
18 | 18 | use crate::scalar::ScalarValue;
|
19 | 19 | use arrow::array::ArrayRef;
|
| 20 | +use arrow::compute::{total_cmp_32, total_cmp_64}; |
20 | 21 | use std::cmp::Ordering;
|
21 | 22 |
|
22 | 23 | /// Generic code to help implement generic operations on arrays.
|
@@ -195,8 +196,12 @@ pub fn cmp_same_types(
|
195 | 196 |
|
196 | 197 | let o = match (l, r) {
|
197 | 198 | (ScalarValue::Boolean(Some(l)), ScalarValue::Boolean(Some(r))) => l.cmp(r),
|
198 |
| - (ScalarValue::Float32(Some(l)), ScalarValue::Float32(Some(r))) => l.total_cmp(r), |
199 |
| - (ScalarValue::Float64(Some(l)), ScalarValue::Float64(Some(r))) => l.total_cmp(r), |
| 199 | + (ScalarValue::Float32(Some(l)), ScalarValue::Float32(Some(r))) => { |
| 200 | + total_cmp_32(*l, *r) |
| 201 | + } |
| 202 | + (ScalarValue::Float64(Some(l)), ScalarValue::Float64(Some(r))) => { |
| 203 | + total_cmp_64(*l, *r) |
| 204 | + } |
200 | 205 | (ScalarValue::Int8(Some(l)), ScalarValue::Int8(Some(r))) => l.cmp(r),
|
201 | 206 | (ScalarValue::Int16(Some(l)), ScalarValue::Int16(Some(r))) => l.cmp(r),
|
202 | 207 | (ScalarValue::Int32(Some(l)), ScalarValue::Int32(Some(r))) => l.cmp(r),
|
@@ -283,12 +288,12 @@ pub fn cmp_array_row_same_types(
|
283 | 288 | ($l: expr, Float32Array, $($rest: tt)*) => {{
|
284 | 289 | let l = $l.as_any().downcast_ref::<Float32Array>().unwrap();
|
285 | 290 | let r = r.as_any().downcast_ref::<Float32Array>().unwrap();
|
286 |
| - return l.value(l_row).total_cmp(&r.value(r_row)); |
| 291 | + return arrow::compute::total_cmp_32(l.value(l_row), r.value(r_row)); |
287 | 292 | }};
|
288 | 293 | ($l: expr, Float64Array, $($rest: tt)*) => {{
|
289 | 294 | let l = $l.as_any().downcast_ref::<Float64Array>().unwrap();
|
290 | 295 | let r = r.as_any().downcast_ref::<Float64Array>().unwrap();
|
291 |
| - return l.value(l_row).total_cmp(&r.value(r_row)); |
| 296 | + return arrow::compute::total_cmp_64(l.value(l_row), r.value(r_row)); |
292 | 297 | }};
|
293 | 298 | ($l: expr, $arr: ty, $($rest: tt)*) => {{
|
294 | 299 | let l = $l.as_any().downcast_ref::<$arr>().unwrap();
|
|
0 commit comments