Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# -*- coding: utf-8 -*- 

2""" 

3 pygments.lexers._mysql_builtins 

4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

5 

6 Self-updating data files for the MySQL lexer. 

7 

8 :copyright: Copyright 2020 by the Pygments team, see AUTHORS. 

9 :license: BSD, see LICENSE for details. 

10""" 

11 

12 

13MYSQL_CONSTANTS = ( 

14 'false', 

15 'null', 

16 'true', 

17 'unknown', 

18) 

19 

20 

21# At this time, no easily-parsed, definitive list of data types 

22# has been found in the MySQL source code or documentation. (The 

23# `sql/sql_yacc.yy` file is definitive but is difficult to parse.) 

24# Therefore these types are currently maintained manually. 

25# 

26# Some words in this list -- like "long", "national", "precision", 

27# and "varying" -- appear to only occur in combination with other 

28# data type keywords. Therefore they are included as separate words 

29# even though they do not naturally occur in syntax separately. 

30# 

31# This list is also used to strip data types out of the list of 

32# MySQL keywords, which is automatically updated later in the file. 

33# 

34MYSQL_DATATYPES = ( 

35 # Numeric data types 

36 'bigint', 

37 'bit', 

38 'bool', 

39 'boolean', 

40 'dec', 

41 'decimal', 

42 'double', 

43 'fixed', 

44 'float', 

45 'float4', 

46 'float8', 

47 'int', 

48 'int1', 

49 'int2', 

50 'int3', 

51 'int4', 

52 'int8', 

53 'integer', 

54 'mediumint', 

55 'middleint', 

56 'numeric', 

57 'precision', 

58 'real', 

59 'serial', 

60 'smallint', 

61 'tinyint', 

62 

63 # Date and time data types 

64 'date', 

65 'datetime', 

66 'time', 

67 'timestamp', 

68 'year', 

69 

70 # String data types 

71 'binary', 

72 'blob', 

73 'char', 

74 'enum', 

75 'long', 

76 'longblob', 

77 'longtext', 

78 'mediumblob', 

79 'mediumtext', 

80 'national', 

81 'nchar', 

82 'nvarchar', 

83 'set', 

84 'text', 

85 'tinyblob', 

86 'tinytext', 

87 'varbinary', 

88 'varchar', 

89 'varcharacter', 

90 'varying', 

91 

92 # Spatial data types 

93 'geometry', 

94 'geometrycollection', 

95 'linestring', 

96 'multilinestring', 

97 'multipoint', 

98 'multipolygon', 

99 'point', 

100 'polygon', 

101 

102 # JSON data types 

103 'json', 

104) 

105 

106# Everything below this line is auto-generated from the MySQL source code. 

107# Run this file in Python and it will update itself. 

108# ----------------------------------------------------------------------------- 

109 

