Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pygments/lexers/_mysql_builtins.py: 100%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

6 statements  

1""" 

2 pygments.lexers._mysql_builtins 

3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

4 

5 Self-updating data files for the MySQL lexer. 

6 

7 Run with `python -I` to update. 

8 

9 :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS. 

10 :license: BSD, see LICENSE for details. 

11""" 

12 

13 

14MYSQL_CONSTANTS = ( 

15 'false', 

16 'null', 

17 'true', 

18 'unknown', 

19) 

20 

21 

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

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

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

25# Therefore these types are currently maintained manually. 

26# 

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

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

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

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

31# 

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

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

34# 

35MYSQL_DATATYPES = ( 

36 # Numeric data types 

37 'bigint', 

38 'bit', 

39 'bool', 

40 'boolean', 

41 'dec', 

42 'decimal', 

43 'double', 

44 'fixed', 

45 'float', 

46 'float4', 

47 'float8', 

48 'int', 

49 'int1', 

50 'int2', 

51 'int3', 

52 'int4', 

53 'int8', 

54 'integer', 

55 'mediumint', 

56 'middleint', 

57 'numeric', 

58 'precision', 

59 'real', 

60 'serial', 

61 'smallint', 

62 'tinyint', 

63 

64 # Date and time data types 

65 'date', 

66 'datetime', 

67 'time', 

68 'timestamp', 

69 'year', 

70 

71 # String data types 

72 'binary', 

73 'blob', 

74 'char', 

75 'enum', 

76 'long', 

77 'longblob', 

78 'longtext', 

79 'mediumblob', 

80 'mediumtext', 

81 'national', 

82 'nchar', 

83 'nvarchar', 

84 'set', 

85 'text', 

86 'tinyblob', 

87 'tinytext', 

88 'varbinary', 

89 'varchar', 

90 'varcharacter', 

91 'varying', 

92 

93 # Spatial data types 

94 'geometry', 

95 'geometrycollection', 

96 'linestring', 

97 'multilinestring', 

98 'multipoint', 

99 'multipolygon', 

100 'point', 

101 'polygon', 

102 

103 # JSON data types 

104 'json', 

105) 

106 

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

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

109# ----------------------------------------------------------------------------- 

110 

