sqlparser_mysql/base/
display_util.rs

1use base::CommonParser;
2
3pub struct DisplayUtil;
4
5impl DisplayUtil {
6    /// add `` to string if string is a MySQL keyword
7    pub fn escape_if_keyword(s: &str) -> String {
8        if CommonParser::sql_keyword(s).is_ok() {
9            format!("`{}`", s)
10        } else {
11            s.to_owned()
12        }
13    }
14}
15
16#[cfg(test)]
17mod tests {
18    use crate::{ParseConfig, Parser};
19
20    #[test]
21    fn escaped_keyword() {
22        let str0 = "delete from articles where `key`='aaa'";
23        let str1 = "delete from `where` where user=?";
24
25        let expected0 = "DELETE FROM articles WHERE `key` = 'aaa'";
26        let expected1 = "DELETE FROM `where` WHERE user = ?";
27        let config = ParseConfig::default();
28        let res0 = Parser::parse(&config, str0);
29        let res1 = Parser::parse(&config, str1);
30        assert!(res0.is_ok());
31        assert!(res1.is_ok());
32        assert_eq!(expected0, format!("{}", res0.unwrap()));
33        assert_eq!(expected1, format!("{}", res1.unwrap()));
34    }
35}