110MYSQL_FUNCTIONS = ( 

111 'abs', 

112 'acos', 

113 'adddate', 

114 'addtime', 

115 'aes_decrypt', 

116 'aes_encrypt', 

117 'any_value', 

118 'asin', 

119 'atan', 

120 'atan2', 

121 'benchmark', 

122 'bin', 

123 'bin_to_uuid', 

124 'bit_and', 

125 'bit_count', 

126 'bit_length', 

127 'bit_or', 

128 'bit_xor', 

129 'can_access_column', 

130 'can_access_database', 

131 'can_access_event', 

132 'can_access_resource_group', 

133 'can_access_routine', 

134 'can_access_table', 

135 'can_access_trigger', 

136 'can_access_view', 

137 'cast', 

138 'ceil', 

139 'ceiling', 

140 'char_length', 

141 'character_length', 

142 'coercibility', 

143 'compress', 

144 'concat', 

145 'concat_ws', 

146 'connection_id', 

147 'conv', 

148 'convert_cpu_id_mask', 

149 'convert_interval_to_user_interval', 

150 'convert_tz', 

151 'cos', 

152 'cot', 

153 'count', 

154 'crc32', 

155 'curdate', 

156 'current_role', 

157 'curtime', 

158 'date_add', 

159 'date_format', 

160 'date_sub', 

161 'datediff', 

162 'dayname', 

163 'dayofmonth', 

164 'dayofweek', 

165 'dayofyear', 

166 'degrees', 

167 'elt', 

168 'exp', 

169 'export_set', 

170 'extract', 

171 'extractvalue', 

172 'field', 

173 'find_in_set', 

174 'floor', 

175 'format_bytes', 

176 'format_pico_time', 

177 'found_rows', 

178 'from_base64', 

179 'from_days', 

180 'from_unixtime', 

181 'get_dd_column_privileges', 

182 'get_dd_create_options', 

183 'get_dd_index_private_data', 

184 'get_dd_index_sub_part_length', 

185 'get_dd_property_key_value', 

186 'get_dd_tablespace_private_data', 

187 'get_lock', 

188 'greatest', 

189 'group_concat', 

190 'gtid_subset', 

191 'gtid_subtract', 

192 'hex', 

193 'icu_version', 

194 'ifnull', 

195 'inet6_aton', 

196 'inet6_ntoa', 

197 'inet_aton', 

198 'inet_ntoa', 

199 'instr', 

200 'internal_auto_increment', 

201 'internal_avg_row_length', 

202 'internal_check_time', 

203 'internal_checksum', 

204 'internal_data_free', 

205 'internal_data_length', 

206 'internal_dd_char_length', 

207 'internal_get_comment_or_error', 

208 'internal_get_dd_column_extra', 

209 'internal_get_enabled_role_json', 

210 'internal_get_hostname', 

211 'internal_get_mandatory_roles_json', 

212 'internal_get_partition_nodegroup', 

213 'internal_get_username', 

214 'internal_get_view_warning_or_error', 

215 'internal_index_column_cardinality', 

216 'internal_index_length', 

217 'internal_is_enabled_role', 

218 'internal_is_mandatory_role', 

219 'internal_keys_disabled', 

220 'internal_max_data_length', 

221 'internal_table_rows', 

222 'internal_tablespace_autoextend_size', 

223 'internal_tablespace_data_free', 

224 'internal_tablespace_extent_size', 

225 'internal_tablespace_extra', 

226 'internal_tablespace_free_extents', 

227 'internal_tablespace_id', 

228 'internal_tablespace_initial_size', 

229 'internal_tablespace_logfile_group_name', 

230 'internal_tablespace_logfile_group_number', 

231 'internal_tablespace_maximum_size', 

232 'internal_tablespace_row_format', 

233 'internal_tablespace_status', 

234 'internal_tablespace_total_extents', 

235 'internal_tablespace_type', 

236 'internal_tablespace_version', 

237 'internal_update_time', 

238 'is_free_lock', 

239 'is_ipv4', 

240 'is_ipv4_compat', 

241 'is_ipv4_mapped', 

242 'is_ipv6', 

243 'is_used_lock', 

244 'is_uuid', 

245 'is_visible_dd_object', 

246 'isnull', 

247 'json_array', 

248 'json_array_append', 

249 'json_array_insert', 

250 'json_arrayagg', 

251 'json_contains', 

252 'json_contains_path', 

253 'json_depth', 

254 'json_extract', 

255 'json_insert', 

256 'json_keys', 

257 'json_length', 

258 'json_merge', 

259 'json_merge_patch', 

260 'json_merge_preserve', 

261 'json_object', 

262 'json_objectagg', 

263 'json_overlaps', 

264 'json_pretty', 

265 'json_quote', 

266 'json_remove', 

267 'json_replace', 

268 'json_schema_valid', 

269 'json_schema_validation_report', 

270 'json_search', 

271 'json_set', 

272 'json_storage_free', 

273 'json_storage_size', 

274 'json_type', 

275 'json_unquote', 

276 'json_valid', 

277 'last_day', 

278 'last_insert_id', 

279 'lcase', 

280 'least', 

281 'length', 

282 'like_range_max', 

283 'like_range_min', 

284 'ln', 

285 'load_file', 

286 'locate', 

287 'log', 

288 'log10', 

289 'log2', 

290 'lower', 

291 'lpad', 

292 'ltrim', 

293 'make_set', 

294 'makedate', 

295 'maketime', 

296 'master_pos_wait', 

297 'max', 

298 'mbrcontains', 

299 'mbrcoveredby', 

300 'mbrcovers', 

301 'mbrdisjoint', 

302 'mbrequals', 

303 'mbrintersects', 

304 'mbroverlaps', 

305 'mbrtouches', 

306 'mbrwithin', 

307 'md5', 

308 'mid', 

309 'min', 

310 'monthname', 

311 'name_const', 

312 'now', 

313 'nullif', 

314 'oct', 

315 'octet_length', 

316 'ord', 

317 'period_add', 

318 'period_diff', 

319 'pi', 

320 'position', 

321 'pow', 

322 'power', 

323 'ps_current_thread_id', 

324 'ps_thread_id', 

325 'quote', 

326 'radians', 

327 'rand', 

328 'random_bytes', 

329 'regexp_instr', 

330 'regexp_like', 

331 'regexp_replace', 

332 'regexp_substr', 

333 'release_all_locks', 

334 'release_lock', 

335 'remove_dd_property_key', 

336 'reverse', 

337 'roles_graphml', 

338 'round', 

339 'rpad', 

340 'rtrim', 

341 'sec_to_time', 

342 'session_user', 

343 'sha', 

344 'sha1', 

345 'sha2', 

346 'sign', 

347 'sin', 

348 'sleep', 

349 'soundex', 

350 'space', 

351 'sqrt', 

352 'st_area', 

353 'st_asbinary', 

354 'st_asgeojson', 

355 'st_astext', 

356 'st_aswkb', 

357 'st_aswkt', 

358 'st_buffer', 

359 'st_buffer_strategy', 

360 'st_centroid', 

361 'st_contains', 

362 'st_convexhull', 

363 'st_crosses', 

364 'st_difference', 

365 'st_dimension', 

366 'st_disjoint', 

367 'st_distance', 

368 'st_distance_sphere', 

369 'st_endpoint', 

370 'st_envelope', 

371 'st_equals', 

372 'st_exteriorring', 

373 'st_geohash', 

374 'st_geomcollfromtext', 

375 'st_geomcollfromtxt', 

376 'st_geomcollfromwkb', 

377 'st_geometrycollectionfromtext', 

378 'st_geometrycollectionfromwkb', 

379 'st_geometryfromtext', 

380 'st_geometryfromwkb', 

381 'st_geometryn', 

382 'st_geometrytype', 

383 'st_geomfromgeojson', 

384 'st_geomfromtext', 

385 'st_geomfromwkb', 

386 'st_interiorringn', 

387 'st_intersection', 

388 'st_intersects', 

389 'st_isclosed', 

390 'st_isempty', 

391 'st_issimple', 

392 'st_isvalid', 

393 'st_latfromgeohash', 

394 'st_latitude', 

395 'st_length', 

396 'st_linefromtext', 

397 'st_linefromwkb', 

398 'st_linestringfromtext', 

399 'st_linestringfromwkb', 

400 'st_longfromgeohash', 

401 'st_longitude', 

402 'st_makeenvelope', 

403 'st_mlinefromtext', 

404 'st_mlinefromwkb', 

405 'st_mpointfromtext', 

406 'st_mpointfromwkb', 

407 'st_mpolyfromtext', 

408 'st_mpolyfromwkb', 

409 'st_multilinestringfromtext', 

410 'st_multilinestringfromwkb', 

411 'st_multipointfromtext', 

412 'st_multipointfromwkb', 

413 'st_multipolygonfromtext', 

414 'st_multipolygonfromwkb', 

415 'st_numgeometries', 

416 'st_numinteriorring', 

417 'st_numinteriorrings', 

418 'st_numpoints', 

419 'st_overlaps', 

420 'st_pointfromgeohash', 

421 'st_pointfromtext', 

422 'st_pointfromwkb', 

423 'st_pointn', 

424 'st_polyfromtext', 

425 'st_polyfromwkb', 

426 'st_polygonfromtext', 

427 'st_polygonfromwkb', 

428 'st_simplify', 

429 'st_srid', 

430 'st_startpoint', 

431 'st_swapxy', 

432 'st_symdifference', 

433 'st_touches', 

434 'st_transform', 

435 'st_union', 

436 'st_validate', 

437 'st_within', 

438 'st_x', 

439 'st_y', 

440 'statement_digest', 

441 'statement_digest_text', 

442 'std', 

443 'stddev', 

444 'stddev_pop', 

445 'stddev_samp', 

446 'str_to_date', 

447 'strcmp', 

448 'subdate', 

449 'substr', 

450 'substring', 

451 'substring_index', 

452 'subtime', 

453 'sum', 

454 'sysdate', 

455 'system_user', 

456 'tan', 

457 'time_format', 

458 'time_to_sec', 

459 'timediff', 

460 'to_base64', 

461 'to_days', 

462 'to_seconds', 

463 'trim', 

464 'ucase', 

465 'uncompress', 

466 'uncompressed_length', 

467 'unhex', 

468 'unix_timestamp', 

469 'updatexml', 

470 'upper', 

471 'uuid', 

472 'uuid_short', 

473 'uuid_to_bin', 

474 'validate_password_strength', 

475 'var_pop', 

476 'var_samp', 

477 'variance', 

478 'version', 

479 'wait_for_executed_gtid_set', 

480 'wait_until_sql_thread_after_gtids', 

481 'weekday', 

482 'weekofyear', 

483 'yearweek', 

484) 

