12
12
// See the License for the specific language governing permissions and
13
13
// limitations under the License.
14
14
15
- use databend_common_ast:: {
16
- ast:: pretty_statement,
17
- parser:: { parse_sql, token:: TokenKind , tokenize_sql, Dialect } ,
18
- } ;
15
+ use databend_common_ast:: parser:: { parse_sql, token:: TokenKind , tokenize_sql, Dialect } ;
16
+ use sqlformat:: { FormatOptions , QueryParams } ;
19
17
20
18
use crate :: session:: QueryKind ;
21
19
@@ -24,9 +22,22 @@ pub fn format_query(query: &str) -> String {
24
22
if kind == QueryKind :: Put || kind == QueryKind :: Get {
25
23
return query. to_owned ( ) ;
26
24
}
25
+
27
26
if let Ok ( tokens) = databend_common_ast:: parser:: tokenize_sql ( query) {
28
27
if let Ok ( ( stmt, _) ) = parse_sql ( & tokens, Dialect :: Experimental ) {
29
- return pretty_statement ( stmt, 80 ) . unwrap ( ) ;
28
+ let options = FormatOptions :: default ( ) ;
29
+
30
+ let pretty_sql = sqlformat:: format ( query, & QueryParams :: None , & options) ;
31
+ // if pretty sql could be parsed into same stmt, return pretty sql
32
+ if let Ok ( pretty_tokens) = databend_common_ast:: parser:: tokenize_sql ( & pretty_sql) {
33
+ if let Ok ( ( pretty_stmt, _) ) = parse_sql ( & pretty_tokens, Dialect :: Experimental ) {
34
+ if stmt. to_string ( ) == pretty_stmt. to_string ( ) {
35
+ return pretty_sql;
36
+ }
37
+ }
38
+ }
39
+
40
+ return stmt. to_string ( ) ;
30
41
}
31
42
}
32
43
query. to_string ( )
0 commit comments