()
| 166 | |
| 167 | #[tokio::test] |
| 168 | async fn with_column_window_functions() -> DataFusionResult<()> { |
| 169 | let schema = Schema::new(vec![Field::new("a", DataType::Int32, true)]); |
| 170 | |
| 171 | let batch = RecordBatch::try_new( |
| 172 | Arc::new(schema.clone()), |
| 173 | vec![Arc::new(Int32Array::from(vec![1, 2, 3, 4, 5]))], |
| 174 | )?; |
| 175 | |
| 176 | let ctx = SessionContext::new(); |
| 177 | |
| 178 | let provider = MemTable::try_new(Arc::new(schema), vec![vec![batch]])?; |
| 179 | ctx.register_table("t", Arc::new(provider))?; |
| 180 | |
| 181 | // Define test cases: (expr builder, alias name) |
| 182 | let test_cases: Vec<WindowFnCase> = vec![ |
| 183 | (|| lag(col("a"), Some(1), None), "lag_val"), |
| 184 | (|| lead(col("a"), Some(1), None), "lead_val"), |
| 185 | (row_number, "row_num"), |
| 186 | ]; |
| 187 | |
| 188 | for (make_expr, alias) in test_cases { |
| 189 | let df = ctx.table("t").await?; |
| 190 | let expr = make_expr(); |
| 191 | let df_with = df.with_column(alias, expr)?; |
| 192 | let df_schema = df_with.schema().clone(); |
| 193 | |
| 194 | assert!( |
| 195 | df_schema.has_column_with_unqualified_name(alias), |
| 196 | "Schema does not contain expected column {alias}", |
| 197 | ); |
| 198 | |
| 199 | assert_eq!(2, df_schema.columns().len()); |
| 200 | } |
| 201 | |
| 202 | Ok(()) |
| 203 | } |
| 204 | |
| 205 | #[tokio::test] |
| 206 | async fn test_coalesce_schema() -> Result<()> { |
nothing calls this directly
no test coverage detected
searching dependent graphs…