485 

486 

487MYSQL_OPTIMIZER_HINTS = ( 

488 'bka', 

489 'bnl', 

490 'dupsweedout', 

491 'firstmatch', 

492 'group_index', 

493 'hash_join', 

494 'index', 

495 'index_merge', 

496 'intoexists', 

497 'join_fixed_order', 

498 'join_index', 

499 'join_order', 

500 'join_prefix', 

501 'join_suffix', 

502 'loosescan', 

503 'materialization', 

504 'max_execution_time', 

505 'merge', 

506 'mrr', 

507 'no_bka', 

508 'no_bnl', 

509 'no_group_index', 

510 'no_hash_join', 

511 'no_icp', 

512 'no_index', 

513 'no_index_merge', 

514 'no_join_index', 

515 'no_merge', 

516 'no_mrr', 

517 'no_order_index', 

518 'no_range_optimization', 

519 'no_semijoin', 

520 'no_skip_scan', 

521 'order_index', 

522 'qb_name', 

523 'resource_group', 

524 'semijoin', 

525 'set_var', 

526 'skip_scan', 

527 'subquery', 

528) 

529 

530 

531MYSQL_KEYWORDS = ( 

532 'accessible', 

533 'account', 

534 'action', 

535 'active', 

536 'add', 

537 'admin', 

538 'after', 

539 'against', 

540 'aggregate', 

541 'algorithm', 

542 'all', 

543 'alter', 

544 'always', 

545 'analyze', 

546 'and', 

547 'any', 

548 'array', 

549 'as', 

550 'asc', 

551 'ascii', 

552 'asensitive', 

553 'at', 

554 'attribute', 

555 'auto_increment', 

556 'autoextend_size', 

557 'avg', 

558 'avg_row_length', 

559 'backup', 

560 'before', 

561 'begin', 

562 'between', 

563 'binlog', 

564 'block', 

565 'both', 

566 'btree', 

567 'buckets', 

568 'by', 

569 'byte', 

570 'cache', 

571 'call', 

572 'cascade', 

573 'cascaded', 

574 'case', 

575 'catalog_name', 

576 'chain', 

577 'change', 

578 'changed', 

579 'channel', 

580 'character', 

581 'charset', 

582 'check', 

583 'checksum', 

584 'cipher', 

585 'class_origin', 

586 'client', 

587 'clone', 

588 'close', 

589 'coalesce', 

590 'code', 

591 'collate', 

592 'collation', 

593 'column', 

594 'column_format', 

595 'column_name', 

596 'columns', 

597 'comment', 

598 'commit', 

599 'committed', 

600 'compact', 

601 'completion', 

602 'component', 

603 'compressed', 

604 'compression', 

605 'concurrent', 

606 'condition', 

607 'connection', 

608 'consistent', 

609 'constraint', 

610 'constraint_catalog', 

611 'constraint_name', 

612 'constraint_schema', 

613 'contains', 

614 'context', 

615 'continue', 

616 'convert', 

617 'cpu', 

618 'create', 

619 'cross', 

620 'cube', 

621 'cume_dist', 

622 'current', 

623 'current_date', 

624 'current_time', 

625 'current_timestamp', 

626 'current_user', 

627 'cursor', 

628 'cursor_name', 

629 'data', 

630 'database', 

631 'databases', 

632 'datafile', 

633 'day', 

634 'day_hour', 

635 'day_microsecond', 

636 'day_minute', 

637 'day_second', 

638 'deallocate', 

639 'declare', 

640 'default', 

641 'default_auth', 

642 'definer', 

643 'definition', 

644 'delay_key_write', 

645 'delayed', 

646 'delete', 

647 'dense_rank', 

648 'desc', 

649 'describe', 

650 'description', 

651 'deterministic', 

652 'diagnostics', 

653 'directory', 

654 'disable', 

655 'discard', 

656 'disk', 

657 'distinct', 

658 'distinctrow', 

659 'div', 

660 'do', 

661 'drop', 

662 'dual', 

663 'dumpfile', 

664 'duplicate', 

665 'dynamic', 

666 'each', 

667 'else', 

668 'elseif', 

669 'empty', 

670 'enable', 

671 'enclosed', 

672 'encryption', 

673 'end', 

674 'ends', 

675 'enforced', 

676 'engine', 

677 'engine_attribute', 

678 'engines', 

679 'error', 

680 'errors', 

681 'escape', 

682 'escaped', 

683 'event', 

684 'events', 

685 'every', 

686 'except', 

687 'exchange', 

688 'exclude', 

689 'execute', 

690 'exists', 

691 'exit', 

692 'expansion', 

693 'expire', 

694 'explain', 

695 'export', 

696 'extended', 

697 'extent_size', 

698 'failed_login_attempts', 

699 'false', 

700 'fast', 

701 'faults', 

702 'fetch', 

703 'fields', 

704 'file', 

705 'file_block_size', 

706 'filter', 

707 'first', 

708 'first_value', 

709 'flush', 

710 'following', 

711 'follows', 

712 'for', 

713 'force', 

714 'foreign', 

715 'format', 

716 'found', 

717 'from', 

718 'full', 

719 'fulltext', 

720 'function', 

721 'general', 

722 'generated', 

723 'geomcollection', 

724 'get', 

725 'get_format', 

726 'get_master_public_key', 

727 'global', 

728 'grant', 

729 'grants', 

730 'group', 

731 'group_replication', 

732 'grouping', 

733 'groups', 

734 'handler', 

735 'hash', 

736 'having', 

737 'help', 

738 'high_priority', 

739 'histogram', 

740 'history', 

741 'host', 

742 'hosts', 

743 'hour', 

744 'hour_microsecond', 

745 'hour_minute', 

746 'hour_second', 

747 'identified', 

748 'if', 

749 'ignore', 

750 'ignore_server_ids', 

751 'import', 

752 'in', 

753 'inactive', 

754 'index', 

755 'indexes', 

756 'infile', 

757 'initial_size', 

758 'inner', 

759 'inout', 

760 'insensitive', 

761 'insert', 

762 'insert_method', 

763 'install', 

764 'instance', 

765 'interval', 

766 'into', 

767 'invisible', 

768 'invoker', 

769 'io', 

770 'io_after_gtids', 

771 'io_before_gtids', 

772 'io_thread', 

773 'ipc', 

774 'is', 

775 'isolation', 

776 'issuer', 

777 'iterate', 

778 'join', 

779 'json_table', 

780 'json_value', 

781 'key', 

782 'key_block_size', 

783 'keys', 

784 'kill', 

785 'lag', 

786 'language', 

787 'last', 

788 'last_value', 

789 'lateral', 

790 'lead', 

791 'leading', 

792 'leave', 

793 'leaves', 

794 'left', 

795 'less', 

796 'level', 

797 'like', 

798 'limit', 

799 'linear', 

800 'lines', 

801 'list', 

802 'load', 

803 'local', 

804 'localtime', 

805 'localtimestamp', 

806 'lock', 

807 'locked', 

808 'locks', 

809 'logfile', 

810 'logs', 

811 'loop', 

812 'low_priority', 

813 'master', 

814 'master_auto_position', 

815 'master_bind', 

816 'master_compression_algorithms', 

817 'master_connect_retry', 

818 'master_delay', 

819 'master_heartbeat_period', 

820 'master_host', 

821 'master_log_file', 

822 'master_log_pos', 

823 'master_password', 

824 'master_port', 

825 'master_public_key_path', 

826 'master_retry_count', 

827 'master_server_id', 

828 'master_ssl', 

829 'master_ssl_ca', 

830 'master_ssl_capath', 

831 'master_ssl_cert', 

832 'master_ssl_cipher', 

833 'master_ssl_crl', 

834 'master_ssl_crlpath', 

835 'master_ssl_key', 

836 'master_ssl_verify_server_cert', 

837 'master_tls_ciphersuites', 

838 'master_tls_version', 

839 'master_user', 

840 'master_zstd_compression_level', 

841 'match', 

842 'max_connections_per_hour', 

843 'max_queries_per_hour', 

844 'max_rows', 

845 'max_size', 

846 'max_updates_per_hour', 

847 'max_user_connections', 

848 'maxvalue', 

849 'medium', 

850 'member', 

851 'memory', 

852 'merge', 

853 'message_text', 

854 'microsecond', 

855 'migrate', 

856 'min_rows', 

857 'minute', 

858 'minute_microsecond', 

859 'minute_second', 

860 'mod', 

861 'mode', 

862 'modifies', 

863 'modify', 

864 'month', 

865 'mutex', 

866 'mysql_errno', 

867 'name', 

868 'names', 

869 'natural', 

870 'ndb', 

871 'ndbcluster', 

872 'nested', 

873 'network_namespace', 

874 'never', 

875 'new', 

876 'next', 

877 'no', 

878 'no_wait', 

879 'no_write_to_binlog', 

880 'nodegroup', 

881 'none', 

882 'not', 

883 'nowait', 

884 'nth_value', 

885 'ntile', 

886 'null', 

887 'nulls', 

888 'number', 

889 'of', 

890 'off', 

891 'offset', 

892 'oj', 

893 'old', 

894 'on', 

895 'one', 

896 'only', 

897 'open', 

898 'optimize', 

899 'optimizer_costs', 

900 'option', 

901 'optional', 

902 'optionally', 

903 'options', 

904 'or', 

905 'order', 

906 'ordinality', 

907 'organization', 

908 'others', 

909 'out', 

910 'outer', 

911 'outfile', 

912 'over', 

913 'owner', 

914 'pack_keys', 

915 'page', 

916 'parser', 

917 'partial', 

918 'partition', 

919 'partitioning', 

920 'partitions', 

921 'password', 

922 'password_lock_time', 

923 'path', 

924 'percent_rank', 

925 'persist', 

926 'persist_only', 

927 'phase', 

928 'plugin', 

929 'plugin_dir', 

930 'plugins', 

931 'port', 

932 'precedes', 

933 'preceding', 

934 'prepare', 

935 'preserve', 

936 'prev', 

937 'primary', 

938 'privilege_checks_user', 

939 'privileges', 

940 'procedure', 

941 'process', 

942 'processlist', 

943 'profile', 

944 'profiles', 

945 'proxy', 

946 'purge', 

947 'quarter', 

948 'query', 

949 'quick', 

950 'random', 

951 'range', 

952 'rank', 

953 'read', 

954 'read_only', 

955 'read_write', 

956 'reads', 

957 'rebuild', 

958 'recover', 

959 'recursive', 

960 'redo_buffer_size', 

961 'redundant', 

962 'reference', 

963 'references', 

964 'regexp', 

965 'relay', 

966 'relay_log_file', 

967 'relay_log_pos', 

968 'relay_thread', 

969 'relaylog', 

970 'release', 

971 'reload', 

972 'remove', 

973 'rename', 

974 'reorganize', 

975 'repair', 

976 'repeat', 

977 'repeatable', 

978 'replace', 

979 'replicate_do_db', 

980 'replicate_do_table', 

981 'replicate_ignore_db', 

982 'replicate_ignore_table', 

983 'replicate_rewrite_db', 

984 'replicate_wild_do_table', 

985 'replicate_wild_ignore_table', 

986 'replication', 

987 'require', 

988 'require_row_format', 

989 'require_table_primary_key_check', 

990 'reset', 

991 'resignal', 

992 'resource', 

993 'respect', 

994 'restart', 

995 'restore', 

996 'restrict', 

997 'resume', 

998 'retain', 

999 'return', 

1000 'returned_sqlstate', 

1001 'returning', 

1002 'returns', 

1003 'reuse', 

1004 'reverse', 

1005 'revoke', 

1006 'right', 

1007 'rlike', 

1008 'role', 

1009 'rollback', 

1010 'rollup', 

1011 'rotate', 

1012 'routine', 

1013 'row', 

1014 'row_count', 

1015 'row_format', 

1016 'row_number', 

1017 'rows', 

1018 'rtree', 

1019 'savepoint', 

1020 'schedule', 

1021 'schema', 

1022 'schema_name', 

1023 'schemas', 

1024 'second', 

1025 'second_microsecond', 

1026 'secondary', 

1027 'secondary_engine', 

1028 'secondary_engine_attribute', 

1029 'secondary_load', 

1030 'secondary_unload', 

1031 'security', 

1032 'select', 

1033 'sensitive', 

1034 'separator', 

1035 'serializable', 

1036 'server', 

1037 'session', 

1038 'share', 

1039 'show', 

1040 'shutdown', 

1041 'signal', 

1042 'signed', 

1043 'simple', 

1044 'skip', 

1045 'slave', 

1046 'slow', 

1047 'snapshot', 

1048 'socket', 

1049 'some', 

1050 'soname', 

1051 'sounds', 

1052 'source', 

1053 'spatial', 

1054 'specific', 

1055 'sql', 

1056 'sql_after_gtids', 

1057 'sql_after_mts_gaps', 

1058 'sql_before_gtids', 

1059 'sql_big_result', 

1060 'sql_buffer_result', 

1061 'sql_calc_found_rows', 

1062 'sql_no_cache', 

1063 'sql_small_result', 

1064 'sql_thread', 

1065 'sql_tsi_day', 

1066 'sql_tsi_hour', 

1067 'sql_tsi_minute', 

1068 'sql_tsi_month', 

1069 'sql_tsi_quarter', 

1070 'sql_tsi_second', 

1071 'sql_tsi_week', 

1072 'sql_tsi_year', 

1073 'sqlexception', 

1074 'sqlstate', 

1075 'sqlwarning', 

1076 'srid', 

1077 'ssl', 

1078 'stacked', 

1079 'start', 

1080 'starting', 

1081 'starts', 

1082 'stats_auto_recalc', 

1083 'stats_persistent', 

1084 'stats_sample_pages', 

1085 'status', 

1086 'stop', 

1087 'storage', 

1088 'stored', 

1089 'straight_join', 

1090 'stream', 

1091 'string', 

1092 'subclass_origin', 

1093 'subject', 

1094 'subpartition', 

1095 'subpartitions', 

1096 'super', 

1097 'suspend', 

1098 'swaps', 

1099 'switches', 

1100 'system', 

1101 'table', 

1102 'table_checksum', 

1103 'table_name', 

1104 'tables', 

1105 'tablespace', 

1106 'temporary', 

1107 'temptable', 

1108 'terminated', 

1109 'than', 

1110 'then', 

1111 'thread_priority', 

1112 'ties', 

1113 'timestampadd', 

1114 'timestampdiff', 

1115 'tls', 

1116 'to', 

1117 'trailing', 

1118 'transaction', 

1119 'trigger', 

1120 'triggers', 

1121 'true', 

1122 'truncate', 

1123 'type', 

1124 'types', 

1125 'unbounded', 

1126 'uncommitted', 

1127 'undefined', 

1128 'undo', 

1129 'undo_buffer_size', 

1130 'undofile', 

1131 'unicode', 

1132 'uninstall', 

1133 'union', 

1134 'unique', 

1135 'unknown', 

1136 'unlock', 

1137 'unsigned', 

1138 'until', 

1139 'update', 

1140 'upgrade', 

1141 'usage', 

1142 'use', 

1143 'use_frm', 

1144 'user', 

1145 'user_resources', 

1146 'using', 

1147 'utc_date', 

1148 'utc_time', 

1149 'utc_timestamp', 

1150 'validation', 

1151 'value', 

1152 'values', 

1153 'variables', 

1154 'vcpu', 

1155 'view', 

1156 'virtual', 

1157 'visible', 

1158 'wait', 

1159 'warnings', 

1160 'week', 

1161 'weight_string', 

1162 'when', 

1163 'where', 

1164 'while', 

1165 'window', 

1166 'with', 

1167 'without', 

1168 'work', 

1169 'wrapper', 

1170 'write', 

1171 'x509', 

1172 'xa', 

1173 'xid', 

1174 'xml', 

1175 'xor', 

1176 'year_month', 

1177 'zerofill', 

1178) 

