1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
//! Compute kernels on top of Vortex Arrays.
//!
//! We aim to provide a basic set of compute kernels that can be used to efficiently index, slice,
//! and filter Vortex Arrays in their encoded forms.
//!
//! Every [array variant][crate::ArrayTrait] has the ability to implement their own efficient
//! implementations of these operators, else we will decode, and perform the equivalent operator
//! from Arrow.
pub use binary_numeric::*;
pub use boolean::{
and, and_kleene, binary_boolean, or, or_kleene, BinaryBooleanFn, BinaryOperator,
};
pub use cast::{try_cast, CastFn};
pub use compare::{compare, scalar_cmp, CompareFn, Operator};
pub use fill_forward::{fill_forward, FillForwardFn};
pub use fill_null::{fill_null, FillNullFn};
pub use filter::{filter, FilterFn, FilterIter, FilterMask};
pub use invert::{invert, InvertFn};
pub use like::{like, LikeFn, LikeOptions};
pub use scalar_at::{scalar_at, ScalarAtFn};
pub use search_sorted::*;
pub use slice::{slice, SliceFn};
pub use take::{take, TakeFn};
use crate::ArrayData;
mod binary_numeric;
mod boolean;
mod cast;
mod compare;
mod fill_forward;
mod fill_null;
mod filter;
mod invert;
mod like;
mod scalar_at;
mod search_sorted;
mod slice;
mod take;
/// VTable for dispatching compute functions to Vortex encodings.
pub trait ComputeVTable {
/// Implementation of binary boolean logic operations.
///
/// See: [BinaryBooleanFn].
fn binary_boolean_fn(&self) -> Option<&dyn BinaryBooleanFn<ArrayData>> {
None
}
/// Implementation of binary numeric operations.
///
/// See: [BinaryNumericFn].
fn binary_numeric_fn(&self) -> Option<&dyn BinaryNumericFn<ArrayData>> {
None
}
/// Implemented for arrays that can be casted to different types.
/// Implemented for arrays that can be casted to different types.
///
/// See: [CastFn].
fn cast_fn(&self) -> Option<&dyn CastFn<ArrayData>> {
None
}
/// Binary operator implementation for arrays against other arrays.
///
///See: [CompareFn].
fn compare_fn(&self) -> Option<&dyn CompareFn<ArrayData>> {
None
}
/// Array function that returns new arrays a non-null value is repeated across runs of nulls.
///
/// See: [FillForwardFn].
fn fill_forward_fn(&self) -> Option<&dyn FillForwardFn<ArrayData>> {
None
}
/// Fill null values with given desired value. Resulting array is NonNullable
///
/// See: [FillNullFn]
fn fill_null_fn(&self) -> Option<&dyn FillNullFn<ArrayData>> {
None
}
/// Filter an array with a given mask.
///
/// See: [FilterFn].
fn filter_fn(&self) -> Option<&dyn FilterFn<ArrayData>> {
None
}
/// Invert a boolean array. Converts true -> false, false -> true, null -> null.
///
/// See [InvertFn]
fn invert_fn(&self) -> Option<&dyn InvertFn<ArrayData>> {
None
}
/// Perform a SQL LIKE operation on two arrays.
///
/// See: [LikeFn].
fn like_fn(&self) -> Option<&dyn LikeFn<ArrayData>> {
None
}
/// Single item indexing on Vortex arrays.
///
/// See: [ScalarAtFn].
fn scalar_at_fn(&self) -> Option<&dyn ScalarAtFn<ArrayData>> {
None
}
/// Perform a search over an ordered array.
///
/// See: [SearchSortedFn].
fn search_sorted_fn(&self) -> Option<&dyn SearchSortedFn<ArrayData>> {
None
}
/// Perform a search over an ordered array.
///
/// See: [SearchSortedUsizeFn].
fn search_sorted_usize_fn(&self) -> Option<&dyn SearchSortedUsizeFn<ArrayData>> {
None
}
/// Perform zero-copy slicing of an array.
///
/// See: [SliceFn].
fn slice_fn(&self) -> Option<&dyn SliceFn<ArrayData>> {
None
}
/// Take a set of indices from an array. This often forces allocations and decoding of
/// the receiver.
///
/// See: [TakeFn].
fn take_fn(&self) -> Option<&dyn TakeFn<ArrayData>> {
None
}
}