Path: blob/main/crates/polars-compute/src/comparisons/binary.rs
6939 views
use arrow::array::{BinaryArray, FixedSizeBinaryArray};1use arrow::bitmap::Bitmap;2use arrow::types::Offset;3use polars_utils::total_ord::{TotalEq, TotalOrd};45use super::{TotalEqKernel, TotalOrdKernel};67impl<O: Offset> TotalEqKernel for BinaryArray<O> {8type Scalar = [u8];910fn tot_eq_kernel(&self, other: &Self) -> Bitmap {11assert!(self.len() == other.len());12self.values_iter()13.zip(other.values_iter())14.map(|(l, r)| l.tot_eq(&r))15.collect()16}1718fn tot_ne_kernel(&self, other: &Self) -> Bitmap {19assert!(self.len() == other.len());20self.values_iter()21.zip(other.values_iter())22.map(|(l, r)| l.tot_ne(&r))23.collect()24}2526fn tot_eq_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {27self.values_iter().map(|l| l.tot_eq(&other)).collect()28}2930fn tot_ne_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {31self.values_iter().map(|l| l.tot_ne(&other)).collect()32}33}3435impl<O: Offset> TotalOrdKernel for BinaryArray<O> {36type Scalar = [u8];3738fn tot_lt_kernel(&self, other: &Self) -> Bitmap {39assert!(self.len() == other.len());40self.values_iter()41.zip(other.values_iter())42.map(|(l, r)| l.tot_lt(&r))43.collect()44}4546fn tot_le_kernel(&self, other: &Self) -> Bitmap {47assert!(self.len() == other.len());48self.values_iter()49.zip(other.values_iter())50.map(|(l, r)| l.tot_le(&r))51.collect()52}5354fn tot_lt_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {55self.values_iter().map(|l| l.tot_lt(&other)).collect()56}5758fn tot_le_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {59self.values_iter().map(|l| l.tot_le(&other)).collect()60}6162fn tot_gt_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {63self.values_iter().map(|l| l.tot_gt(&other)).collect()64}6566fn tot_ge_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {67self.values_iter().map(|l| l.tot_ge(&other)).collect()68}69}7071impl TotalEqKernel for FixedSizeBinaryArray {72type Scalar = [u8];7374fn tot_eq_kernel(&self, other: &Self) -> Bitmap {75assert!(self.len() == other.len());7677if self.size() != other.size() {78return Bitmap::new_zeroed(self.len());79}8081(0..self.len())82.map(|i| self.value(i) == other.value(i))83.collect()84}8586fn tot_ne_kernel(&self, other: &Self) -> Bitmap {87assert!(self.len() == other.len());8889if self.size() != other.size() {90return Bitmap::new_with_value(true, self.len());91}9293(0..self.len())94.map(|i| self.value(i) != other.value(i))95.collect()96}9798fn tot_eq_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {99if self.size() != other.len() {100return Bitmap::new_zeroed(self.len());101}102103(0..self.len()).map(|i| self.value(i) == other).collect()104}105106fn tot_ne_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {107if self.size() != other.len() {108return Bitmap::new_with_value(true, self.len());109}110111(0..self.len()).map(|i| self.value(i) != other).collect()112}113}114115116