111MYSQL_FUNCTIONS = ( 

112 'abs', 

113 'acos', 

114 'adddate', 

115 'addtime', 

116 'aes_decrypt', 

117 'aes_encrypt', 

118 'any_value', 

119 'asin', 

120 'atan', 

121 'atan2', 

122 'benchmark', 

123 'bin', 

124 'bin_to_uuid', 

125 'bit_and', 

126 'bit_count', 

127 'bit_length', 

128 'bit_or', 

129 'bit_xor', 

130 'can_access_column', 

131 'can_access_database', 

132 'can_access_event', 

133 'can_access_resource_group', 

134 'can_access_routine', 

135 'can_access_table', 

136 'can_access_trigger', 

137 'can_access_user', 

138 'can_access_view', 

139 'cast', 

140 'ceil', 

141 'ceiling', 

142 'char_length', 

143 'character_length', 

144 'coercibility', 

145 'compress', 

146 'concat', 

147 'concat_ws', 

148 'connection_id', 

149 'conv', 

150 'convert_cpu_id_mask', 

151 'convert_interval_to_user_interval', 

152 'convert_tz', 

153 'cos', 

154 'cot', 

155 'count', 

156 'crc32', 

157 'curdate', 

158 'current_role', 

159 'curtime', 

160 'date_add', 

161 'date_format', 

162 'date_sub', 

163 'datediff', 

164 'dayname', 

165 'dayofmonth', 

166 'dayofweek', 

167 'dayofyear', 

168 'degrees', 

169 'elt', 

170 'exp', 

171 'export_set', 

172 'extract', 

173 'extractvalue', 

174 'field', 

175 'find_in_set', 

176 'floor', 

177 'format_bytes', 

178 'format_pico_time', 

179 'found_rows', 

180 'from_base64', 

181 'from_days', 

182 'from_unixtime', 

183 'get_dd_column_privileges', 

184 'get_dd_create_options', 

185 'get_dd_index_private_data', 

186 'get_dd_index_sub_part_length', 

187 'get_dd_property_key_value', 

188 'get_dd_schema_options', 

189 'get_dd_tablespace_private_data', 

190 'get_lock', 

191 'greatest', 

192 'group_concat', 

193 'gtid_subset', 

194 'gtid_subtract', 

195 'hex', 

196 'icu_version', 

197 'ifnull', 

198 'inet6_aton', 

199 'inet6_ntoa', 

200 'inet_aton', 

201 'inet_ntoa', 

202 'instr', 

203 'internal_auto_increment', 

204 'internal_avg_row_length', 

205 'internal_check_time', 

206 'internal_checksum', 

207 'internal_data_free', 

208 'internal_data_length', 

209 'internal_dd_char_length', 

210 'internal_get_comment_or_error', 

211 'internal_get_dd_column_extra', 

212 'internal_get_enabled_role_json', 

213 'internal_get_hostname', 

214 'internal_get_mandatory_roles_json', 

215 'internal_get_partition_nodegroup', 

216 'internal_get_username', 

217 'internal_get_view_warning_or_error', 

218 'internal_index_column_cardinality', 

219 'internal_index_length', 

220 'internal_is_enabled_role', 

221 'internal_is_mandatory_role', 

222 'internal_keys_disabled', 

223 'internal_max_data_length', 

224 'internal_table_rows', 

225 'internal_tablespace_autoextend_size', 

226 'internal_tablespace_data_free', 

227 'internal_tablespace_extent_size', 

228 'internal_tablespace_extra', 

229 'internal_tablespace_free_extents', 

230 'internal_tablespace_id', 

231 'internal_tablespace_initial_size', 

232 'internal_tablespace_logfile_group_name', 

233 'internal_tablespace_logfile_group_number', 

234 'internal_tablespace_maximum_size', 

235 'internal_tablespace_row_format', 

236 'internal_tablespace_status', 

237 'internal_tablespace_total_extents', 

238 'internal_tablespace_type', 

239 'internal_tablespace_version', 

240 'internal_update_time', 

241 'is_free_lock', 

242 'is_ipv4', 

243 'is_ipv4_compat', 

244 'is_ipv4_mapped', 

245 'is_ipv6', 

246 'is_used_lock', 

247 'is_uuid', 

248 'is_visible_dd_object', 

249 'isnull', 

250 'json_array', 

251 'json_array_append', 

252 'json_array_insert', 

253 'json_arrayagg', 

254 'json_contains', 

255 'json_contains_path', 

256 'json_depth', 

257 'json_extract', 

258 'json_insert', 

259 'json_keys', 

260 'json_length', 

261 'json_merge', 

262 'json_merge_patch', 

263 'json_merge_preserve', 

264 'json_object', 

265 'json_objectagg', 

266 'json_overlaps', 

267 'json_pretty', 

268 'json_quote', 

269 'json_remove', 

270 'json_replace', 

271 'json_schema_valid', 

272 'json_schema_validation_report', 

273 'json_search', 

274 'json_set', 

275 'json_storage_free', 

276 'json_storage_size', 

277 'json_type', 

278 'json_unquote', 

279 'json_valid', 

280 'last_day', 

281 'last_insert_id', 

282 'lcase', 

283 'least', 

284 'length', 

285 'like_range_max', 

286 'like_range_min', 

287 'ln', 

288 'load_file', 

289 'locate', 

290 'log', 

291 'log10', 

292 'log2', 

293 'lower', 

294 'lpad', 

295 'ltrim', 

296 'make_set', 

297 'makedate', 

298 'maketime', 

299 'master_pos_wait', 

300 'max', 

301 'mbrcontains', 

302 'mbrcoveredby', 

303 'mbrcovers', 

304 'mbrdisjoint', 

305 'mbrequals', 

306 'mbrintersects', 

307 'mbroverlaps', 

308 'mbrtouches', 

309 'mbrwithin', 

310 'md5', 

311 'mid', 

312 'min', 

313 'monthname', 

314 'name_const', 

315 'now', 

316 'nullif', 

317 'oct', 

318 'octet_length', 

319 'ord', 

320 'period_add', 

321 'period_diff', 

322 'pi', 

323 'position', 

324 'pow', 

325 'power', 

326 'ps_current_thread_id', 

327 'ps_thread_id', 

328 'quote', 

329 'radians', 

330 'rand', 

331 'random_bytes', 

332 'regexp_instr', 

333 'regexp_like', 

334 'regexp_replace', 

335 'regexp_substr', 

336 'release_all_locks', 

337 'release_lock', 

338 'remove_dd_property_key', 

339 'reverse', 

340 'roles_graphml', 

341 'round', 

342 'rpad', 

343 'rtrim', 

344 'sec_to_time', 

345 'session_user', 

346 'sha', 

347 'sha1', 

348 'sha2', 

349 'sign', 

350 'sin', 

351 'sleep', 

352 'soundex', 

353 'source_pos_wait', 

354 'space', 

355 'sqrt', 

356 'st_area', 

357 'st_asbinary', 

358 'st_asgeojson', 

359 'st_astext', 

360 'st_aswkb', 

361 'st_aswkt', 

362 'st_buffer', 

363 'st_buffer_strategy', 

364 'st_centroid', 

365 'st_collect', 

366 'st_contains', 

367 'st_convexhull', 

368 'st_crosses', 

369 'st_difference', 

370 'st_dimension', 

371 'st_disjoint', 

372 'st_distance', 

373 'st_distance_sphere', 

374 'st_endpoint', 

375 'st_envelope', 

376 'st_equals', 

377 'st_exteriorring', 

378 'st_frechetdistance', 

379 'st_geohash', 

380 'st_geomcollfromtext', 

381 'st_geomcollfromtxt', 

382 'st_geomcollfromwkb', 

383 'st_geometrycollectionfromtext', 

384 'st_geometrycollectionfromwkb', 

385 'st_geometryfromtext', 

386 'st_geometryfromwkb', 

387 'st_geometryn', 

388 'st_geometrytype', 

389 'st_geomfromgeojson', 

390 'st_geomfromtext', 

391 'st_geomfromwkb', 

392 'st_hausdorffdistance', 

393 'st_interiorringn', 

394 'st_intersection', 

395 'st_intersects', 

396 'st_isclosed', 

397 'st_isempty', 

398 'st_issimple', 

399 'st_isvalid', 

400 'st_latfromgeohash', 

401 'st_latitude', 

402 'st_length', 

403 'st_linefromtext', 

404 'st_linefromwkb', 

405 'st_lineinterpolatepoint', 

406 'st_lineinterpolatepoints', 

407 'st_linestringfromtext', 

408 'st_linestringfromwkb', 

409 'st_longfromgeohash', 

410 'st_longitude', 

411 'st_makeenvelope', 

412 'st_mlinefromtext', 

413 'st_mlinefromwkb', 

414 'st_mpointfromtext', 

415 'st_mpointfromwkb', 

416 'st_mpolyfromtext', 

417 'st_mpolyfromwkb', 

418 'st_multilinestringfromtext', 

419 'st_multilinestringfromwkb', 

420 'st_multipointfromtext', 

421 'st_multipointfromwkb', 

422 'st_multipolygonfromtext', 

423 'st_multipolygonfromwkb', 

424 'st_numgeometries', 

425 'st_numinteriorring', 

426 'st_numinteriorrings', 

427 'st_numpoints', 

428 'st_overlaps', 

429 'st_pointatdistance', 

430 'st_pointfromgeohash', 

431 'st_pointfromtext', 

432 'st_pointfromwkb', 

433 'st_pointn', 

434 'st_polyfromtext', 

435 'st_polyfromwkb', 

436 'st_polygonfromtext', 

437 'st_polygonfromwkb', 

438 'st_simplify', 

439 'st_srid', 

440 'st_startpoint', 

441 'st_swapxy', 

442 'st_symdifference', 

443 'st_touches', 

444 'st_transform', 

445 'st_union', 

446 'st_validate', 

447 'st_within', 

448 'st_x', 

449 'st_y', 

450 'statement_digest', 

451 'statement_digest_text', 

452 'std', 

453 'stddev', 

454 'stddev_pop', 

455 'stddev_samp', 

456 'str_to_date', 

457 'strcmp', 

458 'subdate', 

459 'substr', 

460 'substring', 

461 'substring_index', 

462 'subtime', 

463 'sum', 

464 'sysdate', 

465 'system_user', 

466 'tan', 

467 'time_format', 

468 'time_to_sec', 

469 'timediff', 

470 'to_base64', 

471 'to_days', 

472 'to_seconds', 

473 'trim', 

474 'ucase', 

475 'uncompress', 

476 'uncompressed_length', 

477 'unhex', 

478 'unix_timestamp', 

479 'updatexml', 

480 'upper', 

481 'uuid', 

482 'uuid_short', 

483 'uuid_to_bin', 

484 'validate_password_strength', 

485 'var_pop', 

486 'var_samp', 

487 'variance', 

488 'version', 

489 'wait_for_executed_gtid_set', 

490 'wait_until_sql_thread_after_gtids', 

491 'weekday', 

492 'weekofyear', 

493 'yearweek', 

494) 

