|
| 1 | +import itertools |
1 | 2 | import logging
|
2 | 3 | from re import compile, escape
|
3 | 4 | from collections import Counter
|
4 | 5 |
|
5 | 6 | from prompt_toolkit.completion import Completer, Completion
|
| 7 | +from pygments.lexers._mysql_builtins import \ |
| 8 | + MYSQL_DATATYPES, \ |
| 9 | + MYSQL_FUNCTIONS, \ |
| 10 | + MYSQL_KEYWORDS |
6 | 11 |
|
7 | 12 | from .packages.completion_engine import suggest_type
|
8 | 13 | from .packages.parseutils import last_word
|
|
13 | 18 |
|
14 | 19 |
|
15 | 20 | class SQLCompleter(Completer):
|
16 |
| - keywords = ['ACCESS', 'ADD', 'ALL', 'ALTER TABLE', 'AND', 'ANY', 'AS', |
17 |
| - 'ASC', 'AUTO_INCREMENT', 'BEFORE', 'BEGIN', 'BETWEEN', |
18 |
| - 'BIGINT', 'BINARY', 'BY', 'CASE', 'CHANGE MASTER TO', 'CHAR', |
19 |
| - 'CHARACTER SET', 'CHECK', 'COLLATE', 'COLUMN', 'COMMENT', |
20 |
| - 'COMMIT', 'CONSTRAINT', 'CREATE', 'CURRENT', |
21 |
| - 'CURRENT_TIMESTAMP', 'DATABASE', 'DATE', 'DECIMAL', 'DEFAULT', |
22 |
| - 'DELETE FROM', 'DESC', 'DESCRIBE', 'DROP', |
23 |
| - 'ELSE', 'END', 'ENGINE', 'ESCAPE', 'EXISTS', 'FILE', 'FLOAT', |
24 |
| - 'FOR', 'FOREIGN KEY', 'FORMAT', 'FROM', 'FULL', 'FUNCTION', |
25 |
| - 'GRANT', 'GROUP BY', 'HAVING', 'HOST', 'IDENTIFIED', 'IN', |
26 |
| - 'INCREMENT', 'INDEX', 'INSERT INTO', 'INT', 'INTEGER', |
27 |
| - 'INTERVAL', 'INTO', 'IS', 'JOIN', 'KEY', 'LEFT', 'LEVEL', |
28 |
| - 'LIKE', 'LIMIT', 'LOCK', 'LOGS', 'LONG', 'MASTER', |
29 |
| - 'MEDIUMINT', 'MODE', 'MODIFY', 'NOT', 'NULL', 'NUMBER', |
30 |
| - 'OFFSET', 'ON', 'OPTION', 'OR', 'ORDER BY', 'OUTER', 'OWNER', |
31 |
| - 'PASSWORD', 'PORT', 'PRIMARY', 'PRIVILEGES', 'PROCESSLIST', |
32 |
| - 'PURGE', 'REFERENCES', 'REGEXP', 'RENAME', 'REPAIR', 'RESET', |
33 |
| - 'REVOKE', 'RIGHT', 'ROLLBACK', 'ROW', 'ROWS', 'ROW_FORMAT', |
34 |
| - 'SAVEPOINT', 'SELECT', 'SESSION', 'SET', 'SHARE', 'SHOW', |
35 |
| - 'SLAVE', 'SMALLINT', 'SMALLINT', 'START', 'STOP', 'TABLE', |
36 |
| - 'THEN', 'TINYINT', 'TO', 'TRANSACTION', 'TRIGGER', 'TRUNCATE', |
37 |
| - 'UNION', 'UNIQUE', 'UNSIGNED', 'UPDATE', 'USE', 'USER', |
38 |
| - 'USING', 'VALUES', 'VARCHAR', 'VIEW', 'WHEN', 'WHERE', 'WITH'] |
39 |
| - |
40 |
| - functions = ['AVG', 'CONCAT', 'COUNT', 'DISTINCT', 'FIRST', 'FORMAT', |
41 |
| - 'FROM_UNIXTIME', 'LAST', 'LCASE', 'LEN', 'MAX', 'MID', |
42 |
| - 'MIN', 'NOW', 'ROUND', 'SUM', 'TOP', 'UCASE', 'UNIX_TIMESTAMP'] |
| 21 | + keywords = [x.upper() for x in itertools.chain.from_iterable([ |
| 22 | + MYSQL_DATATYPES, MYSQL_KEYWORDS, |
| 23 | + ['ALTER TABLE', 'CHANGE MASTER TO', 'CHARACTER SET', 'DELETE FROM', |
| 24 | + 'FOREIGN KEY', 'GROUP BY', 'INSERT INTO', 'ORDER BY']])] |
| 25 | + |
| 26 | + functions = [x.upper() for x in MYSQL_FUNCTIONS] |
43 | 27 |
|
44 | 28 | show_items = []
|
45 | 29 |
|
|
0 commit comments