Skip to main content

ScalarFunction

Trait ScalarFunction 

Source
pub trait ScalarFunction: Send + Sync {
    // Required methods
    fn invoke(&self, args: &[SqliteValue]) -> Result<SqliteValue>;
    fn num_args(&self) -> i32;
    fn name(&self) -> &str;

    // Provided methods
    fn invoke_with_arg_subtypes(
        &self,
        args: &[SqliteValue],
        _arg_subtypes: &[u32],
    ) -> Result<SqliteValue> { ... }
    fn consumes_argument_collation(&self) -> bool { ... }
    fn invoke_with_collation(
        &self,
        args: &[SqliteValue],
        _collation: Option<&dyn CollationFunction>,
    ) -> Result<SqliteValue> { ... }
    fn result_subtype(&self) -> Option<u32> { ... }
    fn is_deterministic(&self) -> bool { ... }
    fn min_args(&self) -> i32 { ... }
    fn max_args(&self) -> Option<i32> { ... }
    fn arity(&self) -> FunctionArity { ... }
}

Required Methods§

Source

fn invoke(&self, args: &[SqliteValue]) -> Result<SqliteValue>

Execute this function on the given arguments.

Source

fn num_args(&self) -> i32

The number of arguments this function accepts.

-1 means variadic (any number of arguments).

Source

fn name(&self) -> &str

The function name, used in error messages and EXPLAIN output.

Provided Methods§

Source

fn invoke_with_arg_subtypes( &self, args: &[SqliteValue], _arg_subtypes: &[u32], ) -> Result<SqliteValue>

Execute this function with knowledge of each argument’s value subtype (e.g. JSON_SUBTYPE for values returned by JSON functions).

The default ignores subtypes and delegates to Self::invoke. JSON constructors (json_object, json_array, the JSON mutators) override this so a JSON-subtyped TEXT argument is embedded as a JSON value instead of being quoted as a plain string — matching C SQLite, which keys this behaviour off sqlite3_value_subtype().

Source

fn consumes_argument_collation(&self) -> bool

Whether this function consumes the SQL collation selected from its arguments (for example built-in nullif, scalar min, and scalar max). Custom functions default to collation-opaque semantics.

Source

fn invoke_with_collation( &self, args: &[SqliteValue], _collation: Option<&dyn CollationFunction>, ) -> Result<SqliteValue>

Invoke with the selected SQL collation, when this implementation advertises Self::consumes_argument_collation.

The default deliberately ignores the collation so a custom function that happens to replace a collation-consuming built-in keeps its own semantics.

Source

fn result_subtype(&self) -> Option<u32>

The subtype this function tags onto its result value, if any.

Returns JSON_SUBTYPE for functions whose result is JSON text so the engine can propagate the tag to the destination register. Defaults to None (no subtype).

Source

fn is_deterministic(&self) -> bool

Whether this function is deterministic (same inputs → same output).

Deterministic functions enable constant folding and other query planner optimizations. Defaults to true.

Source

fn min_args(&self) -> i32

Minimum accepted argument count for a variadic function.

The default is zero. Fixed-arity functions are matched directly from Self::num_args and do not consult this method.

Source

fn max_args(&self) -> Option<i32>

Maximum accepted argument count for a variadic function.

The default is unbounded. Fixed-arity functions are matched directly from Self::num_args and do not consult this method.

Source

fn arity(&self) -> FunctionArity

Return the complete SQL-visible arity contract in one metadata call.

Registries use this method exactly once before publishing a function, so a reentrant or stateful Self::num_args implementation cannot produce a key and bounds from different observations. Implementations with dynamically-computed metadata may override this method directly.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl ScalarFunction for AbsFunc

Source§

impl ScalarFunction for AcosFunc

Source§

impl ScalarFunction for AcoshFunc

Source§

impl ScalarFunction for AsinFunc

Source§

impl ScalarFunction for AsinhFunc

Source§

impl ScalarFunction for Atan2Func

Source§

impl ScalarFunction for AtanFunc

Source§

impl ScalarFunction for AtanhFunc

Source§

