Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/sqlparse/keywords.py: 88%

14 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1# 

2# Copyright (C) 2009-2020 the sqlparse authors and contributors 

3# <see AUTHORS file> 

4# 

5# This module is part of python-sqlparse and is released under 

6# the BSD License: https://opensource.org/licenses/BSD-3-Clause 

7 

8import re 

9 

10from sqlparse import tokens 

11 

12 

13def is_keyword(value): 

14 """Checks for a keyword. 

15 

16 If the given value is in one of the KEYWORDS_* dictionary 

17 it's considered a keyword. Otherwise tokens.Name is returned. 

18 """ 

19 val = value.upper() 

20 return (KEYWORDS_COMMON.get(val) 

21 or KEYWORDS_ORACLE.get(val) 

22 or KEYWORDS_PLPGSQL.get(val) 

23 or KEYWORDS_HQL.get(val) 

24 or KEYWORDS_MSACCESS.get(val) 

25 or KEYWORDS.get(val, tokens.Name)), value 

26 

27 

28SQL_REGEX = { 

29 'root': [ 

30 (r'(--|# )\+.*?(\r\n|\r|\n|$)', tokens.Comment.Single.Hint), 

31 (r'/\*\+[\s\S]*?\*/', tokens.Comment.Multiline.Hint), 

32 

33 (r'(--|# ).*?(\r\n|\r|\n|$)', tokens.Comment.Single), 

34 (r'/\*[\s\S]*?\*/', tokens.Comment.Multiline), 

35 

36 (r'(\r\n|\r|\n)', tokens.Newline), 

37 (r'\s+?', tokens.Whitespace), 

38 

39 (r':=', tokens.Assignment), 

40 (r'::', tokens.Punctuation), 

41 

42 (r'\*', tokens.Wildcard), 

43 

44 (r"`(``|[^`])*`", tokens.Name), 

45 (r"´(´´|[^´])*´", tokens.Name), 

46 (r'((?<!\S)\$(?:[_A-ZÀ-Ü]\w*)?\$)[\s\S]*?\1', tokens.Literal), 

47 

48 (r'\?', tokens.Name.Placeholder), 

49 (r'%(\(\w+\))?s', tokens.Name.Placeholder), 

50 (r'(?<!\w)[$:?]\w+', tokens.Name.Placeholder), 

51 

52 (r'\\\w+', tokens.Command), 

53 (r'(NOT\s+)?(IN)\b', tokens.Operator.Comparison), 

54 # FIXME(andi): VALUES shouldn't be listed here 

55 # see https://github.com/andialbrecht/sqlparse/pull/64 

56 # AS and IN are special, it may be followed by a parenthesis, but 

57 # are never functions, see issue183 and issue507 

58 (r'(CASE|IN|VALUES|USING|FROM|AS)\b', tokens.Keyword), 

59 

60 (r'(@|##|#)[A-ZÀ-Ü]\w+', tokens.Name), 

61 

62 # see issue #39 

63 # Spaces around period `schema . name` are valid identifier 

64 # TODO: Spaces before period not implemented 

65 (r'[A-ZÀ-Ü]\w*(?=\s*\.)', tokens.Name), # 'Name'. 

66 # FIXME(atronah): never match, 

67 # because `re.match` doesn't work with look-behind regexp feature 

68 (r'(?<=\.)[A-ZÀ-Ü]\w*', tokens.Name), # .'Name' 

69 (r'[A-ZÀ-Ü]\w*(?=\()', tokens.Name), # side effect: change kw to func 

70 (r'-?0x[\dA-F]+', tokens.Number.Hexadecimal), 

71 (r'-?\d+(\.\d+)?E-?\d+', tokens.Number.Float), 

72 (r'(?![_A-ZÀ-Ü])-?(\d+(\.\d*)|\.\d+)(?![_A-ZÀ-Ü])', 

73 tokens.Number.Float), 

74 (r'(?![_A-ZÀ-Ü])-?\d+(?![_A-ZÀ-Ü])', tokens.Number.Integer), 

75 (r"'(''|\\\\|\\'|[^'])*'", tokens.String.Single), 

76 # not a real string literal in ANSI SQL: 

77 (r'"(""|\\\\|\\"|[^"])*"', tokens.String.Symbol), 

78 (r'(""|".*?[^\\]")', tokens.String.Symbol), 

79 # sqlite names can be escaped with [square brackets]. left bracket 

80 # cannot be preceded by word character or a right bracket -- 

81 # otherwise it's probably an array index 

82 (r'(?<![\w\])])(\[[^\]\[]+\])', tokens.Name), 

83 (r'((LEFT\s+|RIGHT\s+|FULL\s+)?(INNER\s+|OUTER\s+|STRAIGHT\s+)?' 

84 r'|(CROSS\s+|NATURAL\s+)?)?JOIN\b', tokens.Keyword), 

85 (r'END(\s+IF|\s+LOOP|\s+WHILE)?\b', tokens.Keyword), 

86 (r'NOT\s+NULL\b', tokens.Keyword), 

87 (r'NULLS\s+(FIRST|LAST)\b', tokens.Keyword), 

88 (r'UNION\s+ALL\b', tokens.Keyword), 

89 (r'CREATE(\s+OR\s+REPLACE)?\b', tokens.Keyword.DDL), 

90 (r'DOUBLE\s+PRECISION\b', tokens.Name.Builtin), 

91 (r'GROUP\s+BY\b', tokens.Keyword), 

92 (r'ORDER\s+BY\b', tokens.Keyword), 

93 (r'HANDLER\s+FOR\b', tokens.Keyword), 

94 (r'(LATERAL\s+VIEW\s+)' 

95 r'(EXPLODE|INLINE|PARSE_URL_TUPLE|POSEXPLODE|STACK)\b', 

96 tokens.Keyword), 

97 (r"(AT|WITH')\s+TIME\s+ZONE\s+'[^']+'", tokens.Keyword.TZCast), 

98 (r'(NOT\s+)?(LIKE|ILIKE|RLIKE)\b', tokens.Operator.Comparison), 

99 (r'(NOT\s+)?(REGEXP)\b', tokens.Operator.Comparison), 

100 # Check for keywords, also returns tokens.Name if regex matches 

101 # but the match isn't a keyword. 

102 (r'[0-9_\w][_$#\w]*', is_keyword), 

103 (r'[;:()\[\],\.]', tokens.Punctuation), 

104 (r'[<>=~!]+', tokens.Operator.Comparison), 

105 (r'[+/@#%^&|^-]+', tokens.Operator), 

106 ]} 

