Skip to content

Commit 8d95d48

Browse files
test: define correct expected output for Snowflake FLATTEN unparsing
The existing tests pass with broken SQL output — the SELECT list still uses DataFusion internal names (__unnest_placeholder) instead of Snowflake's alias.VALUE convention. Update expectations to the correct Snowflake SQL so these tests will drive the implementation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent adfec24 commit 8d95d48

1 file changed

Lines changed: 38 additions & 1 deletion

File tree

datafusion/sql/tests/cases/plan_to_sql.rs

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ use datafusion_sql::planner::{ContextProvider, PlannerContext, SqlToRel};
3939
use datafusion_sql::unparser::dialect::{
4040
BigQueryDialect, CustomDialectBuilder, DefaultDialect as UnparserDefaultDialect,
4141
DefaultDialect, Dialect as UnparserDialect, MySqlDialect as UnparserMySqlDialect,
42-
PostgreSqlDialect as UnparserPostgreSqlDialect, SqliteDialect,
42+
PostgreSqlDialect as UnparserPostgreSqlDialect, SnowflakeDialect, SqliteDialect,
4343
};
4444
use datafusion_sql::unparser::{Unparser, expr_to_sql, plan_to_sql};
4545
use insta::assert_snapshot;
@@ -2995,3 +2995,40 @@ fn test_unparse_manual_join_with_subquery_aggregate() -> Result<()> {
29952995

29962996
Ok(())
29972997
}
2998+
2999+
#[test]
3000+
fn snowflake_unnest_to_lateral_flatten_simple() -> Result<(), DataFusionError> {
3001+
let snowflake = SnowflakeDialect::new();
3002+
roundtrip_statement_with_dialect_helper!(
3003+
sql: "SELECT * FROM UNNEST([1,2,3])",
3004+
parser_dialect: GenericDialect {},
3005+
unparser_dialect: snowflake,
3006+
expected: @r#"SELECT _unnest."VALUE" FROM LATERAL FLATTEN(INPUT => [1, 2, 3]) AS _unnest"#,
3007+
);
3008+
Ok(())
3009+
}
3010+
3011+
#[test]
3012+
fn snowflake_unnest_to_lateral_flatten_with_cross_join() -> Result<(), DataFusionError>
3013+
{
3014+
let snowflake = SnowflakeDialect::new();
3015+
roundtrip_statement_with_dialect_helper!(
3016+
sql: "SELECT * FROM UNNEST([1,2,3]), j1",
3017+
parser_dialect: GenericDialect {},
3018+
unparser_dialect: snowflake,
3019+
expected: @r#"SELECT _unnest."VALUE", "j1"."j1_id", "j1"."j1_string" FROM LATERAL FLATTEN(INPUT => [1, 2, 3]) AS _unnest CROSS JOIN "j1""#,
3020+
);
3021+
Ok(())
3022+
}
3023+
3024+
#[test]
3025+
fn snowflake_unnest_to_lateral_flatten_outer_ref() -> Result<(), DataFusionError> {
3026+
let snowflake = SnowflakeDialect::new();
3027+
roundtrip_statement_with_dialect_helper!(
3028+
sql: "SELECT * FROM unnest_table u, UNNEST(u.array_col)",
3029+
parser_dialect: GenericDialect {},
3030+
unparser_dialect: snowflake,
3031+
expected: @r#"SELECT "u"."array_col", "u"."struct_col", _unnest."VALUE" FROM "unnest_table" AS "u" CROSS JOIN LATERAL FLATTEN(INPUT => "u"."array_col") AS _unnest"#,
3032+
);
3033+
Ok(())
3034+
}

0 commit comments

Comments
 (0)