pub struct RecursiveBody {
pub seeds: Vec<(CompoundOp, BoundSelect)>,
pub steps: Vec<(CompoundOp, BoundSelect)>,
}Expand description
A recursive CTE’s arms, split by whether they refer to the CTE.
SQLite’s rule is that the arms which do not reference the CTE are its seed and run once, and the arms which do are its step and run against each row the seed and earlier steps produced. Splitting them at bind time rather than at compile time is what lets the compiler emit one queue walk rather than re-deciding per arm what each one is.
Fields§
§seeds: Vec<(CompoundOp, BoundSelect)>The arms that do not reference the CTE, with the operator before each.
steps: Vec<(CompoundOp, BoundSelect)>The arms that do.
Trait Implementations§
Source§impl Clone for RecursiveBody
impl Clone for RecursiveBody
Source§impl Debug for RecursiveBody
impl Debug for RecursiveBody
Source§impl PartialEq for RecursiveBody
impl PartialEq for RecursiveBody
impl StructuralPartialEq for RecursiveBody
Auto Trait Implementations§
impl !Send for RecursiveBody
impl !Sync for RecursiveBody
impl Freeze for RecursiveBody
impl RefUnwindSafe for RecursiveBody
impl Unpin for RecursiveBody
impl UnsafeUnpin for RecursiveBody
impl UnwindSafe for RecursiveBody
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
Mutably borrows from an owned value. Read more