107 

108FLAGS = re.IGNORECASE | re.UNICODE 

109SQL_REGEX = [(re.compile(rx, FLAGS).match, tt) for rx, tt in SQL_REGEX['root']] 

110 

111KEYWORDS = { 

112 'ABORT': tokens.Keyword, 

113 'ABS': tokens.Keyword, 

114 'ABSOLUTE': tokens.Keyword, 

115 'ACCESS': tokens.Keyword, 

116 'ADA': tokens.Keyword, 

117 'ADD': tokens.Keyword, 

118 'ADMIN': tokens.Keyword, 

119 'AFTER': tokens.Keyword, 

120 'AGGREGATE': tokens.Keyword, 

121 'ALIAS': tokens.Keyword, 

122 'ALL': tokens.Keyword, 

123 'ALLOCATE': tokens.Keyword, 

124 'ANALYSE': tokens.Keyword, 

125 'ANALYZE': tokens.Keyword, 

126 'ANY': tokens.Keyword, 

127 'ARRAYLEN': tokens.Keyword, 

128 'ARE': tokens.Keyword, 

129 'ASC': tokens.Keyword.Order, 

130 'ASENSITIVE': tokens.Keyword, 

131 'ASSERTION': tokens.Keyword, 

132 'ASSIGNMENT': tokens.Keyword, 

133 'ASYMMETRIC': tokens.Keyword, 

134 'AT': tokens.Keyword, 

135 'ATOMIC': tokens.Keyword, 

136 'AUDIT': tokens.Keyword, 

137 'AUTHORIZATION': tokens.Keyword, 

138 'AUTO_INCREMENT': tokens.Keyword, 

139 'AVG': tokens.Keyword, 

140 

141 'BACKWARD': tokens.Keyword, 

142 'BEFORE': tokens.Keyword, 

143 'BEGIN': tokens.Keyword, 

144 'BETWEEN': tokens.Keyword, 

145 'BITVAR': tokens.Keyword, 

146 'BIT_LENGTH': tokens.Keyword, 

147 'BOTH': tokens.Keyword, 

148 'BREADTH': tokens.Keyword, 

149 

150 # 'C': tokens.Keyword, # most likely this is an alias 

151 'CACHE': tokens.Keyword, 

152 'CALL': tokens.Keyword, 

153 'CALLED': tokens.Keyword, 

154 'CARDINALITY': tokens.Keyword, 

155 'CASCADE': tokens.Keyword, 

156 'CASCADED': tokens.Keyword, 

157 'CAST': tokens.Keyword, 

158 'CATALOG': tokens.Keyword, 

159 'CATALOG_NAME': tokens.Keyword, 

160 'CHAIN': tokens.Keyword, 

161 'CHARACTERISTICS': tokens.Keyword, 

162 'CHARACTER_LENGTH': tokens.Keyword, 

163 'CHARACTER_SET_CATALOG': tokens.Keyword, 

164 'CHARACTER_SET_NAME': tokens.Keyword, 

165 'CHARACTER_SET_SCHEMA': tokens.Keyword, 

166 'CHAR_LENGTH': tokens.Keyword, 

167 'CHARSET': tokens.Keyword, 

168 'CHECK': tokens.Keyword, 

169 'CHECKED': tokens.Keyword, 

170 'CHECKPOINT': tokens.Keyword, 

171 'CLASS': tokens.Keyword, 

172 'CLASS_ORIGIN': tokens.Keyword, 

173 'CLOB': tokens.Keyword, 

174 'CLOSE': tokens.Keyword, 

175 'CLUSTER': tokens.Keyword, 

176 'COALESCE': tokens.Keyword, 

177 'COBOL': tokens.Keyword, 

178 'COLLATE': tokens.Keyword, 

179 'COLLATION': tokens.Keyword, 

180 'COLLATION_CATALOG': tokens.Keyword, 

181 'COLLATION_NAME': tokens.Keyword, 

182 'COLLATION_SCHEMA': tokens.Keyword, 

183 'COLLECT': tokens.Keyword, 

184 'COLUMN': tokens.Keyword, 

185 'COLUMN_NAME': tokens.Keyword, 

186 'COMPRESS': tokens.Keyword, 

187 'COMMAND_FUNCTION': tokens.Keyword, 

188 'COMMAND_FUNCTION_CODE': tokens.Keyword, 

189 'COMMENT': tokens.Keyword, 

190 'COMMIT': tokens.Keyword.DML, 

191 'COMMITTED': tokens.Keyword, 

192 'COMPLETION': tokens.Keyword, 

193 'CONCURRENTLY': tokens.Keyword, 

194 'CONDITION_NUMBER': tokens.Keyword, 

195 'CONNECT': tokens.Keyword, 

196 'CONNECTION': tokens.Keyword, 

197 'CONNECTION_NAME': tokens.Keyword, 

198 'CONSTRAINT': tokens.Keyword, 

199 'CONSTRAINTS': tokens.Keyword, 

200 'CONSTRAINT_CATALOG': tokens.Keyword, 

201 'CONSTRAINT_NAME': tokens.Keyword, 

202 'CONSTRAINT_SCHEMA': tokens.Keyword, 

203 'CONSTRUCTOR': tokens.Keyword, 

204 'CONTAINS': tokens.Keyword, 

205 'CONTINUE': tokens.Keyword, 

206 'CONVERSION': tokens.Keyword, 

207 'CONVERT': tokens.Keyword, 

208 'COPY': tokens.Keyword, 

209 'CORRESPONDING': tokens.Keyword, 

210 'COUNT': tokens.Keyword, 

211 'CREATEDB': tokens.Keyword, 

212 'CREATEUSER': tokens.Keyword, 

213 'CROSS': tokens.Keyword, 

214 'CUBE': tokens.Keyword, 

215 'CURRENT': tokens.Keyword, 

216 'CURRENT_DATE': tokens.Keyword, 

217 'CURRENT_PATH': tokens.Keyword, 

218 'CURRENT_ROLE': tokens.Keyword, 

219 'CURRENT_TIME': tokens.Keyword, 

220 'CURRENT_TIMESTAMP': tokens.Keyword, 

221 'CURRENT_USER': tokens.Keyword, 

222 'CURSOR': tokens.Keyword, 

223 'CURSOR_NAME': tokens.Keyword, 

224 'CYCLE': tokens.Keyword, 

225 

226 'DATA': tokens.Keyword, 

227 'DATABASE': tokens.Keyword, 

228 'DATETIME_INTERVAL_CODE': tokens.Keyword, 

229 'DATETIME_INTERVAL_PRECISION': tokens.Keyword, 

230 'DAY': tokens.Keyword, 

231 'DEALLOCATE': tokens.Keyword, 

232 'DECLARE': tokens.Keyword, 

233 'DEFAULT': tokens.Keyword, 

234 'DEFAULTS': tokens.Keyword, 

235 'DEFERRABLE': tokens.Keyword, 

236 'DEFERRED': tokens.Keyword, 

237 'DEFINED': tokens.Keyword, 

238 'DEFINER': tokens.Keyword, 

239 'DELIMITER': tokens.Keyword, 

240 'DELIMITERS': tokens.Keyword, 

241 'DEREF': tokens.Keyword, 

242 'DESC': tokens.Keyword.Order, 

243 'DESCRIBE': tokens.Keyword, 

244 'DESCRIPTOR': tokens.Keyword, 

245 'DESTROY': tokens.Keyword, 

246 'DESTRUCTOR': tokens.Keyword, 

247 'DETERMINISTIC': tokens.Keyword, 

248 'DIAGNOSTICS': tokens.Keyword, 

249 'DICTIONARY': tokens.Keyword, 

250 'DISABLE': tokens.Keyword, 

251 'DISCONNECT': tokens.Keyword, 

252 'DISPATCH': tokens.Keyword, 

253 'DIV': tokens.Operator, 

254 'DO': tokens.Keyword, 

255 'DOMAIN': tokens.Keyword, 

256 'DYNAMIC': tokens.Keyword, 

257 'DYNAMIC_FUNCTION': tokens.Keyword, 

258 'DYNAMIC_FUNCTION_CODE': tokens.Keyword, 

259 

260 'EACH': tokens.Keyword, 

261 'ENABLE': tokens.Keyword, 

262 'ENCODING': tokens.Keyword, 

263 'ENCRYPTED': tokens.Keyword, 

264 'END-EXEC': tokens.Keyword, 

265 'ENGINE': tokens.Keyword, 

266 'EQUALS': tokens.Keyword, 

267 'ESCAPE': tokens.Keyword, 

268 'EVERY': tokens.Keyword, 

269 'EXCEPT': tokens.Keyword, 

270 'EXCEPTION': tokens.Keyword, 

271 'EXCLUDING': tokens.Keyword, 

272 'EXCLUSIVE': tokens.Keyword, 

273 'EXEC': tokens.Keyword, 

274 'EXECUTE': tokens.Keyword, 

275 'EXISTING': tokens.Keyword, 

276 'EXISTS': tokens.Keyword, 

277 'EXPLAIN': tokens.Keyword, 

278 'EXTERNAL': tokens.Keyword, 

279 'EXTRACT': tokens.Keyword, 

280 

281 'FALSE': tokens.Keyword, 

282 'FETCH': tokens.Keyword, 

283 'FILE': tokens.Keyword, 

284 'FINAL': tokens.Keyword, 

285 'FIRST': tokens.Keyword, 

286 'FORCE': tokens.Keyword, 

287 'FOREACH': tokens.Keyword, 

288 'FOREIGN': tokens.Keyword, 

289 'FORTRAN': tokens.Keyword, 

290 'FORWARD': tokens.Keyword, 

291 'FOUND': tokens.Keyword, 

292 'FREE': tokens.Keyword, 

293 'FREEZE': tokens.Keyword, 

294 'FULL': tokens.Keyword, 

295 'FUNCTION': tokens.Keyword, 

296 

297 # 'G': tokens.Keyword, 

298 'GENERAL': tokens.Keyword, 

299 'GENERATED': tokens.Keyword, 

300 'GET': tokens.Keyword, 

301 'GLOBAL': tokens.Keyword, 

302 'GO': tokens.Keyword, 

303 'GOTO': tokens.Keyword, 

304 'GRANT': tokens.Keyword, 

305 'GRANTED': tokens.Keyword, 

306 'GROUPING': tokens.Keyword, 

307 

308 'HAVING': tokens.Keyword, 

309 'HIERARCHY': tokens.Keyword, 

310 'HOLD': tokens.Keyword, 

311 'HOUR': tokens.Keyword, 

312 'HOST': tokens.Keyword, 

313 

314 'IDENTIFIED': tokens.Keyword, 

315 'IDENTITY': tokens.Keyword, 

316 'IGNORE': tokens.Keyword, 

317 'ILIKE': tokens.Keyword, 

318 'IMMEDIATE': tokens.Keyword, 

319 'IMMUTABLE': tokens.Keyword, 

320 

321 'IMPLEMENTATION': tokens.Keyword, 

322 'IMPLICIT': tokens.Keyword, 

323 'INCLUDING': tokens.Keyword, 

324 'INCREMENT': tokens.Keyword, 

325 'INDEX': tokens.Keyword, 

326 

327 'INDICATOR': tokens.Keyword, 

328 'INFIX': tokens.Keyword, 

329 'INHERITS': tokens.Keyword, 

330 'INITIAL': tokens.Keyword, 

331 'INITIALIZE': tokens.Keyword, 

332 'INITIALLY': tokens.Keyword, 

333 'INOUT': tokens.Keyword, 

334 'INPUT': tokens.Keyword, 

335 'INSENSITIVE': tokens.Keyword, 

336 'INSTANTIABLE': tokens.Keyword, 

337 'INSTEAD': tokens.Keyword, 

338 'INTERSECT': tokens.Keyword, 

339 'INTO': tokens.Keyword, 

340 'INVOKER': tokens.Keyword, 

341 'IS': tokens.Keyword, 

342 'ISNULL': tokens.Keyword, 

343 'ISOLATION': tokens.Keyword, 

344 'ITERATE': tokens.Keyword, 

345 

346 # 'K': tokens.Keyword, 

347 'KEY': tokens.Keyword, 

348 'KEY_MEMBER': tokens.Keyword, 

349 'KEY_TYPE': tokens.Keyword, 

350 

351 'LANCOMPILER': tokens.Keyword, 

352 'LANGUAGE': tokens.Keyword, 

353 'LARGE': tokens.Keyword, 

354 'LAST': tokens.Keyword, 

355 'LATERAL': tokens.Keyword, 

356 'LEADING': tokens.Keyword, 

357 'LENGTH': tokens.Keyword, 

358 'LESS': tokens.Keyword, 

359 'LEVEL': tokens.Keyword, 

360 'LIMIT': tokens.Keyword, 

361 'LISTEN': tokens.Keyword, 

362 'LOAD': tokens.Keyword, 

363 'LOCAL': tokens.Keyword, 

364 'LOCALTIME': tokens.Keyword, 

365 'LOCALTIMESTAMP': tokens.Keyword, 

366 'LOCATION': tokens.Keyword, 

367 'LOCATOR': tokens.Keyword, 

368 'LOCK': tokens.Keyword, 

369 'LOWER': tokens.Keyword, 

370 

371 # 'M': tokens.Keyword, 

372 'MAP': tokens.Keyword, 

373 'MATCH': tokens.Keyword, 

374 'MAXEXTENTS': tokens.Keyword, 

375 'MAXVALUE': tokens.Keyword, 

376 'MESSAGE_LENGTH': tokens.Keyword, 

377 'MESSAGE_OCTET_LENGTH': tokens.Keyword, 

378 'MESSAGE_TEXT': tokens.Keyword, 

379 'METHOD': tokens.Keyword, 

380 'MINUTE': tokens.Keyword, 

381 'MINUS': tokens.Keyword, 

382 'MINVALUE': tokens.Keyword, 

383 'MOD': tokens.Keyword, 

384 'MODE': tokens.Keyword, 

385 'MODIFIES': tokens.Keyword, 

386 'MODIFY': tokens.Keyword, 

387 'MONTH': tokens.Keyword, 

388 'MORE': tokens.Keyword, 

389 'MOVE': tokens.Keyword, 

390 'MUMPS': tokens.Keyword, 

391 

392 'NAMES': tokens.Keyword, 

393 'NATIONAL': tokens.Keyword, 

394 'NATURAL': tokens.Keyword, 

395 'NCHAR': tokens.Keyword, 

396 'NCLOB': tokens.Keyword, 

397 'NEW': tokens.Keyword, 

398 'NEXT': tokens.Keyword, 

399 'NO': tokens.Keyword, 

400 'NOAUDIT': tokens.Keyword, 

401 'NOCOMPRESS': tokens.Keyword, 

402 'NOCREATEDB': tokens.Keyword, 

403 'NOCREATEUSER': tokens.Keyword, 

404 'NONE': tokens.Keyword, 

405 'NOT': tokens.Keyword, 

406 'NOTFOUND': tokens.Keyword, 

407 'NOTHING': tokens.Keyword, 

408 'NOTIFY': tokens.Keyword, 

409 'NOTNULL': tokens.Keyword, 

410 'NOWAIT': tokens.Keyword, 

411 'NULL': tokens.Keyword, 

412 'NULLABLE': tokens.Keyword, 

413 'NULLIF': tokens.Keyword, 

414 

415 'OBJECT': tokens.Keyword, 

416 'OCTET_LENGTH': tokens.Keyword, 

417 'OF': tokens.Keyword, 

418 'OFF': tokens.Keyword, 

419 'OFFLINE': tokens.Keyword, 

420 'OFFSET': tokens.Keyword, 

421 'OIDS': tokens.Keyword, 

422 'OLD': tokens.Keyword, 

423 'ONLINE': tokens.Keyword, 

424 'ONLY': tokens.Keyword, 

425 'OPEN': tokens.Keyword, 

426 'OPERATION': tokens.Keyword, 

427 'OPERATOR': tokens.Keyword, 

428 'OPTION': tokens.Keyword, 

429 'OPTIONS': tokens.Keyword, 

430 'ORDINALITY': tokens.Keyword, 

431 'OUT': tokens.Keyword, 

432 'OUTPUT': tokens.Keyword, 

433 'OVERLAPS': tokens.Keyword, 

434 'OVERLAY': tokens.Keyword, 

435 'OVERRIDING': tokens.Keyword, 

436 'OWNER': tokens.Keyword, 

437 

438 'QUARTER': tokens.Keyword, 

439 

440 'PAD': tokens.Keyword, 

441 'PARAMETER': tokens.Keyword, 

442 'PARAMETERS': tokens.Keyword, 

443 'PARAMETER_MODE': tokens.Keyword, 

444 'PARAMETER_NAME': tokens.Keyword, 

445 'PARAMETER_ORDINAL_POSITION': tokens.Keyword, 

446 'PARAMETER_SPECIFIC_CATALOG': tokens.Keyword, 

447 'PARAMETER_SPECIFIC_NAME': tokens.Keyword, 

448 'PARAMETER_SPECIFIC_SCHEMA': tokens.Keyword, 

449 'PARTIAL': tokens.Keyword, 

450 'PASCAL': tokens.Keyword, 

451 'PCTFREE': tokens.Keyword, 

452 'PENDANT': tokens.Keyword, 

453 'PLACING': tokens.Keyword, 

454 'PLI': tokens.Keyword, 

455 'POSITION': tokens.Keyword, 

456 'POSTFIX': tokens.Keyword, 

457 'PRECISION': tokens.Keyword, 

458 'PREFIX': tokens.Keyword, 

459 'PREORDER': tokens.Keyword, 

460 'PREPARE': tokens.Keyword, 

461 'PRESERVE': tokens.Keyword, 

462 'PRIMARY': tokens.Keyword, 

463 'PRIOR': tokens.Keyword, 

464 'PRIVILEGES': tokens.Keyword, 

465 'PROCEDURAL': tokens.Keyword, 

466 'PROCEDURE': tokens.Keyword, 

467 'PUBLIC': tokens.Keyword, 

468 

469 'RAISE': tokens.Keyword, 

470 'RAW': tokens.Keyword, 

471 'READ': tokens.Keyword, 

472 'READS': tokens.Keyword, 

473 'RECHECK': tokens.Keyword, 

474 'RECURSIVE': tokens.Keyword, 

475 'REF': tokens.Keyword, 

476 'REFERENCES': tokens.Keyword, 

477 'REFERENCING': tokens.Keyword, 

478 'REINDEX': tokens.Keyword, 

479 'RELATIVE': tokens.Keyword, 

480 'RENAME': tokens.Keyword, 

481 'REPEATABLE': tokens.Keyword, 

482 'RESET': tokens.Keyword, 

483 'RESOURCE': tokens.Keyword, 

484 'RESTART': tokens.Keyword, 

485 'RESTRICT': tokens.Keyword, 

486 'RESULT': tokens.Keyword, 

487 'RETURN': tokens.Keyword, 

488 'RETURNED_LENGTH': tokens.Keyword, 

489 'RETURNED_OCTET_LENGTH': tokens.Keyword, 

490 'RETURNED_SQLSTATE': tokens.Keyword, 

491 'RETURNING': tokens.Keyword, 

492 'RETURNS': tokens.Keyword, 

493 'REVOKE': tokens.Keyword, 

494 'RIGHT': tokens.Keyword, 

495 'ROLE': tokens.Keyword, 

496 'ROLLBACK': tokens.Keyword.DML, 

497 'ROLLUP': tokens.Keyword, 

498 'ROUTINE': tokens.Keyword, 

499 'ROUTINE_CATALOG': tokens.Keyword, 

500 'ROUTINE_NAME': tokens.Keyword, 

501 'ROUTINE_SCHEMA': tokens.Keyword, 

502 'ROW': tokens.Keyword, 

503 'ROWS': tokens.Keyword, 

504 'ROW_COUNT': tokens.Keyword, 

505 'RULE': tokens.Keyword, 

506 

507 'SAVE_POINT': tokens.Keyword, 

508 'SCALE': tokens.Keyword, 

509 'SCHEMA': tokens.Keyword, 

510 'SCHEMA_NAME': tokens.Keyword, 

511 'SCOPE': tokens.Keyword, 

512 'SCROLL': tokens.Keyword, 

513 'SEARCH': tokens.Keyword, 

514 'SECOND': tokens.Keyword, 

515 'SECURITY': tokens.Keyword, 

516 'SELF': tokens.Keyword, 

517 'SENSITIVE': tokens.Keyword, 

518 'SEQUENCE': tokens.Keyword, 

519 'SERIALIZABLE': tokens.Keyword, 

520 'SERVER_NAME': tokens.Keyword, 

521 'SESSION': tokens.Keyword, 

522 'SESSION_USER': tokens.Keyword, 

523 'SETOF': tokens.Keyword, 

524 'SETS': tokens.Keyword, 

525 'SHARE': tokens.Keyword, 

526 'SHOW': tokens.Keyword, 

527 'SIMILAR': tokens.Keyword, 

528 'SIMPLE': tokens.Keyword, 

529 'SIZE': tokens.Keyword, 

530 'SOME': tokens.Keyword, 

531 'SOURCE': tokens.Keyword, 

532 'SPACE': tokens.Keyword, 

533 'SPECIFIC': tokens.Keyword, 

534 'SPECIFICTYPE': tokens.Keyword, 

535 'SPECIFIC_NAME': tokens.Keyword, 

536 'SQL': tokens.Keyword, 

537 'SQLBUF': tokens.Keyword, 

538 'SQLCODE': tokens.Keyword, 

539 'SQLERROR': tokens.Keyword, 

540 'SQLEXCEPTION': tokens.Keyword, 

541 'SQLSTATE': tokens.Keyword, 

542 'SQLWARNING': tokens.Keyword, 

543 'STABLE': tokens.Keyword, 

544 'START': tokens.Keyword.DML, 

545 # 'STATE': tokens.Keyword, 

546 'STATEMENT': tokens.Keyword, 

547 'STATIC': tokens.Keyword, 

548 'STATISTICS': tokens.Keyword, 

549 'STDIN': tokens.Keyword, 

550 'STDOUT': tokens.Keyword, 

551 'STORAGE': tokens.Keyword, 

552 'STRICT': tokens.Keyword, 

553 'STRUCTURE': tokens.Keyword, 

554 'STYPE': tokens.Keyword, 

555 'SUBCLASS_ORIGIN': tokens.Keyword, 

556 'SUBLIST': tokens.Keyword, 

557 'SUBSTRING': tokens.Keyword, 

558 'SUCCESSFUL': tokens.Keyword, 

559 'SUM': tokens.Keyword, 

560 'SYMMETRIC': tokens.Keyword, 

561 'SYNONYM': tokens.Keyword, 

562 'SYSID': tokens.Keyword, 

563 'SYSTEM': tokens.Keyword, 

564 'SYSTEM_USER': tokens.Keyword, 

565 

566 'TABLE': tokens.Keyword, 

567 'TABLE_NAME': tokens.Keyword, 

568 'TEMP': tokens.Keyword, 

569 'TEMPLATE': tokens.Keyword, 

570 'TEMPORARY': tokens.Keyword, 

571 'TERMINATE': tokens.Keyword, 

572 'THAN': tokens.Keyword, 

573 'TIMESTAMP': tokens.Keyword, 

574 'TIMEZONE_HOUR': tokens.Keyword, 

575 'TIMEZONE_MINUTE': tokens.Keyword, 

576 'TO': tokens.Keyword, 

577 'TOAST': tokens.Keyword, 

578 'TRAILING': tokens.Keyword, 

579 'TRANSATION': tokens.Keyword, 

580 'TRANSACTIONS_COMMITTED': tokens.Keyword, 

581 'TRANSACTIONS_ROLLED_BACK': tokens.Keyword, 

582 'TRANSATION_ACTIVE': tokens.Keyword, 

583 'TRANSFORM': tokens.Keyword, 

584 'TRANSFORMS': tokens.Keyword, 

585 'TRANSLATE': tokens.Keyword, 

586 'TRANSLATION': tokens.Keyword, 

587 'TREAT': tokens.Keyword, 

588 'TRIGGER': tokens.Keyword, 

589 'TRIGGER_CATALOG': tokens.Keyword, 

590 'TRIGGER_NAME': tokens.Keyword, 

591 'TRIGGER_SCHEMA': tokens.Keyword, 

592 'TRIM': tokens.Keyword, 

593 'TRUE': tokens.Keyword, 

594 'TRUNCATE': tokens.Keyword, 

595 'TRUSTED': tokens.Keyword, 

596 'TYPE': tokens.Keyword, 

597 

598 'UID': tokens.Keyword, 

599 'UNCOMMITTED': tokens.Keyword, 

600 'UNDER': tokens.Keyword, 

601 'UNENCRYPTED': tokens.Keyword, 

602 'UNION': tokens.Keyword, 

603 'UNIQUE': tokens.Keyword, 

604 'UNKNOWN': tokens.Keyword, 

605 'UNLISTEN': tokens.Keyword, 

606 'UNNAMED': tokens.Keyword, 

607 'UNNEST': tokens.Keyword, 

608 'UNTIL': tokens.Keyword, 

609 'UPPER': tokens.Keyword, 

610 'USAGE': tokens.Keyword, 

611 'USE': tokens.Keyword, 

612 'USER': tokens.Keyword, 

613 'USER_DEFINED_TYPE_CATALOG': tokens.Keyword, 

614 'USER_DEFINED_TYPE_NAME': tokens.Keyword, 

615 'USER_DEFINED_TYPE_SCHEMA': tokens.Keyword, 

616 'USING': tokens.Keyword, 

617 

618 'VACUUM': tokens.Keyword, 

619 'VALID': tokens.Keyword, 

620 'VALIDATE': tokens.Keyword, 

621 'VALIDATOR': tokens.Keyword, 

622 'VALUES': tokens.Keyword, 

623 'VARIABLE': tokens.Keyword, 

624 'VERBOSE': tokens.Keyword, 

625 'VERSION': tokens.Keyword, 

626 'VIEW': tokens.Keyword, 

627 'VOLATILE': tokens.Keyword, 

628 

629 'WEEK': tokens.Keyword, 

630 'WHENEVER': tokens.Keyword, 

631 'WITH': tokens.Keyword.CTE, 

632 'WITHOUT': tokens.Keyword, 

633 'WORK': tokens.Keyword, 

634 'WRITE': tokens.Keyword, 

635 

636 'YEAR': tokens.Keyword, 

637 

638 'ZONE': tokens.Keyword, 

639 

640 # Name.Builtin 

641 'ARRAY': tokens.Name.Builtin, 

642 'BIGINT': tokens.Name.Builtin, 

643 'BINARY': tokens.Name.Builtin, 

644 'BIT': tokens.Name.Builtin, 

645 'BLOB': tokens.Name.Builtin, 

646 'BOOLEAN': tokens.Name.Builtin, 

647 'CHAR': tokens.Name.Builtin, 

648 'CHARACTER': tokens.Name.Builtin, 

649 'DATE': tokens.Name.Builtin, 

650 'DEC': tokens.Name.Builtin, 

651 'DECIMAL': tokens.Name.Builtin, 

652 'FILE_TYPE': tokens.Name.Builtin, 

653 'FLOAT': tokens.Name.Builtin, 

654 'INT': tokens.Name.Builtin, 

655 'INT8': tokens.Name.Builtin, 

656 'INTEGER': tokens.Name.Builtin, 

657 'INTERVAL': tokens.Name.Builtin, 

658 'LONG': tokens.Name.Builtin, 

659 'NATURALN': tokens.Name.Builtin, 

660 'NVARCHAR': tokens.Name.Builtin, 

661 'NUMBER': tokens.Name.Builtin, 

662 'NUMERIC': tokens.Name.Builtin, 

663 'PLS_INTEGER': tokens.Name.Builtin, 

664 'POSITIVE': tokens.Name.Builtin, 

665 'POSITIVEN': tokens.Name.Builtin, 

666 'REAL': tokens.Name.Builtin, 

667 'ROWID': tokens.Name.Builtin, 

668 'ROWLABEL': tokens.Name.Builtin, 

669 'ROWNUM': tokens.Name.Builtin, 

670 'SERIAL': tokens.Name.Builtin, 

671 'SERIAL8': tokens.Name.Builtin, 

672 'SIGNED': tokens.Name.Builtin, 

673 'SIGNTYPE': tokens.Name.Builtin, 

674 'SIMPLE_DOUBLE': tokens.Name.Builtin, 

675 'SIMPLE_FLOAT': tokens.Name.Builtin, 

676 'SIMPLE_INTEGER': tokens.Name.Builtin, 

677 'SMALLINT': tokens.Name.Builtin, 

678 'SYS_REFCURSOR': tokens.Name.Builtin, 

679 'SYSDATE': tokens.Name, 

680 'TEXT': tokens.Name.Builtin, 

681 'TINYINT': tokens.Name.Builtin, 

682 'UNSIGNED': tokens.Name.Builtin, 

683 'UROWID': tokens.Name.Builtin, 

684 'UTL_FILE': tokens.Name.Builtin, 

685 'VARCHAR': tokens.Name.Builtin, 

686 'VARCHAR2': tokens.Name.Builtin, 

687 'VARYING': tokens.Name.Builtin, 

688} 

