11use sqlparser:: dialect:: GenericDialect ;
22use sqlparser:: parser:: Parser ;
33
4+ fn parse_and_format ( sql : & str ) -> String {
5+ let ast = Parser :: parse_sql ( & GenericDialect { } , sql) . unwrap ( ) ;
6+ format ! ( "{:#}" , ast[ 0 ] )
7+ }
8+
49#[ test]
510fn test_pretty_print_select ( ) {
6- let sql = "SELECT a, b, c FROM my_table WHERE x = 1 AND y = 2" ;
7- let ast = Parser :: parse_sql ( & GenericDialect { } , sql) . unwrap ( ) ;
8- let pretty = format ! ( "{:#}" , ast[ 0 ] ) ;
911 assert_eq ! (
10- pretty,
11- r#"SELECT
12+ parse_and_format( "SELECT a, b, c FROM my_table WHERE x = 1 AND y = 2" ) ,
13+ r#"
14+ SELECT
1215 a,
1316 b,
1417 c
1518FROM
1619 my_table
1720WHERE
18- x = 1 AND y = 2"#
21+ x = 1 AND y = 2
22+ "#
23+ . trim( )
1924 ) ;
2025}
2126
2227#[ test]
2328fn test_pretty_print_join ( ) {
24- let sql = "SELECT a FROM table1 JOIN table2 ON table1.id = table2.id" ;
25- let ast = Parser :: parse_sql ( & GenericDialect { } , sql) . unwrap ( ) ;
26- let pretty = format ! ( "{:#}" , ast[ 0 ] ) ;
2729 assert_eq ! (
28- pretty,
29- r#"SELECT
30+ parse_and_format( "SELECT a FROM table1 JOIN table2 ON table1.id = table2.id" ) ,
31+ r#"
32+ SELECT
3033 a
3134FROM
3235 table1
33- JOIN table2 ON table1.id = table2.id"#
36+ JOIN table2 ON table1.id = table2.id
37+ "#
38+ . trim( )
3439 ) ;
3540}
3641
3742#[ test]
3843fn test_pretty_print_subquery ( ) {
39- let sql = "SELECT * FROM (SELECT a, b FROM my_table) AS subquery" ;
40- let ast = Parser :: parse_sql ( & GenericDialect { } , sql) . unwrap ( ) ;
41- let pretty = format ! ( "{:#}" , ast[ 0 ] ) ;
4244 assert_eq ! (
43- pretty,
44- r#"SELECT
45+ parse_and_format( "SELECT * FROM (SELECT a, b FROM my_table) AS subquery" ) ,
46+ r#"
47+ SELECT
4548 *
4649FROM
4750 (
5053 b
5154 FROM
5255 my_table
53- ) AS subquery"#
56+ ) AS subquery
57+ "#
58+ . trim( )
5459 ) ;
5560}
5661
5762#[ test]
5863fn test_pretty_print_union ( ) {
59- let sql = "SELECT a FROM table1 UNION SELECT b FROM table2" ;
60- let ast = Parser :: parse_sql ( & GenericDialect { } , sql) . unwrap ( ) ;
61- let pretty = format ! ( "{:#}" , ast[ 0 ] ) ;
6264 assert_eq ! (
63- pretty,
64- r#"SELECT
65+ parse_and_format( "SELECT a FROM table1 UNION SELECT b FROM table2" ) ,
66+ r#"
67+ SELECT
6568 a
6669FROM
6770 table1
6871UNION
6972SELECT
7073 b
7174FROM
72- table2"#
75+ table2
76+ "#
77+ . trim( )
7378 ) ;
7479}
7580
7681#[ test]
7782fn test_pretty_print_group_by ( ) {
78- let sql = "SELECT a, COUNT(*) FROM my_table GROUP BY a HAVING COUNT(*) > 1" ;
79- let ast = Parser :: parse_sql ( & GenericDialect { } , sql) . unwrap ( ) ;
80- let pretty = format ! ( "{:#}" , ast[ 0 ] ) ;
8183 assert_eq ! (
82- pretty,
83- r#"SELECT
84+ parse_and_format( "SELECT a, COUNT(*) FROM my_table GROUP BY a HAVING COUNT(*) > 1" ) ,
85+ r#"
86+ SELECT
8487 a,
8588 COUNT(*)
8689FROM
8790 my_table
8891GROUP BY
8992 a
9093HAVING
91- COUNT(*) > 1"#
94+ COUNT(*) > 1
95+ "#
96+ . trim( )
9297 ) ;
9398}
9499
95100#[ test]
96101fn test_pretty_print_cte ( ) {
97- let sql = "WITH cte AS (SELECT a, b FROM my_table) SELECT * FROM cte" ;
98- let ast = Parser :: parse_sql ( & GenericDialect { } , sql) . unwrap ( ) ;
99- let pretty = format ! ( "{:#}" , ast[ 0 ] ) ;
100102 assert_eq ! (
101- pretty,
102- r#"WITH cte AS (
103+ parse_and_format( "WITH cte AS (SELECT a, b FROM my_table) SELECT * FROM cte" ) ,
104+ r#"
105+ WITH cte AS (
103106 SELECT
104107 a,
105108 b
@@ -109,18 +112,18 @@ fn test_pretty_print_cte() {
109112SELECT
110113 *
111114FROM
112- cte"#
115+ cte
116+ "#
117+ . trim( )
113118 ) ;
114119}
115120
116121#[ test]
117122fn test_pretty_print_case_when ( ) {
118- let sql = "SELECT CASE WHEN x > 0 THEN 'positive' WHEN x < 0 THEN 'negative' ELSE 'zero' END FROM my_table" ;
119- let ast = Parser :: parse_sql ( & GenericDialect { } , sql) . unwrap ( ) ;
120- let pretty = format ! ( "{:#}" , ast[ 0 ] ) ;
121123 assert_eq ! (
122- pretty,
123- r#"SELECT
124+ parse_and_format( "SELECT CASE WHEN x > 0 THEN 'positive' WHEN x < 0 THEN 'negative' ELSE 'zero' END FROM my_table" ) ,
125+ r#"
126+ SELECT
124127 CASE
125128 WHEN x > 0 THEN
126129 'positive'
@@ -130,25 +133,25 @@ fn test_pretty_print_case_when() {
130133 'zero'
131134 END
132135FROM
133- my_table"#
136+ my_table
137+ "# . trim( )
134138 ) ;
135139}
136140
137141#[ test]
138142fn test_pretty_print_window_function ( ) {
139- let sql = "SELECT id, value, ROW_NUMBER() OVER (PARTITION BY category ORDER BY value DESC) as rank FROM my_table" ;
140- let ast = Parser :: parse_sql ( & GenericDialect { } , sql) . unwrap ( ) ;
141- let pretty = format ! ( "{:#}" , ast[ 0 ] ) ;
142143 assert_eq ! (
143- pretty,
144- r#"SELECT
144+ parse_and_format( "SELECT id, value, ROW_NUMBER() OVER (PARTITION BY category ORDER BY value DESC) as rank FROM my_table" ) ,
145+ r#"
146+ SELECT
145147 id,
146148 value,
147149 ROW_NUMBER() OVER (
148150 PARTITION BY category
149151 ORDER BY value DESC
150152 ) AS rank
151153FROM
152- my_table"#
154+ my_table
155+ "# . trim( )
153156 ) ;
154157}
0 commit comments