Skip to main content

Routine

Trait Routine 

Source
pub trait Routine<C: Context>: Send + Sync {
    // Required methods
    fn info(&self) -> &RoutineInfo;
    fn return_type(&self, input_types: &[Type]) -> Type;
    fn execute(
        &self,
        ctx: &mut C,
        args: &Columns,
    ) -> Result<Columns, RoutineError>;

    // Provided methods
    fn accepted_types(&self) -> InputTypes { ... }
    fn propagates_options(&self) -> bool { ... }
    fn call(&self, ctx: &mut C, args: &Columns) -> Result<Columns, RoutineError> { ... }
}
Expand description

The generic, function-and-procedure-agnostic contract. Implementors pick a context type (FunctionContext or ProcedureContext); that choice IS the function-vs-procedure declaration and statically determines whether the routine can access the transaction.

Function-only concerns (kinds, accumulator) live on the Function sub-trait. Procedures get a marker sub-trait Procedure with a blanket impl, so existing procedure impls require no extra boilerplate.

Required Methods§

Source

fn info(&self) -> &RoutineInfo

Source

fn return_type(&self, input_types: &[Type]) -> Type

Source

fn execute(&self, ctx: &mut C, args: &Columns) -> Result<Columns, RoutineError>

Execute the routine.

Takes ctx by &mut so procedure routines can reborrow ctx.tx as &mut Transaction. Function routines don’t mutate the context - the &mut is a no-op for them, since the env fields are shared references whose mutability isn’t projected through.

Provided Methods§

Source

fn accepted_types(&self) -> InputTypes

Source

fn propagates_options(&self) -> bool

Source

fn call(&self, ctx: &mut C, args: &Columns) -> Result<Columns, RoutineError>

Calls the routine, automatically propagating Option columns if propagates_options() returns true. The option-propagation behaviour is identical for both contexts, hence the shared default.

Implementors§

Source§

impl<'a> Routine<FunctionContext<'a>> for BlobB58

Source§

impl<'a> Routine<FunctionContext<'a>> for BlobB64

Source§

impl<'a> Routine<FunctionContext<'a>> for BlobB64url

Source§

impl<'a> Routine<FunctionContext<'a>> for BlobHex

Source§

impl<'a> Routine<FunctionContext<'a>> for BlobUtf8

Source§

impl<'a> Routine<FunctionContext<'a>> for Now

Source§

impl<'a> Routine<FunctionContext<'a>> for DateAdd

Source§

impl<'a> Routine<FunctionContext<'a>> for DateAge

Source§

impl<'a> Routine<FunctionContext<'a>> for DateDay

Source§

impl<'a> Routine<FunctionContext<'a>> for DateDayOfWeek

Source§

impl<'a> Routine<FunctionContext<'a>> for DateDayOfYear

Source§

impl<'a> Routine<FunctionContext<'a>> for DateDaysInMonth

Source§

impl<'a> Routine<FunctionContext<'a>> for DateDiff

Source§

impl<'a> Routine<FunctionContext<'a>> for DateEndOfMonth

Source§

impl<'a> Routine<FunctionContext<'a>> for DateFormat

Source§

impl<'a> Routine<FunctionContext<'a>> for DateIsLeapYear

Source§

impl<'a> Routine<FunctionContext<'a>> for DateMonth

Source§

impl<'a> Routine<FunctionContext<'a>> for DateNew

Source§

impl<'a> Routine<FunctionContext<'a>> for DateNow

Source§

impl<'a> Routine<FunctionContext<'a>> for DateQuarter

Source§

impl<'a> Routine<FunctionContext<'a>> for DateStartOfMonth

Source§

impl<'a> Routine<FunctionContext<'a>> for DateStartOfYear

Source§

impl<'a> Routine<FunctionContext<'a>> for DateSubtract

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTrunc

Source§

impl<'a> Routine<FunctionContext<'a>> for DateWeek

Source§