689 

690KEYWORDS_COMMON = { 

691 'SELECT': tokens.Keyword.DML, 

692 'INSERT': tokens.Keyword.DML, 

693 'DELETE': tokens.Keyword.DML, 

694 'UPDATE': tokens.Keyword.DML, 

695 'UPSERT': tokens.Keyword.DML, 

696 'REPLACE': tokens.Keyword.DML, 

697 'MERGE': tokens.Keyword.DML, 

698 'DROP': tokens.Keyword.DDL, 

699 'CREATE': tokens.Keyword.DDL, 

700 'ALTER': tokens.Keyword.DDL, 

701 

702 'WHERE': tokens.Keyword, 

703 'FROM': tokens.Keyword, 

704 'INNER': tokens.Keyword, 

705 'JOIN': tokens.Keyword, 

706 'STRAIGHT_JOIN': tokens.Keyword, 

707 'AND': tokens.Keyword, 

708 'OR': tokens.Keyword, 

709 'LIKE': tokens.Keyword, 

710 'ON': tokens.Keyword, 

711 'IN': tokens.Keyword, 

712 'SET': tokens.Keyword, 

713 

714 'BY': tokens.Keyword, 

715 'GROUP': tokens.Keyword, 

716 'ORDER': tokens.Keyword, 

717 'LEFT': tokens.Keyword, 

718 'OUTER': tokens.Keyword, 

719 'FULL': tokens.Keyword, 

720 

721 'IF': tokens.Keyword, 

722 'END': tokens.Keyword, 

723 'THEN': tokens.Keyword, 

724 'LOOP': tokens.Keyword, 

725 'AS': tokens.Keyword, 

726 'ELSE': tokens.Keyword, 

727 'FOR': tokens.Keyword, 

728 'WHILE': tokens.Keyword, 

729 

730 'CASE': tokens.Keyword, 

731 'WHEN': tokens.Keyword, 

732 'MIN': tokens.Keyword, 

733 'MAX': tokens.Keyword, 

734 'DISTINCT': tokens.Keyword, 

735} 