1179 

1180 

1181if __name__ == '__main__': # pragma: no cover 

1182 import re 

1183 from urllib.request import urlopen 

1184 

1185 from pygments.util import format_lines 

1186 

1187 # MySQL source code 

1188 SOURCE_URL = 'https://github.com/mysql/mysql-server/raw/8.0' 

1189 LEX_URL = SOURCE_URL + '/sql/lex.h' 

1190 ITEM_CREATE_URL = SOURCE_URL + '/sql/item_create.cc' 

1191 

1192 

1193 def update_myself(): 

1194 # Pull content from lex.h. 

1195 lex_file = urlopen(LEX_URL).read().decode('utf8', errors='ignore') 

1196 keywords = parse_lex_keywords(lex_file) 

1197 functions = parse_lex_functions(lex_file) 

1198 optimizer_hints = parse_lex_optimizer_hints(lex_file) 

1199 

1200 # Parse content in item_create.cc. 

1201 item_create_file = urlopen(ITEM_CREATE_URL).read().decode('utf8', errors='ignore') 

1202 functions.update(parse_item_create_functions(item_create_file)) 

1203 

1204 # Remove data types from the set of keywords. 

1205 keywords -= set(MYSQL_DATATYPES) 

1206 

1207 update_content('MYSQL_FUNCTIONS', tuple(sorted(functions))) 

