pub struct FuncSign {
pub name: FuncName,
pub inputs_type: Vec<SigDataType>,
pub variadic: bool,
pub ret_type: SigDataType,
pub build: FuncBuilder,
pub type_infer: fn(args: &[DataType]) -> Result<DataType>,
pub deprecated: bool,
}
Expand description
A function signature.
Fields§
§name: FuncName
The name of the function.
inputs_type: Vec<SigDataType>
The argument types.
variadic: bool
Whether the function is variadic.
ret_type: SigDataType
The return type.
build: FuncBuilder
A function to build the expression.
type_infer: fn(args: &[DataType]) -> Result<DataType>
A function to infer the return type from argument types.
deprecated: bool
Whether the function is deprecated and should not be used in the frontend. For backward compatibility, it is still available in the backend.
Implementations§
source§impl FuncSign
impl FuncSign
sourcepub fn match_args(&self, args: &[DataType]) -> bool
pub fn match_args(&self, args: &[DataType]) -> bool
Returns true if the argument types match the function signature.
sourcefn match_args_ret(&self, args: &[DataType], ret: &DataType) -> bool
fn match_args_ret(&self, args: &[DataType], ret: &DataType) -> bool
Returns true if the argument types match the function signature.
sourcefn match_number_of_args(&self, n: usize) -> bool
fn match_number_of_args(&self, n: usize) -> bool
Returns true if the number of arguments matches the function signature.
sourcepub const fn is_table_function(&self) -> bool
pub const fn is_table_function(&self) -> bool
Returns true if the function is a table function.
sourcepub const fn is_aggregate(&self) -> bool
pub const fn is_aggregate(&self) -> bool
Returns true if the function is a aggregate function.
sourcepub const fn is_append_only(&self) -> bool
pub const fn is_append_only(&self) -> bool
Returns true if the aggregate function is append-only.
sourcepub const fn is_retractable(&self) -> bool
pub const fn is_retractable(&self) -> bool
Returns true if the aggregate function has a retractable version.
sourcepub fn build_scalar(
&self,
return_type: DataType,
children: Vec<BoxedExpression>,
) -> Result<BoxedExpression>
pub fn build_scalar( &self, return_type: DataType, children: Vec<BoxedExpression>, ) -> Result<BoxedExpression>
Builds the scalar function.
sourcepub fn build_table(
&self,
return_type: DataType,
chunk_size: usize,
children: Vec<BoxedExpression>,
) -> Result<BoxedTableFunction>
pub fn build_table( &self, return_type: DataType, chunk_size: usize, children: Vec<BoxedExpression>, ) -> Result<BoxedTableFunction>
Builds the table function.
sourcepub fn build_aggregate(&self, agg: &AggCall) -> Result<BoxedAggregateFunction>
pub fn build_aggregate(&self, agg: &AggCall) -> Result<BoxedAggregateFunction>
Builds the aggregate function. If both retractable and append-only versions exist, the retractable version will be built.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for FuncSign
impl RefUnwindSafe for FuncSign
impl Send for FuncSign
impl Sync for FuncSign
impl Unpin for FuncSign
impl UnwindSafe for FuncSign
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
type Err = Infallible
fn into_result(self) -> Result<T, <T as IntoResult<T>>::Err>
source§impl<M> MetricVecRelabelExt for M
impl<M> MetricVecRelabelExt for M
source§fn relabel(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
RelabeledMetricVec::with_metric_level
.source§fn relabel_n(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
relabel_num: usize,
) -> RelabeledMetricVec<M>
fn relabel_n( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, relabel_num: usize, ) -> RelabeledMetricVec<M>
RelabeledMetricVec::with_metric_level_relabel_n
.source§fn relabel_debug_1(
self,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel_debug_1( self, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
RelabeledMetricVec::with_metric_level_relabel_n
with metric_level
set to
MetricLevel::Debug
and relabel_num
set to 1.