MCPcopy Create free account
hub / github.com/apache/arrow-rs / like_op

Function like_op

arrow-string/src/like.rs:218–296  ·  view source on GitHub ↗
(op: Op, lhs: &dyn Datum, rhs: &dyn Datum)

Source from the content-addressed store, hash-verified

216}
217
218fn like_op(op: Op, lhs: &dyn Datum, rhs: &dyn Datum) -> Result<BooleanArray, ArrowError> {
219 use arrow_schema::DataType::*;
220 let (l, l_s) = lhs.get();
221 let (r, r_s) = rhs.get();
222
223 if l.len() != r.len() && !l_s && !r_s {
224 return Err(ArrowError::InvalidArgumentError(format!(
225 "Cannot compare arrays of different lengths, got {} vs {}",
226 l.len(),
227 r.len()
228 )));
229 }
230
231 let l_v = l.as_any_dictionary_opt();
232 let l = l_v.map(|x| x.values().as_ref()).unwrap_or(l);
233
234 let r_v = r.as_any_dictionary_opt();
235 let r = r_v.map(|x| x.values().as_ref()).unwrap_or(r);
236
237 match (l.data_type(), r.data_type()) {
238 (Utf8, Utf8) => string_apply::<&GenericStringArray<i32>>(
239 op,
240 l.as_string(),
241 l_s,
242 l_v,
243 r.as_string(),
244 r_s,
245 r_v,
246 ),
247 (LargeUtf8, LargeUtf8) => string_apply::<&GenericStringArray<i64>>(
248 op,
249 l.as_string(),
250 l_s,
251 l_v,
252 r.as_string(),
253 r_s,
254 r_v,
255 ),
256 (Utf8View, Utf8View) => string_apply::<&StringViewArray>(
257 op,
258 l.as_string_view(),
259 l_s,
260 l_v,
261 r.as_string_view(),
262 r_s,
263 r_v,
264 ),
265 (Binary, Binary) => binary_apply::<&GenericBinaryArray<i32>>(
266 op.try_into()?,
267 l.as_binary(),
268 l_s,
269 l_v,
270 r.as_binary(),
271 r_s,
272 r_v,
273 ),
274 (LargeBinary, LargeBinary) => binary_apply::<&GenericBinaryArray<i64>>(
275 op.try_into()?,

Callers 8

likeFunction · 0.85
ilikeFunction · 0.85
nlikeFunction · 0.85
nilikeFunction · 0.85
starts_withFunction · 0.85
ends_withFunction · 0.85
containsFunction · 0.85
eq_ignore_ascii_caseFunction · 0.85

Calls 10

as_any_dictionary_optMethod · 0.80
as_string_viewMethod · 0.80
as_binaryMethod · 0.80
as_binary_viewMethod · 0.80
getMethod · 0.45
lenMethod · 0.45
as_refMethod · 0.45
valuesMethod · 0.45
data_typeMethod · 0.45
as_stringMethod · 0.45

Tested by

no test coverage detected