pub struct MirRelationExprDeserializeContext<'a> {
pub(crate) inner_ctx: MirScalarExprDeserializeContext,
pub(crate) catalog: &'a TestCatalog,
pub(crate) scope: Scope,
}
Expand description
Extends the test case syntax to support MirRelationExprs
A new context should be created for the deserialization of each MirRelationExpr because the context stores state local to each MirRelationExpr.
Includes all the test case syntax extensions to support MirScalarExprs.
The following variants of MirRelationExpr have non-standard syntax:
Let -> the syntax is (let x <value> <body>)
where x is an ident that
should not match any existing ident in any Let statement in
<value>
.
Get -> the syntax is (get x)
, where x is an ident that refers to a
pre-defined source or an ident defined in a let.
Union -> the syntax is (union <input1> .. <inputn>)
.
Constant -> the syntax is
(constant
[[<row1literal1>..<row1literaln>]..[<rowiliteral1>..<rowiliteraln>]]
<RelationType>
)
For convenience, a usize can be alternately specified as #n
.
We recommend specifying a usize as #n
instead of n
when the usize
is a column reference.
Fields
inner_ctx: MirScalarExprDeserializeContext
catalog: &'a TestCatalog
scope: Scope
Tracks local references when converting spec to JSON. Tracks global references not found in the catalog when converting from JSON to spec.
Implementations
sourceimpl<'a> MirRelationExprDeserializeContext<'a>
impl<'a> MirRelationExprDeserializeContext<'a>
pub fn new(catalog: &'a TestCatalog) -> Self
pub fn list_scope_references(
&self
) -> impl Iterator<Item = (&String, &RelationType)>
pub(crate) fn build_constant<I>(
&mut self,
stream_iter: &mut I
) -> Result<MirRelationExpr, String> where
I: Iterator<Item = TokenTree>,
pub(crate) fn build_constant_err<I>(
&mut self,
stream_iter: &mut I
) -> Result<MirRelationExpr, String> where
I: Iterator<Item = TokenTree>,
pub(crate) fn build_get(
&mut self,
token: Option<TokenTree>
) -> Result<MirRelationExpr, String>
pub(crate) fn build_let<I>(
&mut self,
stream_iter: &mut I
) -> Result<MirRelationExpr, String> where
I: Iterator<Item = TokenTree>,
pub(crate) fn build_union<I>(
&mut self,
stream_iter: &mut I
) -> Result<MirRelationExpr, String> where
I: Iterator<Item = TokenTree>,
pub(crate) fn build_special_mir_if_able<I>(
&mut self,
first_arg: TokenTree,
rest_of_stream: &mut I
) -> Result<Option<MirRelationExpr>, String> where
I: Iterator<Item = TokenTree>,
Trait Implementations
sourceimpl<'a> TestDeserializeContext for MirRelationExprDeserializeContext<'a>
impl<'a> TestDeserializeContext for MirRelationExprDeserializeContext<'a>
sourcefn override_syntax<I>(
&mut self,
first_arg: TokenTree,
rest_of_stream: &mut I,
type_name: &str
) -> Result<Option<String>, String> where
I: Iterator<Item = TokenTree>,
fn override_syntax<I>(
&mut self,
first_arg: TokenTree,
rest_of_stream: &mut I,
type_name: &str
) -> Result<Option<String>, String> where
I: Iterator<Item = TokenTree>,
Override the way that first_arg
is resolved to JSON. Read more
sourcefn reverse_syntax_override(
&mut self,
json: &Value,
type_name: &str
) -> Option<String>
fn reverse_syntax_override(
&mut self,
json: &Value,
type_name: &str
) -> Option<String>
Converts json
back to the extended syntax specified by
TestDeserializeContext::override_syntax. Read more
Auto Trait Implementations
impl<'a> RefUnwindSafe for MirRelationExprDeserializeContext<'a>
impl<'a> Send for MirRelationExprDeserializeContext<'a>
impl<'a> Sync for MirRelationExprDeserializeContext<'a>
impl<'a> Unpin for MirRelationExprDeserializeContext<'a>
impl<'a> UnwindSafe for MirRelationExprDeserializeContext<'a>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> FutureExt for T
impl<T> FutureExt for T
sourcefn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
sourcefn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
sourcefn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message T
in a tonic::Request
sourceimpl<P, R> ProtoType<R> for P where
R: RustType<P>,
impl<P, R> ProtoType<R> for P where
R: RustType<P>,
sourcefn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
See RustType::from_proto
.
sourcefn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
See RustType::into_proto
.
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more