736 

737KEYWORDS_ORACLE = { 

738 'ARCHIVE': tokens.Keyword, 

739 'ARCHIVELOG': tokens.Keyword, 

740 

741 'BACKUP': tokens.Keyword, 

742 'BECOME': tokens.Keyword, 

743 'BLOCK': tokens.Keyword, 

744 'BODY': tokens.Keyword, 

745 

746 'CANCEL': tokens.Keyword, 

747 'CHANGE': tokens.Keyword, 

748 'COMPILE': tokens.Keyword, 

749 'CONTENTS': tokens.Keyword, 

750 'CONTROLFILE': tokens.Keyword, 

751 

752 'DATAFILE': tokens.Keyword, 

753 'DBA': tokens.Keyword, 

754 'DISMOUNT': tokens.Keyword, 

755 'DOUBLE': tokens.Keyword, 

756 'DUMP': tokens.Keyword, 

757 

758 'ELSIF': tokens.Keyword, 

759 'EVENTS': tokens.Keyword, 

760 'EXCEPTIONS': tokens.Keyword, 

761 'EXPLAIN': tokens.Keyword, 

762 'EXTENT': tokens.Keyword, 

763 'EXTERNALLY': tokens.Keyword, 

764 

765 'FLUSH': tokens.Keyword, 

766 'FREELIST': tokens.Keyword, 

767 'FREELISTS': tokens.Keyword, 

768 

769 # groups seems too common as table name 

770 # 'GROUPS': tokens.Keyword, 

771 

772 'INDICATOR': tokens.Keyword, 

773 'INITRANS': tokens.Keyword, 

774 'INSTANCE': tokens.Keyword, 

775 

776 'LAYER': tokens.Keyword, 

777 'LINK': tokens.Keyword, 

778 'LISTS': tokens.Keyword, 

779 'LOGFILE': tokens.Keyword, 

780 

781 'MANAGE': tokens.Keyword, 

782 'MANUAL': tokens.Keyword, 

783 'MAXDATAFILES': tokens.Keyword, 

784 'MAXINSTANCES': tokens.Keyword, 

785 'MAXLOGFILES': tokens.Keyword, 

786 'MAXLOGHISTORY': tokens.Keyword, 

787 'MAXLOGMEMBERS': tokens.Keyword, 

788 'MAXTRANS': tokens.Keyword, 

789 'MINEXTENTS': tokens.Keyword, 

790 'MODULE': tokens.Keyword, 

791 'MOUNT': tokens.Keyword, 

792 

793 'NOARCHIVELOG': tokens.Keyword, 

794 'NOCACHE': tokens.Keyword, 

795 'NOCYCLE': tokens.Keyword, 

796 'NOMAXVALUE': tokens.Keyword, 

797 'NOMINVALUE': tokens.Keyword, 

798 'NOORDER': tokens.Keyword, 

799 'NORESETLOGS': tokens.Keyword, 

800 'NORMAL': tokens.Keyword, 

801 'NOSORT': tokens.Keyword, 

802 

803 'OPTIMAL': tokens.Keyword, 

804 'OWN': tokens.Keyword, 

805 

806 'PACKAGE': tokens.Keyword, 

807 'PARALLEL': tokens.Keyword, 

808 'PCTINCREASE': tokens.Keyword, 

809 'PCTUSED': tokens.Keyword, 

810 'PLAN': tokens.Keyword, 

811 'PRIVATE': tokens.Keyword, 

812 'PROFILE': tokens.Keyword, 

813 

814 'QUOTA': tokens.Keyword, 

815 

816 'RECOVER': tokens.Keyword, 

817 'RESETLOGS': tokens.Keyword, 

818 'RESTRICTED': tokens.Keyword, 

819 'REUSE': tokens.Keyword, 

820 'ROLES': tokens.Keyword, 

821 

822 'SAVEPOINT': tokens.Keyword, 

823 'SCN': tokens.Keyword, 

824 'SECTION': tokens.Keyword, 

825 'SEGMENT': tokens.Keyword, 

826 'SHARED': tokens.Keyword, 

827 'SNAPSHOT': tokens.Keyword, 

828 'SORT': tokens.Keyword, 

829 'STATEMENT_ID': tokens.Keyword, 

830 'STOP': tokens.Keyword, 

831 'SWITCH': tokens.Keyword, 

832 

833 'TABLES': tokens.Keyword, 

834 'TABLESPACE': tokens.Keyword, 

835 'THREAD': tokens.Keyword, 

836 'TIME': tokens.Keyword, 

837 'TRACING': tokens.Keyword, 

838 'TRANSACTION': tokens.Keyword, 

839 'TRIGGERS': tokens.Keyword, 

840 

841 'UNLIMITED': tokens.Keyword, 

842 'UNLOCK': tokens.Keyword, 

843} 

