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
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright the Vortex contributors
//! Experimental support for strict scalar functions computed one row at a time.
//!
//! This module is experimental and has no compatibility guarantees. External users must enable
//! the `unstable_row_fns` Cargo feature before importing it.
//!
//! A [`RowFn`] describes the typed operation while the framework owns columnar concerns such as
//! decoding, constant handling, null propagation, allocation, and validity. Its
//! [`RowFn::dispatch`] implementation uses a [`RowVisitor`] to select an [`ElementTuple`] and
//! either an [`OutputElement`] or [`OutputSink`] for each supported dtype combination.
//!
//! Unlike a general strict function, a [`RowFn`] cannot produce null from valid inputs.
//!
//! A _partially valid_ batch contains both valid and invalid rows. _Skip-invalid_ runs the kernel
//! only for valid rows without changing row positions.
//!
//! Prepared visits move work derived from constant operands outside the hot loop. Deferred visits
//! reduce compact failure evidence without constructing errors in that loop.
pub use RowFn;
pub use ElementTuple;
pub use FailureEvidence;
pub use IndexedElementTuple;
pub use InitializedElement;
pub use InputElement;
pub use OutputElement;
pub use OutputSink;
pub use SinkResult;
pub use UninitElementSink;
pub use ViewLen;
pub use RowVisitor;
pub use execute_rows;
pub use row_fn_return_dtype;