]> git.phdru.name Git - sqlconvert.git/blob - sqlconvert/process_mysql.py
Add MySQL-specific remove_directives() and process_statement()
[sqlconvert.git] / sqlconvert / process_mysql.py
1
2 from sqlparse.sql import Comment
3 from sqlparse import tokens as T
4
5
6 def requote_names(token_list):
7     """Remove backticks, quote non-lowercase identifiers"""
8     for token in token_list.flatten():
9         if token.ttype is T.Name:
10             value = token.value
11             if (value[0] == "`") and (value[-1] == "`"):
12                 value = value[1:-1]
13             if value.islower():
14                 token.normalized = token.value = value
15             else:
16                 token.normalized = token.value = '"%s"' % value
17
18
19 def remove_directives(statement):
20     """Remove /*! directives */ from the first-level"""
21     new_tokens = []
22     for token in statement.tokens:
23         if isinstance(token, Comment):
24             subtokens = token.tokens
25             if subtokens:
26                 comment = subtokens[0]
27                 if comment.ttype is T.Comment.Multiline and \
28                         comment.value.startswith('/*!'):
29                     continue
30         new_tokens.append(token)
31     statement.tokens = new_tokens
32
33
34 def process_statement(statement):
35     requote_names(statement)
36     remove_directives(statement)