1208 update_content('MYSQL_KEYWORDS', tuple(sorted(keywords))) 

1209 update_content('MYSQL_OPTIMIZER_HINTS', tuple(sorted(optimizer_hints))) 

1210 

1211 

1212 def parse_lex_keywords(f): 

1213 """Parse keywords in lex.h.""" 

1214 

1215 results = set() 

1216 for m in re.finditer(r'{SYM(?:_HK)?\("(?P<keyword>[a-z0-9_]+)",', f, flags=re.I): 

1217 results.add(m.group('keyword').lower()) 

1218 

1219 if not results: 

1220 raise ValueError('No keywords found') 

1221 

1222 return results 

1223 

1224 

1225 def parse_lex_optimizer_hints(f): 

1226 """Parse optimizer hints in lex.h.""" 

1227 

1228 results = set() 

1229 for m in re.finditer(r'{SYM_H\("(?P<keyword>[a-z0-9_]+)",', f, flags=re.I): 

1230 results.add(m.group('keyword').lower()) 

1231 

1232 if not results: 

1233 raise ValueError('No optimizer hints found') 

1234 

1235 return results 

1236 

1237 

1238 def parse_lex_functions(f): 

1239 """Parse MySQL function names from lex.h.""" 

1240 

1241 results = set() 

1242 for m in re.finditer(r'{SYM_FN?\("(?P<function>[a-z0-9_]+)",', f, flags=re.I): 

