MCPcopy Create free account
hub / github.com/apache/datafusion / hash_generic_byte_view_array

Function hash_generic_byte_view_array

datafusion/common/src/hash_utils.rs:372–429  ·  view source on GitHub ↗
(
    array: &GenericByteViewArray<T>,
    random_state: &RandomState,
    hashes_buffer: &mut [u64],
    rehash: bool,
)

Source from the content-addressed store, hash-verified

370/// with the new hash using `combine_hashes`
371#[cfg(not(feature = "force_hash_collisions"))]
372fn hash_generic_byte_view_array<T: ByteViewType>(
373 array: &GenericByteViewArray<T>,
374 random_state: &RandomState,
375 hashes_buffer: &mut [u64],
376 rehash: bool,
377) {
378 // instantiate the correct version based on presence of nulls and external buffers
379 match (
380 array.null_count() != 0,
381 !array.data_buffers().is_empty(),
382 rehash,
383 ) {
384 // no nulls or buffers ==> hash the inlined views directly
385 // don't call the inner function as Rust seems better able to inline this simpler code (2-3% faster)
386 (false, false, false) => {
387 for (hash, &view) in hashes_buffer.iter_mut().zip(array.views().iter()) {
388 *hash = view.hash_one(random_state);
389 }
390 }
391 (false, false, true) => {
392 for (hash, &view) in hashes_buffer.iter_mut().zip(array.views().iter()) {
393 let mut hasher = seeded_state(*hash).build_hasher();
394 view.hash_write(&mut hasher);
395 *hash = hasher.finish();
396 }
397 }
398 (false, true, false) => hash_string_view_array_inner::<T, false, true, false>(
399 array,
400 random_state,
401 hashes_buffer,
402 ),
403 (false, true, true) => hash_string_view_array_inner::<T, false, true, true>(
404 array,
405 random_state,
406 hashes_buffer,
407 ),
408 (true, false, false) => hash_string_view_array_inner::<T, true, false, false>(
409 array,
410 random_state,
411 hashes_buffer,
412 ),
413 (true, false, true) => hash_string_view_array_inner::<T, true, false, true>(
414 array,
415 random_state,
416 hashes_buffer,
417 ),
418 (true, true, false) => hash_string_view_array_inner::<T, true, true, false>(
419 array,
420 random_state,
421 hashes_buffer,
422 ),
423 (true, true, true) => hash_string_view_array_inner::<T, true, true, true>(
424 array,
425 random_state,
426 hashes_buffer,
427 ),
428 }
429}

Callers

nothing calls this directly

Calls 7

seeded_stateFunction · 0.85
null_countMethod · 0.80
hash_oneMethod · 0.80
hash_writeMethod · 0.80
is_emptyMethod · 0.45
iterMethod · 0.45
finishMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…