844 

845# PostgreSQL Syntax 

846KEYWORDS_PLPGSQL = { 

847 'CONFLICT': tokens.Keyword, 

848 'WINDOW': tokens.Keyword, 

849 'PARTITION': tokens.Keyword, 

850 'OVER': tokens.Keyword, 

851 'PERFORM': tokens.Keyword, 

852 'NOTICE': tokens.Keyword, 

853 'PLPGSQL': tokens.Keyword, 

854 'INHERIT': tokens.Keyword, 

855 'INDEXES': tokens.Keyword, 

856 'ON_ERROR_STOP': tokens.Keyword, 

857 

858 'BYTEA': tokens.Keyword, 

859 'BIGSERIAL': tokens.Keyword, 

860 'BIT VARYING': tokens.Keyword, 

861 'BOX': tokens.Keyword, 

862 'CHARACTER': tokens.Keyword, 

863 'CHARACTER VARYING': tokens.Keyword, 

864 'CIDR': tokens.Keyword, 

865 'CIRCLE': tokens.Keyword, 

866 'DOUBLE PRECISION': tokens.Keyword, 

867 'INET': tokens.Keyword, 

868 'JSON': tokens.Keyword, 

869 'JSONB': tokens.Keyword, 

870 'LINE': tokens.Keyword, 

871 'LSEG': tokens.Keyword, 

872 'MACADDR': tokens.Keyword, 

873 'MONEY': tokens.Keyword, 

874 'PATH': tokens.Keyword, 

875 'PG_LSN': tokens.Keyword, 

876 'POINT': tokens.Keyword, 

877 'POLYGON': tokens.Keyword, 

878 'SMALLSERIAL': tokens.Keyword, 

879 'TSQUERY': tokens.Keyword, 

880 'TSVECTOR': tokens.Keyword, 

881 'TXID_SNAPSHOT': tokens.Keyword, 

882 'UUID': tokens.Keyword, 

883 'XML': tokens.Keyword, 

884 

885 'FOR': tokens.Keyword, 

886 'IN': tokens.Keyword, 

887 'LOOP': tokens.Keyword, 

888} 

