-
Notifications
You must be signed in to change notification settings - Fork 2k
Expand wildcard to actual expressions in prepare_select_exprs
#15090
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
364e3a4
cba1dff
d195a5a
ff071e8
59f7e98
271abd3
deec729
09d14df
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -323,13 +323,6 @@ fn roundtrip_statement_with_dialect() -> Result<()> { | |
| parser_dialect: Box::new(MySqlDialect {}), | ||
| unparser_dialect: Box::new(UnparserMySqlDialect {}), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "select * from (select * from j1 limit 10);", | ||
| expected: | ||
| "SELECT * FROM (SELECT * FROM `j1` LIMIT 10) AS `derived_limit`", | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If we expand * to all the columns, should we convert back to * for unparser? I'm not sure should we support this, I delete related test and consider not supported
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it's hard to convert back to |
||
| parser_dialect: Box::new(MySqlDialect {}), | ||
| unparser_dialect: Box::new(UnparserMySqlDialect {}), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "select ta.j1_id from j1 ta order by j1_id limit 10;", | ||
| expected: | ||
|
|
@@ -524,96 +517,6 @@ fn roundtrip_statement_with_dialect() -> Result<()> { | |
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(SqliteDialect {}), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM (SELECT j1_id + 1 FROM j1) AS temp_j(id2)", | ||
| expected: r#"SELECT * FROM (SELECT (`j1`.`j1_id` + 1) AS `id2` FROM `j1`) AS `temp_j`"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(SqliteDialect {}), | ||
| }, | ||
|
Comment on lines
526
to
532
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we can't remove them. They aren't related to the wildcard expansion. It's better to change the expected result to match the expanded result instead. |
||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM (SELECT j1_id FROM j1 LIMIT 1) AS temp_j(id2)", | ||
| expected: r#"SELECT * FROM (SELECT `j1`.`j1_id` AS `id2` FROM `j1` LIMIT 1) AS `temp_j`"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(SqliteDialect {}), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM UNNEST([1,2,3])", | ||
| expected: r#"SELECT * FROM (SELECT UNNEST([1, 2, 3]) AS "UNNEST(make_array(Int64(1),Int64(2),Int64(3)))")"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(UnparserDefaultDialect {}), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM UNNEST([1,2,3]) AS t1 (c1)", | ||
| expected: r#"SELECT * FROM (SELECT UNNEST([1, 2, 3]) AS "UNNEST(make_array(Int64(1),Int64(2),Int64(3)))") AS t1 (c1)"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(UnparserDefaultDialect {}), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM UNNEST([1,2,3]) AS t1 (c1)", | ||
| expected: r#"SELECT * FROM (SELECT UNNEST([1, 2, 3]) AS "UNNEST(make_array(Int64(1),Int64(2),Int64(3)))") AS t1 (c1)"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(UnparserDefaultDialect {}), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM UNNEST([1,2,3]), j1", | ||
| expected: r#"SELECT * FROM (SELECT UNNEST([1, 2, 3]) AS "UNNEST(make_array(Int64(1),Int64(2),Int64(3)))") CROSS JOIN j1"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(UnparserDefaultDialect {}), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM UNNEST([1,2,3]) u(c1) JOIN j1 ON u.c1 = j1.j1_id", | ||
| expected: r#"SELECT * FROM (SELECT UNNEST([1, 2, 3]) AS "UNNEST(make_array(Int64(1),Int64(2),Int64(3)))") AS u (c1) JOIN j1 ON (u.c1 = j1.j1_id)"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(UnparserDefaultDialect {}), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM UNNEST([1,2,3]) u(c1) UNION ALL SELECT * FROM UNNEST([4,5,6]) u(c1)", | ||
| expected: r#"SELECT * FROM (SELECT UNNEST([1, 2, 3]) AS "UNNEST(make_array(Int64(1),Int64(2),Int64(3)))") AS u (c1) UNION ALL SELECT * FROM (SELECT UNNEST([4, 5, 6]) AS "UNNEST(make_array(Int64(4),Int64(5),Int64(6)))") AS u (c1)"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(UnparserDefaultDialect {}), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM UNNEST([1,2,3])", | ||
| expected: r#"SELECT * FROM UNNEST([1, 2, 3])"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(CustomDialectBuilder::default().with_unnest_as_table_factor(true).build()), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM UNNEST([1,2,3]) AS t1 (c1)", | ||
| expected: r#"SELECT * FROM UNNEST([1, 2, 3]) AS t1 (c1)"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(CustomDialectBuilder::default().with_unnest_as_table_factor(true).build()), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM UNNEST([1,2,3]) AS t1 (c1)", | ||
| expected: r#"SELECT * FROM UNNEST([1, 2, 3]) AS t1 (c1)"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(CustomDialectBuilder::default().with_unnest_as_table_factor(true).build()), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM UNNEST([1,2,3]), j1", | ||
| expected: r#"SELECT * FROM UNNEST([1, 2, 3]) CROSS JOIN j1"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(CustomDialectBuilder::default().with_unnest_as_table_factor(true).build()), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM UNNEST([1,2,3]) u(c1) JOIN j1 ON u.c1 = j1.j1_id", | ||
| expected: r#"SELECT * FROM UNNEST([1, 2, 3]) AS u (c1) JOIN j1 ON (u.c1 = j1.j1_id)"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(CustomDialectBuilder::default().with_unnest_as_table_factor(true).build()), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM UNNEST([1,2,3]) u(c1) UNION ALL SELECT * FROM UNNEST([4,5,6]) u(c1)", | ||
| expected: r#"SELECT * FROM UNNEST([1, 2, 3]) AS u (c1) UNION ALL SELECT * FROM UNNEST([4, 5, 6]) AS u (c1)"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(CustomDialectBuilder::default().with_unnest_as_table_factor(true).build()), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT UNNEST([1,2,3])", | ||
| expected: r#"SELECT * FROM UNNEST([1, 2, 3])"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(CustomDialectBuilder::default().with_unnest_as_table_factor(true).build()), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT UNNEST([1,2,3]) as c1", | ||
| expected: r#"SELECT UNNEST([1, 2, 3]) AS c1"#, | ||
|
|
@@ -626,30 +529,6 @@ fn roundtrip_statement_with_dialect() -> Result<()> { | |
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(CustomDialectBuilder::default().with_unnest_as_table_factor(true).build()), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM unnest_table u, UNNEST(u.array_col)", | ||
| expected: r#"SELECT * FROM unnest_table AS u CROSS JOIN UNNEST(u.array_col)"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(CustomDialectBuilder::default().with_unnest_as_table_factor(true).build()), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM unnest_table u, UNNEST(u.array_col) AS t1 (c1)", | ||
| expected: r#"SELECT * FROM unnest_table AS u CROSS JOIN UNNEST(u.array_col) AS t1 (c1)"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(CustomDialectBuilder::default().with_unnest_as_table_factor(true).build()), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM unnest_table u, UNNEST(u.array_col)", | ||
| expected: r#"SELECT * FROM unnest_table AS u CROSS JOIN LATERAL (SELECT UNNEST(u.array_col) AS "UNNEST(outer_ref(u.array_col))")"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(UnparserDefaultDialect {}), | ||
| }, | ||
| TestStatementWithDialect { | ||
| sql: "SELECT * FROM unnest_table u, UNNEST(u.array_col) AS t1 (c1)", | ||
| expected: r#"SELECT * FROM unnest_table AS u CROSS JOIN LATERAL (SELECT UNNEST(u.array_col) AS "UNNEST(outer_ref(u.array_col))") AS t1 (c1)"#, | ||
| parser_dialect: Box::new(GenericDialect {}), | ||
| unparser_dialect: Box::new(UnparserDefaultDialect {}), | ||
| }, | ||
| ]; | ||
|
|
||
| for query in tests { | ||
|
|
@@ -1456,13 +1335,13 @@ fn test_unnest_to_sql() { | |
| fn test_join_with_no_conditions() { | ||
| sql_round_trip( | ||
| GenericDialect {}, | ||
| "SELECT * FROM j1 JOIN j2", | ||
| "SELECT * FROM j1 CROSS JOIN j2", | ||
| "SELECT j1.j1_id FROM j1 JOIN j2", | ||
| "SELECT j1.j1_id FROM j1 CROSS JOIN j2", | ||
| ); | ||
| sql_round_trip( | ||
| GenericDialect {}, | ||
| "SELECT * FROM j1 CROSS JOIN j2", | ||
| "SELECT * FROM j1 CROSS JOIN j2", | ||
| "SELECT j1.j1_id FROM j1 CROSS JOIN j2", | ||
| "SELECT j1.j1_id FROM j1 CROSS JOIN j2", | ||
| ); | ||
| } | ||
|
|
||
|
|
@@ -1547,7 +1426,7 @@ impl UserDefinedLogicalNodeUnparser for UnusedUnparser { | |
| fn test_unparse_extension_to_statement() -> Result<()> { | ||
| let dialect = GenericDialect {}; | ||
| let statement = Parser::new(&dialect) | ||
| .try_with_sql("SELECT * FROM j1")? | ||
| .try_with_sql("SELECT j1.j1_id FROM j1")? | ||
| .parse_statement()?; | ||
| let state = MockSessionState::default(); | ||
| let context = MockContextProvider { state }; | ||
|
|
@@ -1563,7 +1442,7 @@ fn test_unparse_extension_to_statement() -> Result<()> { | |
| Arc::new(UnusedUnparser {}), | ||
| ]); | ||
| let sql = unparser.plan_to_sql(&extension)?; | ||
| let expected = "SELECT * FROM j1"; | ||
| let expected = "SELECT j1.j1_id FROM j1"; | ||
| assert_eq!(sql.to_string(), expected); | ||
|
|
||
| if let Some(err) = plan_to_sql(&extension).err() { | ||
|
|
@@ -1606,7 +1485,7 @@ impl UserDefinedLogicalNodeUnparser for MockSqlUnparser { | |
| fn test_unparse_extension_to_sql() -> Result<()> { | ||
| let dialect = GenericDialect {}; | ||
| let statement = Parser::new(&dialect) | ||
| .try_with_sql("SELECT * FROM j1")? | ||
| .try_with_sql("SELECT j1.j1_id FROM j1")? | ||
| .parse_statement()?; | ||
| let state = MockSessionState::default(); | ||
| let context = MockContextProvider { state }; | ||
|
|
@@ -1626,7 +1505,7 @@ fn test_unparse_extension_to_sql() -> Result<()> { | |
| Arc::new(UnusedUnparser {}), | ||
| ]); | ||
| let sql = unparser.plan_to_sql(&plan)?; | ||
| let expected = "SELECT j1.j1_id AS user_id FROM (SELECT * FROM j1)"; | ||
| let expected = "SELECT j1.j1_id AS user_id FROM (SELECT j1.j1_id FROM j1)"; | ||
| assert_eq!(sql.to_string(), expected); | ||
|
|
||
| if let Some(err) = plan_to_sql(&plan).err() { | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There two parts are the real change, others are test adjustment