|
18 | 18 | use insta::assert_snapshot; |
19 | 19 |
|
20 | 20 | use datafusion::assert_batches_eq; |
| 21 | +use datafusion::catalog::MemTable; |
21 | 22 | use datafusion::datasource::stream::{FileStreamProvider, StreamConfig, StreamTable}; |
22 | 23 | use datafusion::test_util::register_unbounded_file_with_ordering; |
| 24 | +use datafusion_sql::unparser::plan_to_sql; |
23 | 25 |
|
24 | 26 | use super::*; |
25 | 27 |
|
@@ -264,3 +266,45 @@ async fn join_using_uppercase_column() -> Result<()> { |
264 | 266 |
|
265 | 267 | Ok(()) |
266 | 268 | } |
| 269 | + |
| 270 | +// Issue #17359: https://github.com/apache/datafusion/issues/17359 |
| 271 | +#[tokio::test] |
| 272 | +async fn unparse_cross_join() -> Result<()> { |
| 273 | + let ctx = SessionContext::new(); |
| 274 | + |
| 275 | + let j1_schema = Arc::new(Schema::new(vec![ |
| 276 | + Field::new("j1_id", DataType::Int32, true), |
| 277 | + Field::new("j1_string", DataType::Utf8, true), |
| 278 | + ])); |
| 279 | + let j2_schema = Arc::new(Schema::new(vec![ |
| 280 | + Field::new("j2_id", DataType::Int32, true), |
| 281 | + Field::new("j2_string", DataType::Utf8, true), |
| 282 | + ])); |
| 283 | + |
| 284 | + ctx.register_table("j1", Arc::new(MemTable::try_new(j1_schema, vec![vec![]])?))?; |
| 285 | + ctx.register_table("j2", Arc::new(MemTable::try_new(j2_schema, vec![vec![]])?))?; |
| 286 | + |
| 287 | + let df = ctx |
| 288 | + .sql( |
| 289 | + r#" |
| 290 | + select j1.j1_id, j2.j2_string |
| 291 | + from j1, j2 |
| 292 | + where j2.j2_id = 0 |
| 293 | + "#, |
| 294 | + ) |
| 295 | + .await?; |
| 296 | + |
| 297 | + let unopt_sql = plan_to_sql(df.logical_plan())?; |
| 298 | + assert_snapshot!(unopt_sql, @r#" |
| 299 | + SELECT j1.j1_id, j2.j2_string FROM j1 CROSS JOIN j2 WHERE (j2.j2_id = 0) |
| 300 | + "#); |
| 301 | + |
| 302 | + let optimized_plan = df.into_optimized_plan()?; |
| 303 | + |
| 304 | + let opt_sql = plan_to_sql(&optimized_plan)?; |
| 305 | + assert_snapshot!(opt_sql, @r#" |
| 306 | + SELECT j1.j1_id, j2.j2_string FROM j1 CROSS JOIN j2 WHERE (j2.j2_id = 0) |
| 307 | + "#); |
| 308 | + |
| 309 | + Ok(()) |
| 310 | +} |
0 commit comments