1
2
3 __author__ = "Thadeus Burgess <thadeusb@thadeusb.com>"
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 COMMON = set((
27 'SELECT',
28 'INSERT',
29 'DELETE',
30 'UPDATE',
31 'DROP',
32 'CREATE',
33 'ALTER',
34
35 'WHERE',
36 'FROM',
37 'INNER',
38 'JOIN',
39 'AND',
40 'OR',
41 'LIKE',
42 'ON',
43 'IN',
44 'SET',
45
46 'BY',
47 'GROUP',
48 'ORDER',
49 'LEFT',
50 'OUTER',
51
52 'IF',
53 'END',
54 'THEN',
55 'LOOP',
56 'AS',
57 'ELSE',
58 'FOR',
59
60 'CASE',
61 'WHEN',
62 'MIN',
63 'MAX',
64 'DISTINCT',
65 ))
66
67
68 POSTGRESQL = set((
69 'FALSE',
70 'TRUE',
71 'ALL',
72 'ANALYSE',
73 'ANALYZE',
74 'AND',
75 'ANY',
76 'ARRAY',
77 'AS',
78 'ASC',
79 'ASYMMETRIC',
80 'AUTHORIZATION',
81 'BETWEEN',
82 'BIGINT',
83 'BINARY',
84 'BIT',
85 'BOOLEAN',
86 'BOTH',
87 'CASE',
88 'CAST',
89 'CHAR',
90 'CHARACTER',
91 'CHECK',
92 'COALESCE',
93 'COLLATE',
94 'COLUMN',
95 'CONSTRAINT',
96 'CREATE',
97 'CROSS',
98 'CURRENT_CATALOG',
99 'CURRENT_DATE',
100 'CURRENT_ROLE',
101 'CURRENT_SCHEMA',
102 'CURRENT_TIME',
103 'CURRENT_TIMESTAMP',
104 'CURRENT_USER',
105 'DEC',
106 'DECIMAL',
107 'DEFAULT',
108 'DEFERRABLE',
109 'DESC',
110 'DISTINCT',
111 'DO',
112 'ELSE',
113 'END',
114 'EXCEPT',
115 'EXISTS',
116 'EXTRACT',
117 'FETCH',
118 'FLOAT',
119 'FOR',
120 'FOREIGN',
121 'FREEZE',
122 'FROM',
123 'FULL',
124 'GRANT',
125 'GREATEST',
126 'GROUP',
127 'HAVING',
128 'ILIKE',
129 'IN',
130 'INITIALLY',
131 'INNER',
132 'INOUT',
133 'INT',
134 'INTEGER',
135 'INTERSECT',
136 'INTERVAL',
137 'INTO',
138 'IS',
139 'ISNULL',
140 'JOIN',
141 'LEADING',
142 'LEAST',
143 'LEFT',
144 'LIKE',
145 'LIMIT',
146 'LOCALTIME',
147 'LOCALTIMESTAMP',
148 'NATIONAL',
149 'NATURAL',
150 'NCHAR',
151 'NEW',
152 'NONE',
153 'NOT',
154 'NOTNULL',
155 'NULL',
156 'NULLIF',
157 'NUMERIC',
158 'OFF',
159 'OFFSET',
160 'OLD',
161 'ON',
162 'ONLY',
163 'OR',
164 'ORDER',
165 'OUT',
166 'OUTER',
167 'OVERLAPS',
168 'OVERLAY',
169 'PLACING',
170 'POSITION',
171 'PRECISION',
172 'PRIMARY',
173 'REAL',
174 'REFERENCES',
175 'RETURNING',
176 'RIGHT',
177 'ROW',
178 'SELECT',
179 'SESSION_USER',
180 'SETOF',
181 'SIMILAR',
182 'SMALLINT',
183 'SOME',
184 'SUBSTRING',
185 'SYMMETRIC',
186 'TABLE',
187 'THEN',
188 'TIME',
189 'TIMESTAMP',
190 'TO',
191 'TRAILING',
192 'TREAT',
193 'TRIM',
194 'UNION',
195 'UNIQUE',
196 'USER',
197 'USING',
198 'VALUES',
199 'VARCHAR',
200 'VARIADIC',
201 'VERBOSE',
202 'WHEN',
203 'WHERE',
204 'WITH',
205 'XMLATTRIBUTES',
206 'XMLCONCAT',
207 'XMLELEMENT',
208 'XMLFOREST',
209 'XMLPARSE',
210 'XMLPI',
211 'XMLROOT',
212 'XMLSERIALIZE',
213 ))
214
215
216 POSTGRESQL_NONRESERVED = set((
217 'A',
218 'ABORT',
219 'ABS',
220 'ABSENT',
221 'ABSOLUTE',
222 'ACCESS',
223 'ACCORDING',
224 'ACTION',
225 'ADA',
226 'ADD',
227 'ADMIN',
228 'AFTER',
229 'AGGREGATE',
230 'ALIAS',
231 'ALLOCATE',
232 'ALSO',
233 'ALTER',
234 'ALWAYS',
235 'ARE',
236 'ARRAY_AGG',
237 'ASENSITIVE',
238 'ASSERTION',
239 'ASSIGNMENT',
240 'AT',
241 'ATOMIC',
242 'ATTRIBUTE',
243 'ATTRIBUTES',
244 'AVG',
245 'BACKWARD',
246 'BASE64',
247 'BEFORE',
248 'BEGIN',
249 'BERNOULLI',
250 'BIT_LENGTH',
251 'BITVAR',
252 'BLOB',
253 'BOM',
254 'BREADTH',
255 'BY',
256 'C',
257 'CACHE',
258 'CALL',
259 'CALLED',
260 'CARDINALITY',
261 'CASCADE',
262 'CASCADED',
263 'CATALOG',
264 'CATALOG_NAME',
265 'CEIL',
266 'CEILING',
267 'CHAIN',
268 'CHAR_LENGTH',
269 'CHARACTER_LENGTH',
270 'CHARACTER_SET_CATALOG',
271 'CHARACTER_SET_NAME',
272 'CHARACTER_SET_SCHEMA',
273 'CHARACTERISTICS',
274 'CHARACTERS',
275 'CHECKED',
276 'CHECKPOINT',
277 'CLASS',
278 'CLASS_ORIGIN',
279 'CLOB',
280 'CLOSE',
281 'CLUSTER',
282 'COBOL',
283 'COLLATION',
284 'COLLATION_CATALOG',
285 'COLLATION_NAME',
286 'COLLATION_SCHEMA',
287 'COLLECT',
288 'COLUMN_NAME',
289 'COLUMNS',
290 'COMMAND_FUNCTION',
291 'COMMAND_FUNCTION_CODE',
292 'COMMENT',
293 'COMMIT',
294 'COMMITTED',
295 'COMPLETION',
296 'CONCURRENTLY',
297 'CONDITION',
298 'CONDITION_NUMBER',
299 'CONFIGURATION',
300 'CONNECT',
301 'CONNECTION',
302 'CONNECTION_NAME',
303 'CONSTRAINT_CATALOG',
304 'CONSTRAINT_NAME',
305 'CONSTRAINT_SCHEMA',
306 'CONSTRAINTS',
307 'CONSTRUCTOR',
308 'CONTAINS',
309 'CONTENT',
310 'CONTINUE',
311 'CONVERSION',
312 'CONVERT',
313 'COPY',
314 'CORR',
315 'CORRESPONDING',
316 'COST',
317 'COUNT',
318 'COVAR_POP',
319 'COVAR_SAMP',
320 'CREATEDB',
321 'CREATEROLE',
322 'CREATEUSER',
323 'CSV',
324 'CUBE',
325 'CUME_DIST',
326 'CURRENT',
327 'CURRENT_DEFAULT_TRANSFORM_GROUP',
328 'CURRENT_PATH',
329 'CURRENT_TRANSFORM_GROUP_FOR_TYPE',
330 'CURSOR',
331 'CURSOR_NAME',
332 'CYCLE',
333 'DATA',
334 'DATABASE',
335 'DATE',
336 'DATETIME_INTERVAL_CODE',
337 'DATETIME_INTERVAL_PRECISION',
338 'DAY',
339 'DEALLOCATE',
340 'DECLARE',
341 'DEFAULTS',
342 'DEFERRED',
343 'DEFINED',
344 'DEFINER',
345 'DEGREE',
346 'DELETE',
347 'DELIMITER',
348 'DELIMITERS',
349 'DENSE_RANK',
350 'DEPTH',
351 'DEREF',
352 'DERIVED',
353 'DESCRIBE',
354 'DESCRIPTOR',
355 'DESTROY',
356 'DESTRUCTOR',
357 'DETERMINISTIC',
358 'DIAGNOSTICS',
359 'DICTIONARY',
360 'DISABLE',
361 'DISCARD',
362 'DISCONNECT',
363 'DISPATCH',
364 'DOCUMENT',
365 'DOMAIN',
366 'DOUBLE',
367 'DROP',
368 'DYNAMIC',
369 'DYNAMIC_FUNCTION',
370 'DYNAMIC_FUNCTION_CODE',
371 'EACH',
372 'ELEMENT',
373 'EMPTY',
374 'ENABLE',
375 'ENCODING',
376 'ENCRYPTED',
377 'END-EXEC',
378 'ENUM',
379 'EQUALS',
380 'ESCAPE',
381 'EVERY',
382 'EXCEPTION',
383 'EXCLUDE',
384 'EXCLUDING',
385 'EXCLUSIVE',
386 'EXEC',
387 'EXECUTE',
388 'EXISTING',
389 'EXP',
390 'EXPLAIN',
391 'EXTERNAL',
392 'FAMILY',
393 'FILTER',
394 'FINAL',
395 'FIRST',
396 'FIRST_VALUE',
397 'FLAG',
398 'FLOOR',
399 'FOLLOWING',
400 'FORCE',
401 'FORTRAN',
402 'FORWARD',
403 'FOUND',
404 'FREE',
405 'FUNCTION',
406 'FUSION',
407 'G',
408 'GENERAL',
409 'GENERATED',
410 'GET',
411 'GLOBAL',
412 'GO',
413 'GOTO',
414 'GRANTED',
415 'GROUPING',
416 'HANDLER',
417 'HEADER',
418 'HEX',
419 'HIERARCHY',
420 'HOLD',
421 'HOST',
422 'HOUR',
423
424 'IDENTITY',
425 'IF',
426 'IGNORE',
427 'IMMEDIATE',
428 'IMMUTABLE',
429 'IMPLEMENTATION',
430 'IMPLICIT',
431 'INCLUDING',
432 'INCREMENT',
433 'INDENT',
434 'INDEX',
435 'INDEXES',
436 'INDICATOR',
437 'INFIX',
438 'INHERIT',
439 'INHERITS',
440 'INITIALIZE',
441 'INPUT',
442 'INSENSITIVE',
443 'INSERT',
444 'INSTANCE',
445 'INSTANTIABLE',
446 'INSTEAD',
447 'INTERSECTION',
448 'INVOKER',
449 'ISOLATION',
450 'ITERATE',
451 'K',
452 'KEY',
453 'KEY_MEMBER',
454 'KEY_TYPE',
455 'LAG',
456 'LANCOMPILER',
457 'LANGUAGE',
458 'LARGE',
459 'LAST',
460 'LAST_VALUE',
461 'LATERAL',
462 'LC_COLLATE',
463 'LC_CTYPE',
464 'LEAD',
465 'LENGTH',
466 'LESS',
467 'LEVEL',
468 'LIKE_REGEX',
469 'LISTEN',
470 'LN',
471 'LOAD',
472 'LOCAL',
473 'LOCATION',
474 'LOCATOR',
475 'LOCK',
476 'LOGIN',
477 'LOWER',
478 'M',
479 'MAP',
480 'MAPPING',
481 'MATCH',
482 'MATCHED',
483 'MAX',
484 'MAX_CARDINALITY',
485 'MAXVALUE',
486 'MEMBER',
487 'MERGE',
488 'MESSAGE_LENGTH',
489 'MESSAGE_OCTET_LENGTH',
490 'MESSAGE_TEXT',
491 'METHOD',
492 'MIN',
493 'MINUTE',
494 'MINVALUE',
495 'MOD',
496 'MODE',
497 'MODIFIES',
498 'MODIFY',
499 'MODULE',
500 'MONTH',
501 'MORE',
502 'MOVE',
503 'MULTISET',
504 'MUMPS',
505
506 'NAMES',
507 'NAMESPACE',
508 'NCLOB',
509 'NESTING',
510 'NEXT',
511 'NFC',
512 'NFD',
513 'NFKC',
514 'NFKD',
515 'NIL',
516 'NO',
517 'NOCREATEDB',
518 'NOCREATEROLE',
519 'NOCREATEUSER',
520 'NOINHERIT',
521 'NOLOGIN',
522 'NORMALIZE',
523 'NORMALIZED',
524 'NOSUPERUSER',
525 'NOTHING',
526 'NOTIFY',
527 'NOWAIT',
528 'NTH_VALUE',
529 'NTILE',
530 'NULLABLE',
531 'NULLS',
532 'NUMBER',
533 'OBJECT',
534 'OCCURRENCES_REGEX',
535 'OCTET_LENGTH',
536 'OCTETS',
537 'OF',
538 'OIDS',
539 'OPEN',
540 'OPERATION',
541 'OPERATOR',
542 'OPTION',
543 'OPTIONS',
544 'ORDERING',
545 'ORDINALITY',
546 'OTHERS',
547 'OUTPUT',
548 'OVER',
549 'OVERRIDING',
550 'OWNED',
551 'OWNER',
552 'P',
553 'PAD',
554 'PARAMETER',
555 'PARAMETER_MODE',
556 'PARAMETER_NAME',
557 'PARAMETER_ORDINAL_POSITION',
558 'PARAMETER_SPECIFIC_CATALOG',
559 'PARAMETER_SPECIFIC_NAME',
560 'PARAMETER_SPECIFIC_SCHEMA',
561 'PARAMETERS',
562 'PARSER',
563 'PARTIAL',
564 'PARTITION',
565 'PASCAL',
566 'PASSING',
567
568 'PATH',
569 'PERCENT_RANK',
570 'PERCENTILE_CONT',
571 'PERCENTILE_DISC',
572 'PLANS',
573 'PLI',
574 'POSITION_REGEX',
575 'POSTFIX',
576 'POWER',
577 'PRECEDING',
578 'PREFIX',
579 'PREORDER',
580 'PREPARE',
581 'PREPARED',
582 'PRESERVE',
583 'PRIOR',
584 'PRIVILEGES',
585 'PROCEDURAL',
586 'PROCEDURE',
587 'PUBLIC',
588 'QUOTE',
589 'RANGE',
590 'RANK',
591 'READ',
592 'READS',
593 'REASSIGN',
594 'RECHECK',
595 'RECURSIVE',
596 'REF',
597 'REFERENCING',
598 'REGR_AVGX',
599 'REGR_AVGY',
600 'REGR_COUNT',
601 'REGR_INTERCEPT',
602 'REGR_R2',
603 'REGR_SLOPE',
604 'REGR_SXX',
605 'REGR_SXY',
606 'REGR_SYY',
607 'REINDEX',
608 'RELATIVE',
609 'RELEASE',
610 'RENAME',
611 'REPEATABLE',
612 'REPLACE',
613 'REPLICA',
614 'RESET',
615 'RESPECT',
616 'RESTART',
617 'RESTRICT',
618 'RESULT',
619 'RETURN',
620 'RETURNED_CARDINALITY',
621 'RETURNED_LENGTH',
622 'RETURNED_OCTET_LENGTH',
623 'RETURNED_SQLSTATE',
624 'RETURNS',
625 'REVOKE',
626
627 'ROLLBACK',
628 'ROLLUP',
629 'ROUTINE',
630 'ROUTINE_CATALOG',
631 'ROUTINE_NAME',
632 'ROUTINE_SCHEMA',
633 'ROW_COUNT',
634 'ROW_NUMBER',
635 'ROWS',
636 'RULE',
637 'SAVEPOINT',
638 'SCALE',
639 'SCHEMA',
640 'SCHEMA_NAME',
641 'SCOPE',
642 'SCOPE_CATALOG',
643 'SCOPE_NAME',
644 'SCOPE_SCHEMA',
645 'SCROLL',
646 'SEARCH',
647 'SECOND',
648 'SECTION',
649 'SECURITY',
650 'SELF',
651 'SENSITIVE',
652 'SEQUENCE',
653 'SERIALIZABLE',
654 'SERVER',
655 'SERVER_NAME',
656 'SESSION',
657 'SET',
658 'SETS',
659 'SHARE',
660 'SHOW',
661 'SIMPLE',
662 'SIZE',
663 'SOURCE',
664 'SPACE',
665 'SPECIFIC',
666 'SPECIFIC_NAME',
667 'SPECIFICTYPE',
668 'SQL',
669 'SQLCODE',
670 'SQLERROR',
671 'SQLEXCEPTION',
672 'SQLSTATE',
673 'SQLWARNING',
674 'SQRT',
675 'STABLE',
676 'STANDALONE',
677 'START',
678 'STATE',
679 'STATEMENT',
680 'STATIC',
681 'STATISTICS',
682 'STDDEV_POP',
683 'STDDEV_SAMP',
684 'STDIN',
685 'STDOUT',
686 'STORAGE',
687 'STRICT',
688 'STRIP',
689 'STRUCTURE',
690 'STYLE',
691 'SUBCLASS_ORIGIN',
692 'SUBLIST',
693 'SUBMULTISET',
694 'SUBSTRING_REGEX',
695 'SUM',
696 'SUPERUSER',
697 'SYSID',
698 'SYSTEM',
699 'SYSTEM_USER',
700 'T',
701
702 'TABLESAMPLE',
703 'TABLESPACE',
704 'TEMP',
705 'TEMPLATE',
706 'TEMPORARY',
707 'TERMINATE',
708 'TEXT',
709 'THAN',
710 'TIES',
711 'TIMEZONE_HOUR',
712 'TIMEZONE_MINUTE',
713 'TOP_LEVEL_COUNT',
714 'TRANSACTION',
715 'TRANSACTION_ACTIVE',
716 'TRANSACTIONS_COMMITTED',
717 'TRANSACTIONS_ROLLED_BACK',
718 'TRANSFORM',
719 'TRANSFORMS',
720 'TRANSLATE',
721 'TRANSLATE_REGEX',
722 'TRANSLATION',
723 'TRIGGER',
724 'TRIGGER_CATALOG',
725 'TRIGGER_NAME',
726 'TRIGGER_SCHEMA',
727 'TRIM_ARRAY',
728 'TRUNCATE',
729 'TRUSTED',
730 'TYPE',
731 'UESCAPE',
732 'UNBOUNDED',
733 'UNCOMMITTED',
734 'UNDER',
735 'UNENCRYPTED',
736 'UNKNOWN',
737 'UNLISTEN',
738 'UNNAMED',
739 'UNNEST',
740 'UNTIL',
741 'UNTYPED',
742 'UPDATE',
743 'UPPER',
744 'URI',
745 'USAGE',
746 'USER_DEFINED_TYPE_CATALOG',
747 'USER_DEFINED_TYPE_CODE',
748 'USER_DEFINED_TYPE_NAME',
749 'USER_DEFINED_TYPE_SCHEMA',
750 'VACUUM',
751 'VALID',
752 'VALIDATOR',
753 'VALUE',
754 'VAR_POP',
755 'VAR_SAMP',
756 'VARBINARY',
757 'VARIABLE',
758 'VARYING',
759 'VERSION',
760 'VIEW',
761 'VOLATILE',
762 'WHENEVER',
763 'WHITESPACE',
764 'WIDTH_BUCKET',
765 'WINDOW',
766 'WITHIN',
767 'WITHOUT',
768 'WORK',
769 'WRAPPER',
770 'WRITE',
771 'XML',
772 'XMLAGG',
773 'XMLBINARY',
774 'XMLCAST',
775 'XMLCOMMENT',
776 'XMLDECLARATION',
777 'XMLDOCUMENT',
778 'XMLEXISTS',
779 'XMLITERATE',
780 'XMLNAMESPACES',
781 'XMLQUERY',
782 'XMLSCHEMA',
783 'XMLTABLE',
784 'XMLTEXT',
785 'XMLVALIDATE',
786 'YEAR',
787 'YES',
788 'ZONE',
789 ))
790
791
792 FIREBIRD = set((
793 'ABS',
794 'ACTIVE',
795 'ADMIN',
796 'AFTER',
797 'ASCENDING',
798 'AUTO',
799 'AUTODDL',
800 'BASED',
801 'BASENAME',
802 'BASE_NAME',
803 'BEFORE',
804 'BIT_LENGTH',
805 'BLOB',
806 'BLOBEDIT',
807 'BOOLEAN',
808 'BOTH',
809 'BUFFER',
810 'CACHE',
811 'CHAR_LENGTH',
812 'CHARACTER_LENGTH',
813 'CHECK_POINT_LEN',
814 'CHECK_POINT_LENGTH',
815 'CLOSE',
816 'COMMITTED',
817 'COMPILETIME',
818 'COMPUTED',
819 'CONDITIONAL',
820 'CONNECT',
821 'CONTAINING',
822 'CROSS',
823 'CSTRING',
824 'CURRENT_CONNECTION',
825 'CURRENT_ROLE',
826 'CURRENT_TRANSACTION',
827 'CURRENT_USER',
828 'DATABASE',
829 'DB_KEY',
830 'DEBUG',
831 'DESCENDING',
832 'DISCONNECT',
833 'DISPLAY',
834 'DO',
835 'ECHO',
836 'EDIT',
837 'ENTRY_POINT',
838 'EVENT',
839 'EXIT',
840 'EXTERN',
841 'FALSE',
842 'FETCH',
843 'FILE',
844 'FILTER',
845 'FREE_IT',
846 'FUNCTION',
847 'GDSCODE',
848 'GENERATOR',
849 'GEN_ID',
850 'GLOBAL',
851 'GROUP_COMMIT_WAIT',
852 'GROUP_COMMIT_WAIT_TIME',
853 'HELP',
854 'IF',
855 'INACTIVE',
856 'INDEX',
857 'INIT',
858 'INPUT_TYPE',
859 'INSENSITIVE',
860 'ISQL',
861 'LC_MESSAGES',
862 'LC_TYPE',
863 'LEADING',
864 'LENGTH',
865 'LEV',
866 'LOGFILE',
867 'LOG_BUFFER_SIZE',
868 'LOG_BUF_SIZE',
869 'LONG',
870 'LOWER',
871 'MANUAL',
872 'MAXIMUM',
873 'MAXIMUM_SEGMENT',
874 'MAX_SEGMENT',
875 'MERGE',
876 'MESSAGE',
877 'MINIMUM',
878 'MODULE_NAME',
879 'NOAUTO',
880 'NUM_LOG_BUFS',
881 'NUM_LOG_BUFFERS',
882 'OCTET_LENGTH',
883 'OPEN',
884 'OUTPUT_TYPE',
885 'OVERFLOW',
886 'PAGE',
887 'PAGELENGTH',
888 'PAGES',
889 'PAGE_SIZE',
890 'PARAMETER',
891
892 'PLAN',
893 'POST_EVENT',
894 'QUIT',
895 'RAW_PARTITIONS',
896 'RDB$DB_KEY',
897 'RECORD_VERSION',
898 'RECREATE',
899 'RECURSIVE',
900 'RELEASE',
901 'RESERV',
902 'RESERVING',
903 'RETAIN',
904 'RETURN',
905 'RETURNING_VALUES',
906 'RETURNS',
907
908 'ROW_COUNT',
909 'ROWS',
910 'RUNTIME',
911 'SAVEPOINT',
912 'SECOND',
913 'SENSITIVE',
914 'SHADOW',
915 'SHARED',
916 'SHELL',
917 'SHOW',
918 'SINGULAR',
919 'SNAPSHOT',
920 'SORT',
921 'STABILITY',
922 'START',
923 'STARTING',
924 'STARTS',
925 'STATEMENT',
926 'STATIC',
927 'STATISTICS',
928 'SUB_TYPE',
929 'SUSPEND',
930 'TERMINATOR',
931 'TRAILING',
932 'TRIGGER',
933 'TRIM',
934 'TRUE',
935 'TYPE',
936 'UNCOMMITTED',
937 'UNKNOWN',
938 'USING',
939 'VARIABLE',
940 'VERSION',
941 'WAIT',
942 'WEEKDAY',
943 'WHILE',
944 'YEARDAY',
945 ))
946 FIREBIRD_NONRESERVED = set((
947 'BACKUP',
948 'BLOCK',
949 'COALESCE',
950 'COLLATION',
951 'COMMENT',
952 'DELETING',
953 'DIFFERENCE',
954 'IIF',
955 'INSERTING',
956 'LAST',
957 'LEAVE',
958 'LOCK',
959 'NEXT',
960 'NULLIF',
961 'NULLS',
962 'RESTART',
963 'RETURNING',
964 'SCALAR_ARRAY',
965 'SEQUENCE',
966 'STATEMENT',
967 'UPDATING',
968 'ABS',
969 'ACCENT',
970 'ACOS',
971 'ALWAYS',
972 'ASCII_CHAR',
973 'ASCII_VAL',
974 'ASIN',
975 'ATAN',
976 'ATAN2',
977 'BACKUP',
978 'BIN_AND',
979 'BIN_OR',
980 'BIN_SHL',
981 'BIN_SHR',
982 'BIN_XOR',
983 'BLOCK',
984 'CEIL',
985 'CEILING',
986 'COLLATION',
987 'COMMENT',
988 'COS',
989 'COSH',
990 'COT',
991 'DATEADD',
992 'DATEDIFF',
993 'DECODE',
994 'DIFFERENCE',
995 'EXP',
996 'FLOOR',
997 'GEN_UUID',
998 'GENERATED',
999 'HASH',
1000 'IIF',
1001 'LIST',
1002 'LN',
1003 'LOG',
1004 'LOG10',
1005 'LPAD',
1006 'MATCHED',
1007 'MATCHING',
1008 'MAXVALUE',
1009 'MILLISECOND',
1010 'MINVALUE',
1011 'MOD',
1012 'NEXT',
1013 'OVERLAY',
1014 'PAD',
1015 'PI',
1016 'PLACING',
1017 'POWER',
1018 'PRESERVE',
1019 'RAND',
1020 'REPLACE',
1021 'RESTART',
1022 'RETURNING',
1023 'REVERSE',
1024 'ROUND',
1025 'RPAD',
1026 'SCALAR_ARRAY',
1027 'SEQUENCE',
1028 'SIGN',
1029 'SIN',
1030 'SINH',
1031 'SPACE',
1032 'SQRT',
1033 'TAN',
1034 'TANH',
1035 'TEMPORARY',
1036 'TRUNC',
1037 'WEEK',
1038 ))
1039
1040
1041 MYSQL = set((
1042 'ACCESSIBLE',
1043 'ADD',
1044 'ALL',
1045 'ALTER',
1046 'ANALYZE',
1047 'AND',
1048 'AS',
1049 'ASC',
1050 'ASENSITIVE',
1051 'BEFORE',
1052 'BETWEEN',
1053 'BIGINT',
1054 'BINARY',
1055 'BLOB',
1056 'BOTH',
1057 'BY',
1058 'CALL',
1059 'CASCADE',
1060 'CASE',
1061 'CHANGE',
1062 'CHAR',
1063 'CHARACTER',
1064 'CHECK',
1065 'COLLATE',
1066 'COLUMN',
1067 'CONDITION',
1068 'CONSTRAINT',
1069 'CONTINUE',
1070 'CONVERT',
1071 'CREATE',
1072 'CROSS',
1073 'CURRENT_DATE',
1074 'CURRENT_TIME',
1075 'CURRENT_TIMESTAMP',
1076 'CURRENT_USER',
1077 'CURSOR',
1078 'DATABASE',
1079 'DATABASES',
1080 'DAY_HOUR',
1081 'DAY_MICROSECOND',
1082 'DAY_MINUTE',
1083 'DAY_SECOND',
1084 'DEC',
1085 'DECIMAL',
1086 'DECLARE',
1087 'DEFAULT',
1088 'DELAYED',
1089 'DELETE',
1090 'DESC',
1091 'DESCRIBE',
1092 'DETERMINISTIC',
1093 'DISTINCT',
1094 'DISTINCTROW',
1095 'DIV',
1096 'DOUBLE',
1097 'DROP',
1098 'DUAL',
1099 'EACH',
1100 'ELSE',
1101 'ELSEIF',
1102 'ENCLOSED',
1103 'ESCAPED',
1104 'EXISTS',
1105 'EXIT',
1106 'EXPLAIN',
1107 'FALSE',
1108 'FETCH',
1109 'FLOAT',
1110 'FLOAT4',
1111 'FLOAT8',
1112 'FOR',
1113 'FORCE',
1114 'FOREIGN',
1115 'FROM',
1116 'FULLTEXT',
1117 'GRANT',
1118 'GROUP',
1119 'HAVING',
1120 'HIGH_PRIORITY',
1121 'HOUR_MICROSECOND',
1122 'HOUR_MINUTE',
1123 'HOUR_SECOND',
1124 'IF',
1125 'IGNORE',
1126 'IGNORE_SERVER_IDS',
1127 'IGNORE_SERVER_IDS',
1128 'IN',
1129 'INDEX',
1130 'INFILE',
1131 'INNER',
1132 'INOUT',
1133 'INSENSITIVE',
1134 'INSERT',
1135 'INT',
1136 'INT1',
1137 'INT2',
1138 'INT3',
1139 'INT4',
1140 'INT8',
1141 'INTEGER',
1142 'INTERVAL',
1143 'INTO',
1144 'IS',
1145 'ITERATE',
1146 'JOIN',
1147 'KEY',
1148 'KEYS',
1149 'KILL',
1150 'LEADING',
1151 'LEAVE',
1152 'LEFT',
1153 'LIKE',
1154 'LIMIT',
1155 'LINEAR',
1156 'LINES',
1157 'LOAD',
1158 'LOCALTIME',
1159 'LOCALTIMESTAMP',
1160 'LOCK',
1161 'LONG',
1162 'LONGBLOB',
1163 'LONGTEXT',
1164 'LOOP',
1165 'LOW_PRIORITY',
1166 'MASTER_HEARTBEAT_PERIOD',
1167 'MASTER_HEARTBEAT_PERIOD',
1168 'MASTER_SSL_VERIFY_SERVER_CERT',
1169 'MATCH',
1170 'MAXVALUE',
1171 'MAXVALUE',
1172 'MEDIUMBLOB',
1173 'MEDIUMINT',
1174 'MEDIUMTEXT',
1175 'MIDDLEINT',
1176 'MINUTE_MICROSECOND',
1177 'MINUTE_SECOND',
1178 'MOD',
1179 'MODIFIES',
1180 'NATURAL',
1181 'NO_WRITE_TO_BINLOG',
1182 'NOT',
1183 'NULL',
1184 'NUMERIC',
1185 'ON',
1186 'OPTIMIZE',
1187 'OPTION',
1188 'OPTIONALLY',
1189 'OR',
1190 'ORDER',
1191 'OUT',
1192 'OUTER',
1193 'OUTFILE',
1194 'PRECISION',
1195 'PRIMARY',
1196 'PROCEDURE',
1197 'PURGE',
1198 'RANGE',
1199 'READ',
1200 'READ_WRITE',
1201 'READS',
1202 'REAL',
1203 'REFERENCES',
1204 'REGEXP',
1205 'RELEASE',
1206 'RENAME',
1207 'REPEAT',
1208 'REPLACE',
1209 'REQUIRE',
1210 'RESIGNAL',
1211 'RESIGNAL',
1212 'RESTRICT',
1213 'RETURN',
1214 'REVOKE',
1215 'RIGHT',
1216 'RLIKE',
1217 'SCHEMA',
1218 'SCHEMAS',
1219 'SECOND_MICROSECOND',
1220 'SELECT',
1221 'SENSITIVE',
1222 'SEPARATOR',
1223 'SET',
1224 'SHOW',
1225 'SIGNAL',
1226 'SIGNAL',
1227 'SMALLINT',
1228 'SPATIAL',
1229 'SPECIFIC',
1230 'SQL',
1231 'SQL_BIG_RESULT',
1232 'SQL_CALC_FOUND_ROWS',
1233 'SQL_SMALL_RESULT',
1234 'SQLEXCEPTION',
1235 'SQLSTATE',
1236 'SQLWARNING',
1237 'SSL',
1238 'STARTING',
1239 'STRAIGHT_JOIN',
1240 'TABLE',
1241 'TERMINATED',
1242 'THEN',
1243 'TINYBLOB',
1244 'TINYINT',
1245 'TINYTEXT',
1246 'TO',
1247 'TRAILING',
1248 'TRIGGER',
1249 'TRUE',
1250 'UNDO',
1251 'UNION',
1252 'UNIQUE',
1253 'UNLOCK',
1254 'UNSIGNED',
1255 'UPDATE',
1256 'USAGE',
1257 'USE',
1258 'USING',
1259 'UTC_DATE',
1260 'UTC_TIME',
1261 'UTC_TIMESTAMP',
1262 'VALUES',
1263 'VARBINARY',
1264 'VARCHAR',
1265 'VARCHARACTER',
1266 'VARYING',
1267 'WHEN',
1268 'WHERE',
1269 'WHILE',
1270 'WITH',
1271 'WRITE',
1272 'XOR',
1273 'YEAR_MONTH',
1274 'ZEROFILL',
1275 ))
1276
1277 MSSQL = set((
1278 'ADD',
1279 'ALL',
1280 'ALTER',
1281 'AND',
1282 'ANY',
1283 'AS',
1284 'ASC',
1285 'AUTHORIZATION',
1286 'BACKUP',
1287 'BEGIN',
1288 'BETWEEN',
1289 'BREAK',
1290 'BROWSE',
1291 'BULK',
1292 'BY',
1293 'CASCADE',
1294 'CASE',
1295 'CHECK',
1296 'CHECKPOINT',
1297 'CLOSE',
1298 'CLUSTERED',
1299 'COALESCE',
1300 'COLLATE',
1301 'COLUMN',
1302 'COMMIT',
1303 'COMPUTE',
1304 'CONSTRAINT',
1305 'CONTAINS',
1306 'CONTAINSTABLE',
1307 'CONTINUE',
1308 'CONVERT',
1309 'CREATE',
1310 'CROSS',
1311 'CURRENT',
1312 'CURRENT_DATE',
1313 'CURRENT_TIME',
1314 'CURRENT_TIMESTAMP',
1315 'CURRENT_USER',
1316 'CURSOR',
1317 'DATABASE',
1318 'DBCC',
1319 'DEALLOCATE',
1320 'DECLARE',
1321 'DEFAULT',
1322 'DELETE',
1323 'DENY',
1324 'DESC',
1325 'DISK',
1326 'DISTINCT',
1327 'DISTRIBUTED',
1328 'DOUBLE',
1329 'DROP',
1330 'DUMMY',
1331 'DUMP',
1332 'ELSE',
1333 'END',
1334 'ERRLVL',
1335 'ESCAPE',
1336 'EXCEPT',
1337 'EXEC',
1338 'EXECUTE',
1339 'EXISTS',
1340 'EXIT',
1341 'FETCH',
1342 'FILE',
1343 'FILLFACTOR',
1344 'FOR',
1345 'FOREIGN',
1346 'FREETEXT',
1347 'FREETEXTTABLE',
1348 'FROM',
1349 'FULL',
1350 'FUNCTION',
1351 'GOTO',
1352 'GRANT',
1353 'GROUP',
1354 'HAVING',
1355 'HOLDLOCK',
1356 'IDENTITY',
1357 'IDENTITY_INSERT',
1358 'IDENTITYCOL',
1359 'IF',
1360 'IN',
1361 'INDEX',
1362 'INNER',
1363 'INSERT',
1364 'INTERSECT',
1365 'INTO',
1366 'IS',
1367 'JOIN',
1368 'KEY',
1369 'KILL',
1370 'LEFT',
1371 'LIKE',
1372 'LINENO',
1373 'LOAD',
1374 'NATIONAL ',
1375 'NOCHECK',
1376 'NONCLUSTERED',
1377 'NOT',
1378 'NULL',
1379 'NULLIF',
1380 'OF',
1381 'OFF',
1382 'OFFSETS',
1383 'ON',
1384 'OPEN',
1385 'OPENDATASOURCE',
1386 'OPENQUERY',
1387 'OPENROWSET',
1388 'OPENXML',
1389 'OPTION',
1390 'OR',
1391 'ORDER',
1392 'OUTER',
1393 'OVER',
1394 'PERCENT',
1395 'PLAN',
1396 'PRECISION',
1397 'PRIMARY',
1398 'PRINT',
1399 'PROC',
1400 'PROCEDURE',
1401 'PUBLIC',
1402 'RAISERROR',
1403 'READ',
1404 'READTEXT',
1405 'RECONFIGURE',
1406 'REFERENCES',
1407 'REPLICATION',
1408 'RESTORE',
1409 'RESTRICT',
1410 'RETURN',
1411 'REVOKE',
1412 'RIGHT',
1413 'ROLLBACK',
1414 'ROWCOUNT',
1415 'ROWGUIDCOL',
1416 'RULE',
1417 'SAVE',
1418 'SCHEMA',
1419 'SELECT',
1420 'SESSION_USER',
1421 'SET',
1422 'SETUSER',
1423 'SHUTDOWN',
1424 'SOME',
1425 'STATISTICS',
1426 'SYSTEM_USER',
1427 'TABLE',
1428 'TEXTSIZE',
1429 'THEN',
1430 'TO',
1431 'TOP',
1432 'TRAN',
1433 'TRANSACTION',
1434 'TRIGGER',
1435 'TRUNCATE',
1436 'TSEQUAL',
1437 'UNION',
1438 'UNIQUE',
1439 'UPDATE',
1440 'UPDATETEXT',
1441 'USE',
1442 'USER',
1443 'VALUES',
1444 'VARYING',
1445 'VIEW',
1446 'WAITFOR',
1447 'WHEN',
1448 'WHERE',
1449 'WHILE',
1450 'WITH',
1451 'WRITETEXT',
1452 ))
1453
1454 ORACLE = set((
1455 'ACCESS',
1456 'ADD',
1457 'ALL',
1458 'ALTER',
1459 'AND',
1460 'ANY',
1461 'AS',
1462 'ASC',
1463 'AUDIT',
1464 'BETWEEN',
1465 'BY',
1466 'CHAR',
1467 'CHECK',
1468 'CLUSTER',
1469 'COLUMN',
1470 'COMMENT',
1471 'COMPRESS',
1472 'CONNECT',
1473 'CREATE',
1474 'CURRENT',
1475 'DATE',
1476 'DECIMAL',
1477 'DEFAULT',
1478 'DELETE',
1479 'DESC',
1480 'DISTINCT',
1481 'DROP',
1482 'ELSE',
1483 'EXCLUSIVE',
1484 'EXISTS',
1485 'FILE',
1486 'FLOAT',
1487 'FOR',
1488 'FROM',
1489 'GRANT',
1490 'GROUP',
1491 'HAVING',
1492 'IDENTIFIED',
1493 'IMMEDIATE',
1494 'IN',
1495 'INCREMENT',
1496 'INDEX',
1497 'INITIAL',
1498 'INSERT',
1499 'INTEGER',
1500 'INTERSECT',
1501 'INTO',
1502 'IS',
1503 'LEVEL',
1504 'LIKE',
1505 'LOCK',
1506 'LONG',
1507 'MAXEXTENTS',
1508 'MINUS',
1509 'MLSLABEL',
1510 'MODE',
1511 'MODIFY',
1512 'NOAUDIT',
1513 'NOCOMPRESS',
1514 'NOT',
1515 'NOWAIT',
1516 'NULL',
1517 'NUMBER',
1518 'OF',
1519 'OFFLINE',
1520 'ON',
1521 'ONLINE',
1522 'OPTION',
1523 'OR',
1524 'ORDER',
1525 'PCTFREE',
1526 'PRIOR',
1527 'PRIVILEGES',
1528 'PUBLIC',
1529 'RAW',
1530 'RENAME',
1531 'RESOURCE',
1532 'REVOKE',
1533 'ROW',
1534 'ROWID',
1535 'ROWNUM',
1536 'ROWS',
1537 'SELECT',
1538 'SESSION',
1539 'SET',
1540 'SHARE',
1541 'SIZE',
1542 'SMALLINT',
1543 'START',
1544 'SUCCESSFUL',
1545 'SYNONYM',
1546 'SYSDATE',
1547 'TABLE',
1548 'THEN',
1549 'TO',
1550 'TRIGGER',
1551 'UID',
1552 'UNION',
1553 'UNIQUE',
1554 'UPDATE',
1555 'USER',
1556 'VALIDATE',
1557 'VALUES',
1558 'VARCHAR',
1559 'VARCHAR2',
1560 'VIEW',
1561 'WHENEVER',
1562 'WHERE',
1563 'WITH',
1564 ))
1565
1566 SQLITE = set((
1567 'ABORT',
1568 'ACTION',
1569 'ADD',
1570 'AFTER',
1571 'ALL',
1572 'ALTER',
1573 'ANALYZE',
1574 'AND',
1575 'AS',
1576 'ASC',
1577 'ATTACH',
1578 'AUTOINCREMENT',
1579 'BEFORE',
1580 'BEGIN',
1581 'BETWEEN',
1582 'BY',
1583 'CASCADE',
1584 'CASE',
1585 'CAST',
1586 'CHECK',
1587 'COLLATE',
1588 'COLUMN',
1589 'COMMIT',
1590 'CONFLICT',
1591 'CONSTRAINT',
1592 'CREATE',
1593 'CROSS',
1594 'CURRENT_DATE',
1595 'CURRENT_TIME',
1596 'CURRENT_TIMESTAMP',
1597 'DATABASE',
1598 'DEFAULT',
1599 'DEFERRABLE',
1600 'DEFERRED',
1601 'DELETE',
1602 'DESC',
1603 'DETACH',
1604 'DISTINCT',
1605 'DROP',
1606 'EACH',
1607 'ELSE',
1608 'END',
1609 'ESCAPE',
1610 'EXCEPT',
1611 'EXCLUSIVE',
1612 'EXISTS',
1613 'EXPLAIN',
1614 'FAIL',
1615 'FOR',
1616 'FOREIGN',
1617 'FROM',
1618 'FULL',
1619 'GLOB',
1620 'GROUP',
1621 'HAVING',
1622 'IF',
1623 'IGNORE',
1624 'IMMEDIATE',
1625 'IN',
1626 'INDEX',
1627 'INDEXED',
1628 'INITIALLY',
1629 'INNER',
1630 'INSERT',
1631 'INSTEAD',
1632 'INTERSECT',
1633 'INTO',
1634 'IS',
1635 'ISNULL',
1636 'JOIN',
1637 'KEY',
1638 'LEFT',
1639 'LIKE',
1640 'LIMIT',
1641 'MATCH',
1642 'NATURAL',
1643 'NO',
1644 'NOT',
1645 'NOTNULL',
1646 'NULL',
1647 'OF',
1648 'OFFSET',
1649 'ON',
1650 'OR',
1651 'ORDER',
1652 'OUTER',
1653 'PLAN',
1654 'PRAGMA',
1655 'PRIMARY',
1656 'QUERY',
1657 'RAISE',
1658 'REFERENCES',
1659 'REGEXP',
1660 'REINDEX',
1661 'RELEASE',
1662 'RENAME',
1663 'REPLACE',
1664 'RESTRICT',
1665 'RIGHT',
1666 'ROLLBACK',
1667 'ROW',
1668 'SAVEPOINT',
1669 'SELECT',
1670 'SET',
1671 'TABLE',
1672 'TEMP',
1673 'TEMPORARY',
1674 'THEN',
1675 'TO',
1676 'TRANSACTION',
1677 'TRIGGER',
1678 'UNION',
1679 'UNIQUE',
1680 'UPDATE',
1681 'USING',
1682 'VACUUM',
1683 'VALUES',
1684 'VIEW',
1685 'VIRTUAL',
1686 'WHEN',
1687 'WHERE',
1688 ))
1689
1690
1691 MONGODB_NONRESERVED = set(('SAFE',))
1692
1693
1694 JDBCSQLITE = SQLITE
1695 DB2 = INFORMIX = INGRES = JDBCPOSTGRESQL = COMMON
1696
1697 ADAPTERS = {
1698 'sqlite': SQLITE,
1699 'mysql': MYSQL,
1700 'postgres': POSTGRESQL,
1701 'postgres_nonreserved': POSTGRESQL_NONRESERVED,
1702 'oracle': ORACLE,
1703 'mssql': MSSQL,
1704 'mssql2': MSSQL,
1705 'db2': DB2,
1706 'informix': INFORMIX,
1707 'firebird': FIREBIRD,
1708 'firebird_embedded': FIREBIRD,
1709 'firebird_nonreserved': FIREBIRD_NONRESERVED,
1710 'ingres': INGRES,
1711 'ingresu': INGRES,
1712 'jdbc:sqlite': JDBCSQLITE,
1713 'jdbc:postgres': JDBCPOSTGRESQL,
1714 'common': COMMON,
1715 'mongodb_nonreserved': MONGODB_NONRESERVED
1716 }
1717
1718 ADAPTERS['all'] = reduce(lambda a, b: a.union(b), (
1719 x for x in ADAPTERS.values()))
1720