495 

496 

497MYSQL_OPTIMIZER_HINTS = ( 

498 'bka', 

499 'bnl', 

500 'derived_condition_pushdown', 

501 'dupsweedout', 

502 'firstmatch', 

503 'group_index', 

504 'hash_join', 

505 'index', 

506 'index_merge', 

507 'intoexists', 

508 'join_fixed_order', 

509 'join_index', 

510 'join_order', 

511 'join_prefix', 

512 'join_suffix', 

513 'loosescan', 

514 'materialization', 

515 'max_execution_time', 

516 'merge', 

517 'mrr', 

518 'no_bka', 

519 'no_bnl', 

520 'no_derived_condition_pushdown', 

521 'no_group_index', 

522 'no_hash_join', 

523 'no_icp', 

524 'no_index', 

525 'no_index_merge', 

526 'no_join_index', 

527 'no_merge', 

528 'no_mrr', 

529 'no_order_index', 

530 'no_range_optimization', 

531 'no_semijoin', 

532 'no_skip_scan', 

533 'order_index', 

534 'qb_name', 

535 'resource_group', 

536 'semijoin', 

537 'set_var', 

538 'skip_scan', 

539 'subquery', 

540) 

541 

542 

543MYSQL_KEYWORDS = ( 

544 'accessible', 

545 'account', 

546 'action', 

547 'active', 

548 'add', 

549 'admin', 

550 'after', 

551 'against', 

552 'aggregate', 

553 'algorithm', 

554 'all', 

555 'alter', 

556 'always', 

557 'analyze', 

558 'and', 

559 'any', 

560 'array', 

561 'as', 

562 'asc', 

563 'ascii', 

564 'asensitive', 

565 'assign_gtids_to_anonymous_transactions', 

566 'at', 

567 'attribute', 

568 'authentication', 

569 'auto_increment', 

570 'autoextend_size', 

571 'avg', 

572 'avg_row_length', 

573 'backup', 

574 'before', 

575 'begin', 

576 'between', 

577 'binlog', 

578 'block', 

579 'both', 

580 'btree', 

581 'buckets', 

582 'by', 

583 'byte', 

584 'cache', 

585 'call', 

586 'cascade', 

587 'cascaded', 

588 'case', 

589 'catalog_name', 

590 'chain', 

591 'challenge_response', 

592 'change', 

593 'changed', 

594 'channel', 

595 'character', 

596 'charset', 

597 'check', 

598 'checksum', 

599 'cipher', 

600 'class_origin', 

601 'client', 

602 'clone', 

603 'close', 

604 'coalesce', 

605 'code', 

606 'collate', 

607 'collation', 

608 'column', 

609 'column_format', 

610 'column_name', 

611 'columns', 

612 'comment', 

613 'commit', 

614 'committed', 

615 'compact', 

616 'completion', 

617 'component', 

618 'compressed', 

619 'compression', 

620 'concurrent', 

621 'condition', 

622 'connection', 

623 'consistent', 

624 'constraint', 

625 'constraint_catalog', 

626 'constraint_name', 

627 'constraint_schema', 

628 'contains', 

629 'context', 

630 'continue', 

631 'convert', 

632 'cpu', 

633 'create', 

634 'cross', 

635 'cube', 

636 'cume_dist', 

637 'current', 

638 'current_date', 

639 'current_time', 

640 'current_timestamp', 

641 'current_user', 

642 'cursor', 

643 'cursor_name', 

644 'data', 

645 'database', 

646 'databases', 

647 'datafile', 

648 'day', 

649 'day_hour', 

650 'day_microsecond', 

651 'day_minute', 

652 'day_second', 

653 'deallocate', 

654 'declare', 

655 'default', 

656 'default_auth', 

657 'definer', 

658 'definition', 

659 'delay_key_write', 

660 'delayed', 

661 'delete', 

662 'dense_rank', 

663 'desc', 

664 'describe', 

665 'description', 

666 'deterministic', 

667 'diagnostics', 

668 'directory', 

669 'disable', 

670 'discard', 

671 'disk', 

672 'distinct', 

673 'distinctrow', 

674 'div', 

675 'do', 

676 'drop', 

677 'dual', 

678 'dumpfile', 

679 'duplicate', 

680 'dynamic', 

681 'each', 

682 'else', 

683 'elseif', 

684 'empty', 

685 'enable', 

686 'enclosed', 

687 'encryption', 

688 'end', 

689 'ends', 

690 'enforced', 

691 'engine', 

692 'engine_attribute', 

693 'engines', 

694 'error', 

695 'errors', 

696 'escape', 

697 'escaped', 

698 'event', 

699 'events', 

700 'every', 

701 'except', 

702 'exchange', 

703 'exclude', 

704 'execute', 

705 'exists', 

706 'exit', 

707 'expansion', 

708 'expire', 

709 'explain', 

710 'export', 

711 'extended', 

712 'extent_size', 

713 'factor', 

714 'failed_login_attempts', 

715 'false', 

716 'fast', 

717 'faults', 

718 'fetch', 

719 'fields', 

720 'file', 

721 'file_block_size', 

722 'filter', 

723 'finish', 

724 'first', 

725 'first_value', 

726 'flush', 

727 'following', 

728 'follows', 

729 'for', 

730 'force', 

731 'foreign', 

732 'format', 

733 'found', 

734 'from', 

735 'full', 

736 'fulltext', 

737 'function', 

738 'general', 

739 'generated', 

740 'geomcollection', 

741 'get', 

742 'get_format', 

743 'get_master_public_key', 

744 'get_source_public_key', 

745 'global', 

746 'grant', 

747 'grants', 

748 'group', 

749 'group_replication', 

750 'grouping', 

751 'groups', 

752 'gtid_only', 

753 'handler', 

754 'hash', 

755 'having', 

756 'help', 

757 'high_priority', 

758 'histogram', 

759 'history', 

760 'host', 

761 'hosts', 

762 'hour', 

763 'hour_microsecond', 

764 'hour_minute', 

765 'hour_second', 

766 'identified', 

767 'if', 

768 'ignore', 

769 'ignore_server_ids', 

770 'import', 

771 'in', 

772 'inactive', 

773 'index', 

774 'indexes', 

775 'infile', 

776 'initial', 

777 'initial_size', 

778 'initiate', 

779 'inner', 

780 'inout', 

781 'insensitive', 

782 'insert', 

783 'insert_method', 

784 'install', 

785 'instance', 

786 'interval', 

787 'into', 

788 'invisible', 

789 'invoker', 

790 'io', 

791 'io_after_gtids', 

792 'io_before_gtids', 

793 'io_thread', 

794 'ipc', 

795 'is', 

796 'isolation', 

797 'issuer', 

798 'iterate', 

799 'join', 

800 'json_table', 

801 'json_value', 

802 'key', 

803 'key_block_size', 

804 'keyring', 

805 'keys', 

806 'kill', 

807 'lag', 

808 'language', 

809 'last', 

810 'last_value', 

811 'lateral', 

812 'lead', 

813 'leading', 

814 'leave', 

815 'leaves', 

816 'left', 

817 'less', 

818 'level', 

819 'like', 

820 'limit', 

821 'linear', 

822 'lines', 

823 'list', 

824 'load', 

825 'local', 

826 'localtime', 

827 'localtimestamp', 

828 'lock', 

829 'locked', 

830 'locks', 

831 'logfile', 

832 'logs', 

833 'loop', 

834 'low_priority', 

835 'master', 

836 'master_auto_position', 

837 'master_bind', 

838 'master_compression_algorithms', 

839 'master_connect_retry', 

840 'master_delay', 

841 'master_heartbeat_period', 

842 'master_host', 

843 'master_log_file', 

844 'master_log_pos', 

845 'master_password', 

846 'master_port', 

847 'master_public_key_path', 

848 'master_retry_count', 

849 'master_ssl', 

850 'master_ssl_ca', 

851 'master_ssl_capath', 

852 'master_ssl_cert', 

853 'master_ssl_cipher', 

854 'master_ssl_crl', 

855 'master_ssl_crlpath', 

856 'master_ssl_key', 

857 'master_ssl_verify_server_cert', 

858 'master_tls_ciphersuites', 

859 'master_tls_version', 

860 'master_user', 

861 'master_zstd_compression_level', 

862 'match', 

863 'max_connections_per_hour', 

864 'max_queries_per_hour', 

865 'max_rows', 

866 'max_size', 

867 'max_updates_per_hour', 

868 'max_user_connections', 

869 'maxvalue', 

870 'medium', 

871 'member', 

872 'memory', 

873 'merge', 

874 'message_text', 

875 'microsecond', 

876 'migrate', 

877 'min_rows', 

878 'minute', 

879 'minute_microsecond', 

880 'minute_second', 

881 'mod', 

882 'mode', 

883 'modifies', 

884 'modify', 

885 'month', 

886 'mutex', 

887 'mysql_errno', 

888 'name', 

889 'names', 

890 'natural', 

891 'ndb', 

892 'ndbcluster', 

893 'nested', 

894 'network_namespace', 

895 'never', 

896 'new', 

897 'next', 

898 'no', 

899 'no_wait', 

900 'no_write_to_binlog', 

901 'nodegroup', 

902 'none', 

903 'not', 

904 'nowait', 

905 'nth_value', 

906 'ntile', 

907 'null', 

908 'nulls', 

909 'number', 

910 'of', 

911 'off', 

912 'offset', 

913 'oj', 

914 'old', 

915 'on', 

916 'one', 

917 'only', 

918 'open', 

919 'optimize', 

920 'optimizer_costs', 

921 'option', 

922 'optional', 

923 'optionally', 

924 'options', 

925 'or', 

926 'order', 

927 'ordinality', 

928 'organization', 

929 'others', 

930 'out', 

931 'outer', 

932 'outfile', 

933 'over', 

934 'owner', 

935 'pack_keys', 

936 'page', 

937 'parser', 

938 'partial', 

939 'partition', 

940 'partitioning', 

941 'partitions', 

942 'password', 

943 'password_lock_time', 

944 'path', 

945 'percent_rank', 

946 'persist', 

947 'persist_only', 

948 'phase', 

949 'plugin', 

950 'plugin_dir', 

951 'plugins', 

952 'port', 

953 'precedes', 

954 'preceding', 

955 'prepare', 

956 'preserve', 

957 'prev', 

958 'primary', 

959 'privilege_checks_user', 

960 'privileges', 

961 'procedure', 

962 'process', 

963 'processlist', 

964 'profile', 

965 'profiles', 

966 'proxy', 

967 'purge', 

968 'quarter', 

969 'query', 

970 'quick', 

971 'random', 

972 'range', 

973 'rank', 

974 'read', 

975 'read_only', 

976 'read_write', 

977 'reads', 

978 'rebuild', 

979 'recover', 

980 'recursive', 

981 'redo_buffer_size', 

982 'redundant', 

983 'reference', 

984 'references', 

985 'regexp', 

986 'registration', 

987 'relay', 

988 'relay_log_file', 

989 'relay_log_pos', 

990 'relay_thread', 

991 'relaylog', 

992 'release', 

993 'reload', 

994 'remove', 

995 'rename', 

996 'reorganize', 

997 'repair', 

998 'repeat', 

999 'repeatable', 

1000 'replace', 

1001 'replica', 

1002 'replicas', 

1003 'replicate_do_db', 

1004 'replicate_do_table', 

1005 'replicate_ignore_db', 

1006 'replicate_ignore_table', 

1007 'replicate_rewrite_db', 

1008 'replicate_wild_do_table', 

1009 'replicate_wild_ignore_table', 

1010 'replication', 

1011 'require', 

1012 'require_row_format', 

1013 'require_table_primary_key_check', 

1014 'reset', 

1015 'resignal', 

1016 'resource', 

1017 'respect', 

1018 'restart', 

1019 'restore', 

1020 'restrict', 

1021 'resume', 

1022 'retain', 

1023 'return', 

1024 'returned_sqlstate', 

1025 'returning', 

1026 'returns', 

1027 'reuse', 

1028 'reverse', 

1029 'revoke', 

1030 'right', 

1031 'rlike', 

1032 'role', 

1033 'rollback', 

1034 'rollup', 

1035 'rotate', 

1036 'routine', 

1037 'row', 

1038 'row_count', 

1039 'row_format', 

1040 'row_number', 

1041 'rows', 

1042 'rtree', 

1043 'savepoint', 

1044 'schedule', 

1045 'schema', 

1046 'schema_name', 

1047 'schemas', 

1048 'second', 

1049 'second_microsecond', 

1050 'secondary', 

1051 'secondary_engine', 

1052 'secondary_engine_attribute', 

1053 'secondary_load', 

1054 'secondary_unload', 

1055 'security', 

1056 'select', 

1057 'sensitive', 

1058 'separator', 

1059 'serializable', 

1060 'server', 

1061 'session', 

1062 'share', 

1063 'show', 

1064 'shutdown', 

1065 'signal', 

1066 'signed', 

1067 'simple', 

1068 'skip', 

1069 'slave', 

1070 'slow', 

1071 'snapshot', 

1072 'socket', 

1073 'some', 

1074 'soname', 

1075 'sounds', 

1076 'source', 

1077 'source_auto_position', 

1078 'source_bind', 

1079 'source_compression_algorithms', 

1080 'source_connect_retry', 

1081 'source_connection_auto_failover', 

1082 'source_delay', 

1083 'source_heartbeat_period', 

1084 'source_host', 

1085 'source_log_file', 

1086 'source_log_pos', 

1087 'source_password', 

1088 'source_port', 

1089 'source_public_key_path', 

1090 'source_retry_count', 

1091 'source_ssl', 

1092 'source_ssl_ca', 

1093 'source_ssl_capath', 

1094 'source_ssl_cert', 

1095 'source_ssl_cipher', 

1096 'source_ssl_crl', 

1097 'source_ssl_crlpath', 

1098 'source_ssl_key', 

1099 'source_ssl_verify_server_cert', 

1100 'source_tls_ciphersuites', 

1101 'source_tls_version', 

1102 'source_user', 

1103 'source_zstd_compression_level', 

1104 'spatial', 

1105 'specific', 

1106 'sql', 

1107 'sql_after_gtids', 

1108 'sql_after_mts_gaps', 

1109 'sql_before_gtids', 

1110 'sql_big_result', 

1111 'sql_buffer_result', 

1112 'sql_calc_found_rows', 

1113 'sql_no_cache', 

1114 'sql_small_result', 

1115 'sql_thread', 

1116 'sql_tsi_day', 

1117 'sql_tsi_hour', 

1118 'sql_tsi_minute', 

1119 'sql_tsi_month', 

1120 'sql_tsi_quarter', 

1121 'sql_tsi_second', 

1122 'sql_tsi_week', 

1123 'sql_tsi_year', 

1124 'sqlexception', 

1125 'sqlstate', 

1126 'sqlwarning', 

1127 'srid', 

1128 'ssl', 

1129 'stacked', 

1130 'start', 

1131 'starting', 

1132 'starts', 

1133 'stats_auto_recalc', 

1134 'stats_persistent', 

1135 'stats_sample_pages', 

1136 'status', 

1137 'stop', 

1138 'storage', 

1139 'stored', 

1140 'straight_join', 

1141 'stream', 

1142 'string', 

1143 'subclass_origin', 

1144 'subject', 

1145 'subpartition', 

1146 'subpartitions', 

1147 'super', 

1148 'suspend', 

1149 'swaps', 

1150 'switches', 

1151 'system', 

1152 'table', 

1153 'table_checksum', 

1154 'table_name', 

1155 'tables', 

1156 'tablespace', 

1157 'temporary', 

1158 'temptable', 

1159 'terminated', 

1160 'than', 

1161 'then', 

1162 'thread_priority', 

1163 'ties', 

1164 'timestampadd', 

1165 'timestampdiff', 

1166 'tls', 

1167 'to', 

1168 'trailing', 

1169 'transaction', 

1170 'trigger', 

1171 'triggers', 

1172 'true', 

1173 'truncate', 

1174 'type', 

1175 'types', 

1176 'unbounded', 

1177 'uncommitted', 

1178 'undefined', 

1179 'undo', 

1180 'undo_buffer_size', 

1181 'undofile', 

1182 'unicode', 

1183 'uninstall', 

1184 'union', 

1185 'unique', 

1186 'unknown', 

1187 'unlock', 

1188 'unregister', 

1189 'unsigned', 

1190 'until', 

1191 'update', 

1192 'upgrade', 

1193 'usage', 

1194 'use', 

1195 'use_frm', 

1196 'user', 

1197 'user_resources', 

1198 'using', 

1199 'utc_date', 

1200 'utc_time', 

1201 'utc_timestamp', 

1202 'validation', 

1203 'value', 

1204 'values', 

1205 'variables', 

1206 'vcpu', 

1207 'view', 

1208 'virtual', 

1209 'visible', 

1210 'wait', 

1211 'warnings', 

1212 'week', 

1213 'weight_string', 

1214 'when', 

1215 'where', 

1216 'while', 

1217 'window', 

1218 'with', 

1219 'without', 

1220 'work', 

1221 'wrapper', 

1222 'write', 

1223 'x509', 

1224 'xa', 

1225 'xid', 

1226 'xml', 

1227 'xor', 

1228 'year_month', 

1229 'zerofill', 

1230 'zone', 

1231) 