impl<'a> Routine<FunctionContext<'a>> for DateYear

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeAdd

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeAge

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeDate

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeDay

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeDayOfWeek

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeDayOfYear

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeDiff

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeEpoch

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeEpochMillis

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeFormat

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeFromEpoch

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeFromEpochMillis

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeHour

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeMinute

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeMonth

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeNanosecond

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeNew

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeNow

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeQuarter

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeSecond

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeSubtract

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeTime

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeTrunc

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeWeek

Source§

impl<'a> Routine<FunctionContext<'a>> for DateTimeYear

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationAdd

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationDays

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationFormat

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationGetDays

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationGetMonths

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationGetNanos

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationHours

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationMillis

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationMinutes

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationMonths

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationNegate

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationScale

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationSeconds

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationSubtract

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationTrunc

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationWeeks

Source§

impl<'a> Routine<FunctionContext<'a>> for DurationYears

Source§

impl<'a> Routine<FunctionContext<'a>> for FlowNodeToJson

Source§

impl<'a> Routine<FunctionContext<'a>> for Id

Source§

impl<'a> Routine<FunctionContext<'a>> for IsAnonymous

Source§

impl<'a> Routine<FunctionContext<'a>> for IsNone

Source§

impl<'a> Routine<FunctionContext<'a>> for IsRoot

Source§

impl<'a> Routine<FunctionContext<'a>> for IsSome

Source§

impl<'a> Routine<FunctionContext<'a>> for IsType

Source§

impl<'a> Routine<FunctionContext<'a>> for JsonArray

Source§

impl<'a> Routine<FunctionContext<'a>> for JsonObject

Source§

impl<'a> Routine<FunctionContext<'a>> for JsonPretty

Source§

impl<'a> Routine<FunctionContext<'a>> for JsonSerialize

Source§

impl<'a> Routine<FunctionContext<'a>> for Abs

Source§

impl<'a> Routine<FunctionContext<'a>> for Acos

Source§

impl<'a> Routine<FunctionContext<'a>> for Asin

Source§

impl<'a> Routine<FunctionContext<'a>> for Atan2

Source§

impl<'a> Routine<FunctionContext<'a>> for Atan

Source§

impl<'a> Routine<FunctionContext<'a>> for Avg

Source§

impl<'a> Routine<FunctionContext<'a>> for Ceil

Source§

impl<'a> Routine<FunctionContext<'a>> for Clamp

Source§

impl<'a> Routine<FunctionContext<'a>> for Cos

Source§

impl<'a> Routine<FunctionContext<'a>> for Count

Source§

impl<'a> Routine<FunctionContext<'a>> for Euler

Source§

impl<'a> Routine<FunctionContext<'a>> for Exp

Source§

impl<'a> Routine<FunctionContext<'a>> for Floor

Source§

impl<'a> Routine<FunctionContext<'a>> for Gcd

Source§

impl<'a> Routine<FunctionContext<'a>> for Lcm

Source§

impl<'a> Routine<FunctionContext<'a>> for Log2

Source§

impl<'a> Routine<FunctionContext<'a>> for Log10

Source§

impl<'a> Routine<FunctionContext<'a>> for Log

Source§

impl<'a> Routine<FunctionContext<'a>> for Max

Source§

impl<'a> Routine<FunctionContext<'a>> for Min

Source§

impl<'a> Routine<FunctionContext<'a>> for Modulo

Source§

impl<'a> Routine<FunctionContext<'a>> for Pi

Source§

impl<'a> Routine<FunctionContext<'a>> for Power

Source§

impl<'a> Routine<FunctionContext<'a>> for Round

Source§

impl<'a> Routine<FunctionContext<'a>> for Sign

Source§

impl<'a> Routine<FunctionContext<'a>> for Sin

Source§

impl<'a> Routine<FunctionContext<'a>> for Sqrt

Source§

impl<'a> Routine<FunctionContext<'a>> for Sum

Source§

impl<'a> Routine<FunctionContext<'a>> for Tan

Source§

impl<'a> Routine<FunctionContext<'a>> for Truncate

Source§

impl<'a> Routine<FunctionContext<'a>> for Type

Source§

impl<'a> Routine<FunctionContext<'a>> for RqlFingerprint

