pub struct IrFunctionCall {
pub return_pg_type: Option<String>,
pub schema: Option<String>,
pub name: String,
pub args: Vec<IrExpr>,
pub sql_template: Option<String>,
}Fields§
§return_pg_type: Option<String>What the resolved overload returns, when that is a nameable scalar.
name alone cannot answer this: a SqlBuiltin overload is rewritten
to its PostgreSQL name here (str_lower becomes lower), so looking
the result back up in the stdlib registry by name finds nothing and
silently types the call as unknown. Recording it at resolution time —
the one place the chosen FnDescriptor/FunctionDescriptor is in
hand — is what lets infer_ir_type see through a call at all, which
in turn is what lets a nested call (str_lower(str_trim(x))) resolve
its outer overload by type rather than by falling back to the first
one registered. None for a synthesised call the compiler builds
itself and for a polymorphic result (max, min, sum) that is
typed from its argument instead.
schema: Option<String>§name: String§args: Vec<IrExpr>§sql_template: Option<String>Set for SqlExpression impls: raw SQL template where $1, $2, … are
replaced with the emitted arg expressions.
Trait Implementations§
Source§impl Clone for IrFunctionCall
impl Clone for IrFunctionCall
Auto Trait Implementations§
impl Freeze for IrFunctionCall
impl RefUnwindSafe for IrFunctionCall
impl Send for IrFunctionCall
impl Sync for IrFunctionCall
impl Unpin for IrFunctionCall
impl UnsafeUnpin for IrFunctionCall
impl UnwindSafe for IrFunctionCall
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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§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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.