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 {

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…