Source§

impl<'a> Routine<FunctionContext<'a>> for GenerateSeries

Source§

impl<'a> Routine<FunctionContext<'a>> for Series

Source§

impl<'a> Routine<FunctionContext<'a>> for TextAscii

Source§

impl<'a> Routine<FunctionContext<'a>> for TextChar

Source§

impl<'a> Routine<FunctionContext<'a>> for TextConcat

Source§

impl<'a> Routine<FunctionContext<'a>> for TextContains

Source§

impl<'a> Routine<FunctionContext<'a>> for TextCount

Source§

impl<'a> Routine<FunctionContext<'a>> for TextEndsWith

Source§

impl<'a> Routine<FunctionContext<'a>> for FormatBytes

Source§

impl<'a> Routine<FunctionContext<'a>> for FormatBytesSi

Source§

impl<'a> Routine<FunctionContext<'a>> for TextIndexOf

Source§

impl<'a> Routine<FunctionContext<'a>> for TextLength

Source§

impl<'a> Routine<FunctionContext<'a>> for TextLower

Source§

impl<'a> Routine<FunctionContext<'a>> for TextPadLeft

Source§

impl<'a> Routine<FunctionContext<'a>> for TextPadRight

Source§

impl<'a> Routine<FunctionContext<'a>> for TextRepeat

Source§

impl<'a> Routine<FunctionContext<'a>> for TextReplace

Source§

impl<'a> Routine<FunctionContext<'a>> for TextReverse

Source§

impl<'a> Routine<FunctionContext<'a>> for TextStartsWith

Source§

impl<'a> Routine<FunctionContext<'a>> for TextSubstring

Source§

impl<'a> Routine<FunctionContext<'a>> for TextTrim

Source§

impl<'a> Routine<FunctionContext<'a>> for TextTrimEnd

Source§

impl<'a> Routine<FunctionContext<'a>> for TextTrimStart

Source§

impl<'a> Routine<FunctionContext<'a>> for TextUpper

Source§

impl<'a> Routine<FunctionContext<'a>> for TimeAdd

Source§

impl<'a> Routine<FunctionContext<'a>> for TimeAge

Source§

impl<'a> Routine<FunctionContext<'a>> for TimeDiff

Source§

impl<'a> Routine<FunctionContext<'a>> for TimeFormat

Source§

impl<'a> Routine<FunctionContext<'a>> for TimeHour

Source§

impl<'a> Routine<FunctionContext<'a>> for TimeMinute

Source§

impl<'a> Routine<FunctionContext<'a>> for TimeNanosecond

Source§

impl<'a> Routine<FunctionContext<'a>> for TimeNew

Source§

impl<'a> Routine<FunctionContext<'a>> for TimeNow

Source§

impl<'a> Routine<FunctionContext<'a>> for TimeSecond

Source§

impl<'a> Routine<FunctionContext<'a>> for TimeSubtract

Source§

impl<'a> Routine<FunctionContext<'a>> for TimeTrunc

Source§

impl<'a> Routine<FunctionContext<'a>> for UuidV4

Source§

impl<'a> Routine<FunctionContext<'a>> for UuidV7

Source§

impl<'a, 'tx> Routine<ProcedureContext<'a, 'tx>> for ClockAdvanceProcedure

Source§

impl<'a, 'tx> Routine<ProcedureContext<'a, 'tx>> for ClockSetProcedure

Source§

impl<'a, 'tx> Routine<ProcedureContext<'a, 'tx>> for IdentityInject

Source§

impl<'a, 'tx> Routine<ProcedureContext<'a, 'tx>> for SetConfigProcedure

Source§

impl<'a, 'tx> Routine<ProcedureContext<'a, 'tx>> for InspectSubscription

Source§

impl<'a, 'tx> Routine<ProcedureContext<'a, 'tx>> for TestingChanged

Source§

impl<'a, 'tx> Routine<ProcedureContext<'a, 'tx>> for TestingEventsDispatched

Source§

impl<'a, 'tx> Routine<ProcedureContext<'a, 'tx>> for TestingHandlersInvoked