Skip to content

Commit

Permalink
improve utf8 broadcasting
Browse files Browse the repository at this point in the history
  • Loading branch information
ritchie46 committed Nov 17, 2021
1 parent 8456594 commit de82bb1
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
36 changes: 36 additions & 0 deletions polars/polars-core/src/chunked_array/comparison.rs
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,12 @@ impl ChunkCompare<&Utf8Chunked> for Utf8Chunked {
} else {
BooleanChunked::full("", false, self.len())
}
} else if self.len() == 1 {
if let Some(value) = self.get(0) {
rhs.eq(value)
} else {
BooleanChunked::full("", false, self.len())
}
}
// same length
else if self.chunk_id().zip(rhs.chunk_id()).all(|(l, r)| l == r) {
Expand All @@ -476,6 +482,12 @@ impl ChunkCompare<&Utf8Chunked> for Utf8Chunked {
} else {
BooleanChunked::full("", false, self.len())
}
} else if self.len() == 1 {
if let Some(value) = self.get(0) {
rhs.neq(value)
} else {
BooleanChunked::full("", false, self.len())
}
}
// same length
else if self.chunk_id().zip(rhs.chunk_id()).all(|(l, r)| l == r) {
Expand All @@ -493,6 +505,12 @@ impl ChunkCompare<&Utf8Chunked> for Utf8Chunked {
} else {
BooleanChunked::full("", false, self.len())
}
} else if self.len() == 1 {
if let Some(value) = self.get(0) {
rhs.lt(value)
} else {
BooleanChunked::full("", false, self.len())
}
}
// same length
else if self.chunk_id().zip(rhs.chunk_id()).all(|(l, r)| l == r) {
Expand All @@ -510,6 +528,12 @@ impl ChunkCompare<&Utf8Chunked> for Utf8Chunked {
} else {
BooleanChunked::full("", false, self.len())
}
} else if self.len() == 1 {
if let Some(value) = self.get(0) {
rhs.lt_eq(value)
} else {
BooleanChunked::full("", false, self.len())
}
}
// same length
else if self.chunk_id().zip(rhs.chunk_id()).all(|(l, r)| l == r) {
Expand All @@ -527,6 +551,12 @@ impl ChunkCompare<&Utf8Chunked> for Utf8Chunked {
} else {
BooleanChunked::full("", false, self.len())
}
} else if self.len() == 1 {
if let Some(value) = self.get(0) {
rhs.gt(value)
} else {
BooleanChunked::full("", false, self.len())
}
}
// same length
else if self.chunk_id().zip(rhs.chunk_id()).all(|(l, r)| l == r) {
Expand All @@ -544,6 +574,12 @@ impl ChunkCompare<&Utf8Chunked> for Utf8Chunked {
} else {
BooleanChunked::full("", false, self.len())
}
} else if self.len() == 1 {
if let Some(value) = self.get(0) {
rhs.gt_eq(value)
} else {
BooleanChunked::full("", false, self.len())
}
}
// same length
else if self.chunk_id().zip(rhs.chunk_id()).all(|(l, r)| l == r) {
Expand Down
1 change: 0 additions & 1 deletion polars/polars-core/src/utils/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -885,7 +885,6 @@ pub(crate) unsafe fn copy_from_slice_unchecked<T>(src: &[T], dst: &mut [T]) {
#[cfg(test)]
mod test {
use super::*;
use crate::prelude::*;

#[test]
fn test_align_chunks() {
Expand Down

0 comments on commit de82bb1

Please sign in to comment.