zhuqi-lucas commented on PR #15348:
URL: https://github.com/apache/datafusion/pull/15348#issuecomment-2746127139
> Thank you @zhuqi-lucas -- this looks pretty sweet. I think we need to sort
out nulls and safety comment and this will be good to go
Thank you @alamb for review, good suggestion, and i checked the nullable
check is checked in the parent wrapper call, for example:
```rust
impl<T: CursorValues> CursorValues for ArrayValues<T> {
fn len(&self) -> usize {
self.values.len()
}
fn eq(l: &Self, l_idx: usize, r: &Self, r_idx: usize) -> bool {
match (l.is_null(l_idx), r.is_null(r_idx)) {
(true, true) => true,
(false, false) => T::eq(&l.values, l_idx, &r.values, r_idx),
_ => false,
}
}
fn eq_to_previous(cursor: &Self, idx: usize) -> bool {
assert!(idx > 0);
match (cursor.is_null(idx), cursor.is_null(idx - 1)) {
(true, true) => true,
(false, false) => T::eq(&cursor.values, idx, &cursor.values, idx
- 1),
_ => false,
}
}
fn compare(l: &Self, l_idx: usize, r: &Self, r_idx: usize) -> Ordering {
match (l.is_null(l_idx), r.is_null(r_idx)) {
(true, true) => Ordering::Equal,
(true, false) => match l.options.nulls_first {
true => Ordering::Less,
false => Ordering::Greater,
},
(false, true) => match l.options.nulls_first {
true => Ordering::Greater,
false => Ordering::Less,
},
(false, false) => match l.options.descending {
true => T::compare(&r.values, r_idx, &l.values, l_idx),
false => T::compare(&l.values, l_idx, &r.values, r_idx),
},
}
}
}
```
I try to address comments and suggestions in latest PR. And for longer
string compare regression for StringView, i still need time to investigate
more, i am willing to create a new ticket to investigate and dig into. Thanks.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]