]> git.phdru.name Git - sqlconvert.git/blob - scripts/print_subtree.py
Find an error in parse tree
[sqlconvert.git] / scripts / print_subtree.py
1 #! /usr/bin/env python
2 from __future__ import print_function
3
4 import sys
5 from sqlparse import parse
6 from mysql2sql.print_tokens import print_tokens
7 from mysql2sql.process_tokens import requote_names, find_error
8
9
10 def test():
11     for query in (
12         "SELECT * FROM `mytable`; -- line-comment",
13         "INSERT into /* inline comment */ mytable VALUES (1, 'one')",
14         "/*! directive*/ INSERT INTO `MyTable` (`Id`, `Name`) "
15         "VALUES (1, 'one')"
16     ):
17         for parsed in parse(query):
18             print("----------")
19             if find_error(parsed):
20                 print("ERRORS IN QUERY")
21             requote_names(parsed)
22             print_tokens(parsed)
23             print()
24             parsed._pprint_tree()
25     print("----------")
26
27
28 def main(*queries):
29     for query in queries:
30         for parsed in parse(query):
31             print("----------")
32             if find_error(parsed):
33                 print("ERRORS IN QUERY")
34             requote_names(parsed)
35             print_tokens(parsed)
36             print()
37             parsed._pprint_tree()
38         print("----------")
39
40 if __name__ == '__main__':
41     if len(sys.argv) <= 1:
42         sys.exit("Usage: %s [-t | sql_query_string [; sql_query_string ...]]" %
43                  sys.argv[0])
44     if sys.argv[1] == '-t':
45         test()
46     else:
47         queries = sys.argv[1:]
48         main(*queries)