#[cfg(test)]
mod tests {
use crate::utils::test::{add_plan_schemas_to_ctx, read_json};
use datafusion::common::Result;
use datafusion::dataframe::DataFrame;
use datafusion::prelude::SessionContext;
use datafusion_substrait::logical_plan::consumer::from_substrait_plan;
use insta::assert_snapshot;
#[tokio::test]
async fn no_grouping_set() -> Result<()> {
let proto_plan =
read_json("tests/testdata/test_plans/aggregate_groupings/no_groupings.json");
let ctx = add_plan_schemas_to_ctx(SessionContext::new(), &proto_plan)?;
let plan = from_substrait_plan(&ctx.state(), &proto_plan).await?;
assert_snapshot!(
plan,
@r"
Aggregate: groupBy=[[]], aggr=[[sum(c0) AS summation]]
EmptyRelation: rows=0
"
);
DataFrame::new(ctx.state(), plan).show().await?;
Ok(())
}
#[tokio::test]
async fn one_grouping_set() -> Result<()> {
let proto_plan = read_json(
"tests/testdata/test_plans/aggregate_groupings/single_grouping.json",
);
let ctx = add_plan_schemas_to_ctx(SessionContext::new(), &proto_plan)?;
let plan = from_substrait_plan(&ctx.state(), &proto_plan).await?;
assert_snapshot!(
plan,
@r"
Aggregate: groupBy=[[c0]], aggr=[[sum(c0) AS summation]]
EmptyRelation: rows=0
"
);
DataFrame::new(ctx.state(), plan).show().await?;
Ok(())
}
}