(
&mut self,
transforms: Vec<pq::SqlTransform<RIId, rq::Transform>>,
)
| 137 | } |
| 138 | |
| 139 | fn fold_sql_transforms( |
| 140 | &mut self, |
| 141 | transforms: Vec<pq::SqlTransform<RIId, rq::Transform>>, |
| 142 | ) -> Result<Vec<pq::SqlTransform<pq::RelationExpr, ()>>> { |
| 143 | transforms |
| 144 | .into_iter() |
| 145 | .map(|transform| { |
| 146 | Ok(Some(match transform { |
| 147 | pq::SqlTransform::From(v) => pq::SqlTransform::From(self.fold_rel(v)?), |
| 148 | pq::SqlTransform::Join { side, with, filter } => pq::SqlTransform::Join { |
| 149 | side, |
| 150 | with: self.fold_rel(with)?, |
| 151 | filter, |
| 152 | }, |
| 153 | |
| 154 | pq::SqlTransform::Super(sup) => { |
| 155 | match sup { |
| 156 | rq::Transform::Select(v) => pq::SqlTransform::Select(v), |
| 157 | rq::Transform::Filter(v) => pq::SqlTransform::Filter(v), |
| 158 | rq::Transform::Aggregate { partition, compute } => { |
| 159 | pq::SqlTransform::Aggregate { partition, compute } |
| 160 | } |
| 161 | rq::Transform::Sort(v) => pq::SqlTransform::Sort(v), |
| 162 | rq::Transform::Take(v) => pq::SqlTransform::Take(v), |
| 163 | rq::Transform::Compute(_) |
| 164 | | rq::Transform::Append(_) |
| 165 | | rq::Transform::Loop(_) => { |
| 166 | // these are not used from here on |
| 167 | return Ok(None); |
| 168 | } |
| 169 | rq::Transform::From(_) | rq::Transform::Join { .. } => unreachable!(), |
| 170 | } |
| 171 | } |
| 172 | _ => fold_sql_transform(self, transform)?, |
| 173 | })) |
| 174 | }) |
| 175 | .flat_map(|x| x.transpose()) |
| 176 | .try_collect() |
| 177 | } |
| 178 | } |
| 179 | |
| 180 | pub(super) fn compile_relation_instance(riid: RIId, ctx: &mut Context) -> Result<pq::RelationExpr> { |
no test coverage detected