1232 

1233 

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

1235 import re 

1236 from urllib.request import urlopen 

1237 

1238 from pygments.util import format_lines 

1239 

1240 # MySQL source code 

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

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

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

1244 

1245 

1246 def update_myself(): 

1247 # Pull content from lex.h. 

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

1249 keywords = parse_lex_keywords(lex_file) 

1250 functions = parse_lex_functions(lex_file) 

1251 optimizer_hints = parse_lex_optimizer_hints(lex_file) 

1252 

1253 # Parse content in item_create.cc. 

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

1255 functions.update(parse_item_create_functions(item_create_file)) 

1256 

1257 # Remove data types from the set of keywords. 

1258 keywords -= set(MYSQL_DATATYPES) 

1259 

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

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

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

1263 

1264 

1265 def parse_lex_keywords(f): 

1266 """Parse keywords in lex.h.""" 

1267 

1268 results = set() 

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

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

1271 

1272 if not results: 

1273 raise ValueError('No keywords found') 

1274 

1275 return results 

1276 

1277 

1278 def parse_lex_optimizer_hints(f): 

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

1280 

1281 results = set() 

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

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

1284 

1285 if not results: 

1286 raise ValueError('No optimizer hints found') 

1287 

1288 return results 

1289 

1290 

1291 def parse_lex_functions(f): 

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

1293 

1294 results = set() 

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

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

1297 

1298 if not results: 

1299 raise ValueError('No lex functions found') 

1300 

1301 return results 

1302 

1303 

1304 def parse_item_create_functions(f): 

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

1306 

1307 results = set() 

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

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

1310 

1311 if not results: 

1312 raise ValueError('No item_create functions found') 

1313 

1314 return results 

1315 

1316 

1317 def update_content(field_name, content): 

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

1319 

1320 with open(__file__, encoding="utf-8") as f: 

1321 data = f.read() 

1322 

1323 # Line to start/end inserting 

1324 re_match = re.compile(rf'^{field_name}\s*=\s*\($.*?^\s*\)$', re.M | re.S) 

1325 m = re_match.search(data) 

1326 if not m: 

1327 raise ValueError(f'Could not find an existing definition for {field_name}') 

1328 

1329 new_block = format_lines(field_name, content) 

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

1331 

1332 with open(__file__, 'w', encoding='utf-8', newline='\n') as f: 

1333 f.write(data) 

1334 

1335 update_myself()