889 

890# Hive Syntax 

891KEYWORDS_HQL = { 

892 'EXPLODE': tokens.Keyword, 

893 'DIRECTORY': tokens.Keyword, 

894 'DISTRIBUTE': tokens.Keyword, 

895 'INCLUDE': tokens.Keyword, 

896 'LOCATE': tokens.Keyword, 

897 'OVERWRITE': tokens.Keyword, 

898 'POSEXPLODE': tokens.Keyword, 

899 

900 'ARRAY_CONTAINS': tokens.Keyword, 

901 'CMP': tokens.Keyword, 

902 'COLLECT_LIST': tokens.Keyword, 

903 'CONCAT': tokens.Keyword, 

904 'CONDITION': tokens.Keyword, 

905 'DATE_ADD': tokens.Keyword, 

906 'DATE_SUB': tokens.Keyword, 

907 'DECODE': tokens.Keyword, 

908 'DBMS_OUTPUT': tokens.Keyword, 

909 'ELEMENTS': tokens.Keyword, 

910 'EXCHANGE': tokens.Keyword, 

911 'EXTENDED': tokens.Keyword, 

912 'FLOOR': tokens.Keyword, 

913 'FOLLOWING': tokens.Keyword, 

914 'FROM_UNIXTIME': tokens.Keyword, 

915 'FTP': tokens.Keyword, 

916 'HOUR': tokens.Keyword, 

917 'INLINE': tokens.Keyword, 

918 'INSTR': tokens.Keyword, 

919 'LEN': tokens.Keyword, 

920 'MAP': tokens.Name.Builtin, 

921 'MAXELEMENT': tokens.Keyword, 

922 'MAXINDEX': tokens.Keyword, 

923 'MAX_PART_DATE': tokens.Keyword, 

924 'MAX_PART_INT': tokens.Keyword, 

925 'MAX_PART_STRING': tokens.Keyword, 

926 'MINELEMENT': tokens.Keyword, 

927 'MININDEX': tokens.Keyword, 

928 'MIN_PART_DATE': tokens.Keyword, 

929 'MIN_PART_INT': tokens.Keyword, 

930 'MIN_PART_STRING': tokens.Keyword, 

931 'NOW': tokens.Keyword, 

932 'NVL': tokens.Keyword, 

933 'NVL2': tokens.Keyword, 

934 'PARSE_URL_TUPLE': tokens.Keyword, 

935 'PART_LOC': tokens.Keyword, 

936 'PART_COUNT': tokens.Keyword, 

937 'PART_COUNT_BY': tokens.Keyword, 

938 'PRINT': tokens.Keyword, 

939 'PUT_LINE': tokens.Keyword, 

940 'RANGE': tokens.Keyword, 

941 'REDUCE': tokens.Keyword, 

942 'REGEXP_REPLACE': tokens.Keyword, 

943 'RESIGNAL': tokens.Keyword, 

944 'RTRIM': tokens.Keyword, 

945 'SIGN': tokens.Keyword, 

946 'SIGNAL': tokens.Keyword, 

947 'SIN': tokens.Keyword, 

948 'SPLIT': tokens.Keyword, 

949 'SQRT': tokens.Keyword, 

950 'STACK': tokens.Keyword, 

951 'STR': tokens.Keyword, 

952 'STRING': tokens.Name.Builtin, 

953 'STRUCT': tokens.Name.Builtin, 

954 'SUBSTR': tokens.Keyword, 

955 'SUMMARY': tokens.Keyword, 

956 'TBLPROPERTIES': tokens.Keyword, 

957 'TIMESTAMP': tokens.Name.Builtin, 

958 'TIMESTAMP_ISO': tokens.Keyword, 

959 'TO_CHAR': tokens.Keyword, 

960 'TO_DATE': tokens.Keyword, 

961 'TO_TIMESTAMP': tokens.Keyword, 

962 'TRUNC': tokens.Keyword, 

963 'UNBOUNDED': tokens.Keyword, 

964 'UNIQUEJOIN': tokens.Keyword, 

965 'UNIX_TIMESTAMP': tokens.Keyword, 

966 'UTC_TIMESTAMP': tokens.Keyword, 

967 'VIEWS': tokens.Keyword, 

968 

969 'EXIT': tokens.Keyword, 

970 'BREAK': tokens.Keyword, 

971 'LEAVE': tokens.Keyword, 

972} 

973 

974 

975KEYWORDS_MSACCESS = { 

976 'DISTINCTROW': tokens.Keyword, 

977}