pub struct QueryBuilder<'outer, 'a> { /* private fields */ }Expand description
Builder for the “query” portion of the rule.
Queries specify scans or joins over the database that bind variables that are accessible to rules.
Implementations§
Source§impl<'outer, 'a> QueryBuilder<'outer, 'a>
 
impl<'outer, 'a> QueryBuilder<'outer, 'a>
Sourcepub fn build(self) -> RuleBuilder<'outer, 'a>
 
pub fn build(self) -> RuleBuilder<'outer, 'a>
Finish the query and start building the right-hand side of the rule.
Sourcepub fn set_plan_strategy(&mut self, strategy: PlanStrategy)
 
pub fn set_plan_strategy(&mut self, strategy: PlanStrategy)
Set the target plan strategy to use to execute this query.
Sourcepub fn add_atom<'b>(
    &mut self,
    table_id: TableId,
    vars: &[QueryEntry],
    cs: impl IntoIterator<Item = &'b Constraint>,
) -> Result<AtomId, QueryError>
 
pub fn add_atom<'b>( &mut self, table_id: TableId, vars: &[QueryEntry], cs: impl IntoIterator<Item = &'b Constraint>, ) -> Result<AtomId, QueryError>
Add the given atom to the query, with the given variables and constraints.
NB: it is possible to constrain two non-equal variables to be equal given this setup. Doing this will not cause any problems but nevertheless is not recommended.
The returned AtomId can be used to refer to this atom when adding constraints in
[RuleSetBuilder::rule_from_cached_plan].
§Panics
Like most methods that take a TableId, this method will panic if the
given table is not declared in the corresponding database.
Auto Trait Implementations§
impl<'outer, 'a> Freeze for QueryBuilder<'outer, 'a>
impl<'outer, 'a> !RefUnwindSafe for QueryBuilder<'outer, 'a>
impl<'outer, 'a> Send for QueryBuilder<'outer, 'a>
impl<'outer, 'a> Sync for QueryBuilder<'outer, 'a>
impl<'outer, 'a> Unpin for QueryBuilder<'outer, 'a>
impl<'outer, 'a> !UnwindSafe for QueryBuilder<'outer, 'a>
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> 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 more