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: FuncNameThe name of the function.
inputs_type: Vec<SigDataType>The argument types.
variadic: boolWhether the function is variadic.
ret_type: SigDataTypeThe return type.
build: FuncBuilderA function to build the expression.
type_infer: fn(args: &[DataType]) -> Result<DataType>A function to infer the return type from argument types.
deprecated: boolWhether 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,
§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>, which can then be
downcast into Box<dyn 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>, which 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> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Any.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Any.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§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.