1243 results.add(m.group('function').lower()) 

1244 

1245 if not results: 

1246 raise ValueError('No lex functions found') 

1247 

1248 return results 

1249 

1250 

1251 def parse_item_create_functions(f): 

1252 """Parse MySQL function names from item_create.cc.""" 

1253 

1254 results = set() 

1255 for m in re.finditer(r'{"(?P<function>[^"]+?)",\s*SQL_F[^(]+?\(', f, flags=re.I): 

1256 results.add(m.group('function').lower()) 

1257 

1258 if not results: 

1259 raise ValueError('No item_create functions found') 

1260 

1261 return results 

1262 

1263 

1264 def update_content(field_name, content): 

1265 """Overwrite this file with content parsed from MySQL's source code.""" 

1266 

1267 with open(__file__) as f: 

1268 data = f.read() 

1269 

1270 # Line to start/end inserting 

1271 re_match = re.compile(r'^%s\s*=\s*\($.*?^\s*\)$' % field_name, re.M | re.S) 

1272 m = re_match.search(data) 

1273 if not m: 

1274 raise ValueError('Could not find an existing definition for %s' % field_name) 

1275 

1276 new_block = format_lines(field_name, content) 

1277 data = data[:m.start()] + new_block + data[m.end():] 

1278 

1279 with open(__file__, 'w', newline='\n') as f: 

1280 f.write(data) 

1281 

1282 update_myself()