impl ScalarFunction for CeilFunc

Source§

impl ScalarFunction for ChangesFunc

Source§

impl ScalarFunction for CharFunc

Source§

impl ScalarFunction for CoalesceFunc

Source§

impl ScalarFunction for ConcatFunc

Source§

impl ScalarFunction for ConcatWsFunc

Source§

impl ScalarFunction for CosFunc

Source§

impl ScalarFunction for CoshFunc

Source§

impl ScalarFunction for DateFunc

Source§

impl ScalarFunction for DateTimeFunc

Source§

impl ScalarFunction for DegreesFunc

Source§

impl ScalarFunction for ExpFunc

Source§

impl ScalarFunction for FloorFunc

Source§

impl ScalarFunction for FormatFunc

Source§

impl ScalarFunction for GlobFunc

Source§

impl ScalarFunction for HexFunc

Source§

impl ScalarFunction for IfnullFunc

Source§

impl ScalarFunction for IifFunc

Source§

impl ScalarFunction for InstrFunc

Source§

impl ScalarFunction for JuliandayFunc

Source§

impl ScalarFunction for LastInsertRowidFunc

Source§

impl ScalarFunction for LengthFunc

Source§

impl ScalarFunction for LikeFunc

Source§

impl ScalarFunction for LikelihoodFunc

Source§

impl ScalarFunction for LikelyFunc

Source§

impl ScalarFunction for LnFunc

Source§

impl ScalarFunction for Log2Func

Source§

impl ScalarFunction for Log10Func

Source§

impl ScalarFunction for LogFunc

Source§

impl ScalarFunction for LowerFunc

Source§

impl ScalarFunction for LtrimFunc

Source§

impl ScalarFunction for ModFunc

Source§

impl ScalarFunction for NullifFunc

Source§

impl ScalarFunction for OctetLengthFunc

Source§

impl ScalarFunction for PiFunc

Source§

impl ScalarFunction for PowFunc

Source§

impl ScalarFunction for QuoteFunc

Source§

impl ScalarFunction for RadiansFunc

Source§

impl ScalarFunction for RandomFunc

Source§

impl ScalarFunction for RandomblobFunc

Source§

impl ScalarFunction for ReplaceFunc

Source§

impl ScalarFunction for RoundFunc

Source§

impl ScalarFunction for RtrimFunc

Source§

impl ScalarFunction for ScalarMaxFunc

Source§

impl ScalarFunction for ScalarMinFunc

Source§

impl ScalarFunction for SignFunc

Source§

impl ScalarFunction for SinFunc

Source§

impl ScalarFunction for SinhFunc

Source§

impl ScalarFunction for SoundexFunc

Source§

impl ScalarFunction for SqliteCompileoptionGetFunc

Source§

impl ScalarFunction for SqliteCompileoptionUsedFunc

Source§

impl ScalarFunction for SqliteSourceIdFunc

Source§

impl ScalarFunction for SqliteVersionFunc

Source§

impl ScalarFunction for SqrtFunc

Source§

impl ScalarFunction for StrftimeFunc

Source§

impl ScalarFunction for SubstrFunc

Source§

impl ScalarFunction for SubtypeFunc

Source§

impl ScalarFunction for TanFunc

Source§

impl ScalarFunction for TanhFunc

Source§

impl ScalarFunction for TimeFunc

Source§

impl ScalarFunction for TimediffFunc

Source§

impl ScalarFunction for TotalChangesFunc

Source§

impl ScalarFunction for TrimFunc

Source§

impl ScalarFunction for TruncFunc

Source§

impl ScalarFunction for TypeofFunc

Source§

impl ScalarFunction for UnhexFunc

Source§

impl ScalarFunction for UnicodeFunc

Source§

impl ScalarFunction for UnistrFunc

Source§

impl ScalarFunction for UnistrQuoteFunc

Source§

impl ScalarFunction for UnixepochFunc

Source§

impl ScalarFunction for UnlikelyFunc

Source§

impl ScalarFunction for UpperFunc

Source§

impl ScalarFunction for ZeroblobFunc