INNER CODE UNIT · Rust
partition_and_lower_top_level_projection
sqlpage/SQLPage · src/webserver/database/sql/rewrite/mod.rs:86
fn partition_and_lower_top_level_projection(
statement: &mut SqlStatement,
partitioner: &mut ProjectionPartitioner<'_>,
lowerer: &mut DatabaseLowerer<'_>,
) -> anyhow::Result<Vec<OutputColumn<RowExpr>>> {
let SqlStatement::Query(query) = statement else {
return Ok(Vec::new());
};
let computed_columns = {
let SetExpr::Select(select) = query.body.as_mut() else {
return Ok(Vec::new());
};
computed_column_validation::reject_distinct_sqlpage_projection(select)?;
let mut database_projection = Vec::with_capacity(select.projection.len());
let mut computed_columns = Vec::new();
for item in std::mem::take(&mut select.projection) {
let (expression, alias) = match item {