MCPcopy Create free account
hub / github.com/PRQL/prql / fold_sql_transforms

Method fold_sql_transforms

prqlc/prqlc/src/sql/pq/gen_query.rs:139–177  ·  view source on GitHub ↗
(
        &mut self,
        transforms: Vec<pq::SqlTransform<RIId, rq::Transform>>,
    )

Source from the content-addressed store, hash-verified

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
180pub(super) fn compile_relation_instance(riid: RIId, ctx: &mut Context) -> Result<pq::RelationExpr> {

Callers 2

redirect_pipelineMethod · 0.45
compile_pipelineFunction · 0.45

Calls 5

TakeClass · 0.85
fold_sql_transformFunction · 0.85
mapMethod · 0.80
into_iterMethod · 0.80
fold_relMethod · 0.45

Tested by

no test coverage detected