| """ |
| pygments.lexers._mysql_builtins |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Self-updating data files for the MySQL lexer. |
| |
| Run with `python -I` to update. |
| |
| :copyright: Copyright 2006-present by the Pygments team, see AUTHORS. |
| :license: BSD, see LICENSE for details. |
| """ |
|
|
|
|
| MYSQL_CONSTANTS = ( |
| 'false', |
| 'null', |
| 'true', |
| 'unknown', |
| ) |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| MYSQL_DATATYPES = ( |
| |
| 'bigint', |
| 'bit', |
| 'bool', |
| 'boolean', |
| 'dec', |
| 'decimal', |
| 'double', |
| 'fixed', |
| 'float', |
| 'float4', |
| 'float8', |
| 'int', |
| 'int1', |
| 'int2', |
| 'int3', |
| 'int4', |
| 'int8', |
| 'integer', |
| 'mediumint', |
| 'middleint', |
| 'numeric', |
| 'precision', |
| 'real', |
| 'serial', |
| 'smallint', |
| 'tinyint', |
|
|
| |
| 'date', |
| 'datetime', |
| 'time', |
| 'timestamp', |
| 'year', |
|
|
| |
| 'binary', |
| 'blob', |
| 'byte', |
| 'char', |
| 'enum', |
| 'long', |
| 'longblob', |
| 'longtext', |
| 'mediumblob', |
| 'mediumtext', |
| 'national', |
| 'nchar', |
| 'nvarchar', |
| 'set', |
| 'text', |
| 'tinyblob', |
| 'tinytext', |
| 'varbinary', |
| 'varchar', |
| 'varcharacter', |
| 'varying', |
|
|
| |
| 'geometry', |
| 'geometrycollection', |
| 'linestring', |
| 'multilinestring', |
| 'multipoint', |
| 'multipolygon', |
| 'point', |
| 'polygon', |
|
|
| |
| 'json', |
| ) |
|
|
| |
| |
| |
|
|
| MYSQL_FUNCTIONS = ( |
| 'abs', |
| 'acos', |
| 'adddate', |
| 'addtime', |
| 'aes_decrypt', |
| 'aes_encrypt', |
| 'any_value', |
| 'asin', |
| 'atan', |
| 'atan2', |
| 'benchmark', |
| 'bin', |
| 'bin_to_uuid', |
| 'bit_and', |
| 'bit_count', |
| 'bit_length', |
| 'bit_or', |
| 'bit_xor', |
| 'can_access_column', |
| 'can_access_database', |
| 'can_access_event', |
| 'can_access_resource_group', |
| 'can_access_routine', |
| 'can_access_table', |
| 'can_access_trigger', |
| 'can_access_user', |
| 'can_access_view', |
| 'cast', |
| 'ceil', |
| 'ceiling', |
| 'char_length', |
| 'character_length', |
| 'coercibility', |
| 'compress', |
| 'concat', |
| 'concat_ws', |
| 'connection_id', |
| 'conv', |
| 'convert_cpu_id_mask', |
| 'convert_interval_to_user_interval', |
| 'convert_tz', |
| 'cos', |
| 'cot', |
| 'count', |
| 'crc32', |
| 'curdate', |
| 'current_role', |
| 'curtime', |
| 'date_add', |
| 'date_format', |
| 'date_sub', |
| 'datediff', |
| 'dayname', |
| 'dayofmonth', |
| 'dayofweek', |
| 'dayofyear', |
| 'degrees', |
| 'elt', |
| 'etag', |
| 'exp', |
| 'export_set', |
| 'extract', |
| 'extractvalue', |
| 'field', |
| 'find_in_set', |
| 'floor', |
| 'format_bytes', |
| 'format_pico_time', |
| 'found_rows', |
| 'from_base64', |
| 'from_days', |
| 'from_unixtime', |
| 'from_vector', |
| 'get_dd_column_privileges', |
| 'get_dd_create_options', |
| 'get_dd_index_private_data', |
| 'get_dd_index_sub_part_length', |
| 'get_dd_property_key_value', |
| 'get_dd_schema_options', |
| 'get_dd_tablespace_private_data', |
| 'get_jdv_property_key_value', |
| 'get_lock', |
| 'greatest', |
| 'group_concat', |
| 'gtid_subset', |
| 'gtid_subtract', |
| 'hex', |
| 'icu_version', |
| 'ifnull', |
| 'inet6_aton', |
| 'inet6_ntoa', |
| 'inet_aton', |
| 'inet_ntoa', |
| 'instr', |
| 'internal_auto_increment', |
| 'internal_avg_row_length', |
| 'internal_check_time', |
| 'internal_checksum', |
| 'internal_data_free', |
| 'internal_data_length', |
| 'internal_dd_char_length', |
| 'internal_get_comment_or_error', |
| 'internal_get_dd_column_extra', |
| 'internal_get_enabled_role_json', |
| 'internal_get_hostname', |
| 'internal_get_mandatory_roles_json', |
| 'internal_get_partition_nodegroup', |
| 'internal_get_username', |
| 'internal_get_view_warning_or_error', |
| 'internal_index_column_cardinality', |
| 'internal_index_length', |
| 'internal_is_enabled_role', |
| 'internal_is_mandatory_role', |
| 'internal_keys_disabled', |
| 'internal_max_data_length', |
| 'internal_table_rows', |
| 'internal_tablespace_autoextend_size', |
| 'internal_tablespace_data_free', |
| 'internal_tablespace_extent_size', |
| 'internal_tablespace_extra', |
| 'internal_tablespace_free_extents', |
| 'internal_tablespace_id', |
| 'internal_tablespace_initial_size', |
| 'internal_tablespace_logfile_group_name', |
| 'internal_tablespace_logfile_group_number', |
| 'internal_tablespace_maximum_size', |
| 'internal_tablespace_row_format', |
| 'internal_tablespace_status', |
| 'internal_tablespace_total_extents', |
| 'internal_tablespace_type', |
| 'internal_tablespace_version', |
| 'internal_update_time', |
| 'internal_use_terminology_previous', |
| 'is_free_lock', |
| 'is_ipv4', |
| 'is_ipv4_compat', |
| 'is_ipv4_mapped', |
| 'is_ipv6', |
| 'is_used_lock', |
| 'is_uuid', |
| 'is_visible_dd_object', |
| 'isnull', |
| 'json_array', |
| 'json_array_append', |
| 'json_array_insert', |
| 'json_arrayagg', |
| 'json_contains', |
| 'json_contains_path', |
| 'json_depth', |
| 'json_duality_object', |
| 'json_extract', |
| 'json_insert', |
| 'json_keys', |
| 'json_length', |
| 'json_merge', |
| 'json_merge_patch', |
| 'json_merge_preserve', |
| 'json_object', |
| 'json_objectagg', |
| 'json_overlaps', |
| 'json_pretty', |
| 'json_quote', |
| 'json_remove', |
| 'json_replace', |
| 'json_schema_valid', |
| 'json_schema_validation_report', |
| 'json_search', |
| 'json_set', |
| 'json_storage_free', |
| 'json_storage_size', |
| 'json_type', |
| 'json_unquote', |
| 'json_valid', |
| 'last_day', |
| 'last_insert_id', |
| 'lcase', |
| 'least', |
| 'length', |
| 'like_range_max', |
| 'like_range_min', |
| 'ln', |
| 'load_file', |
| 'locate', |
| 'log', |
| 'log10', |
| 'log2', |
| 'lower', |
| 'lpad', |
| 'ltrim', |
| 'make_set', |
| 'makedate', |
| 'maketime', |
| 'master_pos_wait', |
| 'max', |
| 'mbrcontains', |
| 'mbrcoveredby', |
| 'mbrcovers', |
| 'mbrdisjoint', |
| 'mbrequals', |
| 'mbrintersects', |
| 'mbroverlaps', |
| 'mbrtouches', |
| 'mbrwithin', |
| 'md5', |
| 'mid', |
| 'min', |
| 'monthname', |
| 'name_const', |
| 'now', |
| 'nullif', |
| 'oct', |
| 'octet_length', |
| 'ord', |
| 'period_add', |
| 'period_diff', |
| 'pi', |
| 'position', |
| 'pow', |
| 'power', |
| 'ps_current_thread_id', |
| 'ps_thread_id', |
| 'quote', |
| 'radians', |
| 'rand', |
| 'random_bytes', |
| 'regexp_instr', |
| 'regexp_like', |
| 'regexp_replace', |
| 'regexp_substr', |
| 'release_all_locks', |
| 'release_lock', |
| 'remove_dd_property_key', |
| 'reverse', |
| 'roles_graphml', |
| 'round', |
| 'rpad', |
| 'rtrim', |
| 'sec_to_time', |
| 'session_user', |
| 'sha', |
| 'sha1', |
| 'sha2', |
| 'sign', |
| 'sin', |
| 'sleep', |
| 'soundex', |
| 'source_pos_wait', |
| 'space', |
| 'sqrt', |
| 'st_area', |
| 'st_asbinary', |
| 'st_asgeojson', |
| 'st_astext', |
| 'st_aswkb', |
| 'st_aswkt', |
| 'st_buffer', |
| 'st_buffer_strategy', |
| 'st_centroid', |
| 'st_collect', |
| 'st_contains', |
| 'st_convexhull', |
| 'st_crosses', |
| 'st_difference', |
| 'st_dimension', |
| 'st_disjoint', |
| 'st_distance', |
| 'st_distance_sphere', |
| 'st_endpoint', |
| 'st_envelope', |
| 'st_equals', |
| 'st_exteriorring', |
| 'st_frechetdistance', |
| 'st_geohash', |
| 'st_geomcollfromtext', |
| 'st_geomcollfromtxt', |
| 'st_geomcollfromwkb', |
| 'st_geometrycollectionfromtext', |
| 'st_geometrycollectionfromwkb', |
| 'st_geometryfromtext', |
| 'st_geometryfromwkb', |
| 'st_geometryn', |
| 'st_geometrytype', |
| 'st_geomfromgeojson', |
| 'st_geomfromtext', |
| 'st_geomfromwkb', |
| 'st_hausdorffdistance', |
| 'st_interiorringn', |
| 'st_intersection', |
| 'st_intersects', |
| 'st_isclosed', |
| 'st_isempty', |
| 'st_issimple', |
| 'st_isvalid', |
| 'st_latfromgeohash', |
| 'st_latitude', |
| 'st_length', |
| 'st_linefromtext', |
| 'st_linefromwkb', |
| 'st_lineinterpolatepoint', |
| 'st_lineinterpolatepoints', |
| 'st_linestringfromtext', |
| 'st_linestringfromwkb', |
| 'st_longfromgeohash', |
| 'st_longitude', |
| 'st_makeenvelope', |
| 'st_mlinefromtext', |
| 'st_mlinefromwkb', |
| 'st_mpointfromtext', |
| 'st_mpointfromwkb', |
| 'st_mpolyfromtext', |
| 'st_mpolyfromwkb', |
| 'st_multilinestringfromtext', |
| 'st_multilinestringfromwkb', |
| 'st_multipointfromtext', |
| 'st_multipointfromwkb', |
| 'st_multipolygonfromtext', |
| 'st_multipolygonfromwkb', |
| 'st_numgeometries', |
| 'st_numinteriorring', |
| 'st_numinteriorrings', |
| 'st_numpoints', |
| 'st_overlaps', |
| 'st_pointatdistance', |
| 'st_pointfromgeohash', |
| 'st_pointfromtext', |
| 'st_pointfromwkb', |
| 'st_pointn', |
| 'st_polyfromtext', |
| 'st_polyfromwkb', |
| 'st_polygonfromtext', |
| 'st_polygonfromwkb', |
| 'st_simplify', |
| 'st_srid', |
| 'st_startpoint', |
| 'st_swapxy', |
| 'st_symdifference', |
| 'st_touches', |
| 'st_transform', |
| 'st_union', |
| 'st_validate', |
| 'st_within', |
| 'st_x', |
| 'st_y', |
| 'statement_digest', |
| 'statement_digest_text', |
| 'std', |
| 'stddev', |
| 'stddev_pop', |
| 'stddev_samp', |
| 'str_to_date', |
| 'strcmp', |
| 'string_to_vector', |
| 'subdate', |
| 'substr', |
| 'substring', |
| 'substring_index', |
| 'subtime', |
| 'sum', |
| 'sysdate', |
| 'system_user', |
| 'tan', |
| 'time_format', |
| 'time_to_sec', |
| 'timediff', |
| 'to_base64', |
| 'to_days', |
| 'to_seconds', |
| 'to_vector', |
| 'trim', |
| 'ucase', |
| 'uncompress', |
| 'uncompressed_length', |
| 'unhex', |
| 'unix_timestamp', |
| 'updatexml', |
| 'upper', |
| 'uuid', |
| 'uuid_short', |
| 'uuid_to_bin', |
| 'validate_password_strength', |
| 'var_pop', |
| 'var_samp', |
| 'variance', |
| 'vector_dim', |
| 'vector_to_string', |
| 'version', |
| 'wait_for_executed_gtid_set', |
| 'wait_until_sql_thread_after_gtids', |
| 'weekday', |
| 'weekofyear', |
| 'yearweek', |
| ) |
|
|
|
|
| MYSQL_OPTIMIZER_HINTS = ( |
| 'bka', |
| 'bnl', |
| 'derived_condition_pushdown', |
| 'dupsweedout', |
| 'firstmatch', |
| 'group_index', |
| 'hash_join', |
| 'index', |
| 'index_merge', |
| 'intoexists', |
| 'join_fixed_order', |
| 'join_index', |
| 'join_order', |
| 'join_prefix', |
| 'join_suffix', |
| 'loosescan', |
| 'materialization', |
| 'max_execution_time', |
| 'merge', |
| 'mrr', |
| 'no_bka', |
| 'no_bnl', |
| 'no_derived_condition_pushdown', |
| 'no_group_index', |
| 'no_hash_join', |
| 'no_icp', |
| 'no_index', |
| 'no_index_merge', |
| 'no_join_index', |
| 'no_merge', |
| 'no_mrr', |
| 'no_order_index', |
| 'no_range_optimization', |
| 'no_semijoin', |
| 'no_skip_scan', |
| 'order_index', |
| 'qb_name', |
| 'resource_group', |
| 'semijoin', |
| 'set_var', |
| 'skip_scan', |
| 'subquery', |
| ) |
|
|
|
|
| MYSQL_KEYWORDS = ( |
| 'absent', |
| 'accessible', |
| 'account', |
| 'action', |
| 'active', |
| 'add', |
| 'admin', |
| 'after', |
| 'against', |
| 'aggregate', |
| 'algorithm', |
| 'all', |
| 'allow_missing_files', |
| 'alter', |
| 'always', |
| 'analyze', |
| 'and', |
| 'any', |
| 'array', |
| 'as', |
| 'asc', |
| 'ascii', |
| 'asensitive', |
| 'assign_gtids_to_anonymous_transactions', |
| 'at', |
| 'attribute', |
| 'authentication', |
| 'auto', |
| 'auto_increment', |
| 'auto_refresh', |
| 'auto_refresh_source', |
| 'autoextend_size', |
| 'avg', |
| 'avg_row_length', |
| 'backup', |
| 'before', |
| 'begin', |
| 'bernoulli', |
| 'between', |
| 'binlog', |
| 'block', |
| 'both', |
| 'btree', |
| 'buckets', |
| 'bulk', |
| 'by', |
| 'cache', |
| 'call', |
| 'cascade', |
| 'cascaded', |
| 'case', |
| 'catalog_name', |
| 'chain', |
| 'challenge_response', |
| 'change', |
| 'changed', |
| 'channel', |
| 'character', |
| 'charset', |
| 'check', |
| 'checksum', |
| 'cipher', |
| 'class_origin', |
| 'client', |
| 'clone', |
| 'close', |
| 'coalesce', |
| 'code', |
| 'collate', |
| 'collation', |
| 'column', |
| 'column_format', |
| 'column_name', |
| 'columns', |
| 'comment', |
| 'commit', |
| 'committed', |
| 'compact', |
| 'completion', |
| 'component', |
| 'compressed', |
| 'compression', |
| 'concurrent', |
| 'condition', |
| 'connection', |
| 'consistent', |
| 'constraint', |
| 'constraint_catalog', |
| 'constraint_name', |
| 'constraint_schema', |
| 'contains', |
| 'context', |
| 'continue', |
| 'convert', |
| 'cpu', |
| 'create', |
| 'cross', |
| 'cube', |
| 'cume_dist', |
| 'current', |
| 'current_date', |
| 'current_time', |
| 'current_timestamp', |
| 'current_user', |
| 'cursor', |
| 'cursor_name', |
| 'data', |
| 'database', |
| 'databases', |
| 'datafile', |
| 'day', |
| 'day_hour', |
| 'day_microsecond', |
| 'day_minute', |
| 'day_second', |
| 'deallocate', |
| 'declare', |
| 'default', |
| 'default_auth', |
| 'definer', |
| 'definition', |
| 'delay_key_write', |
| 'delayed', |
| 'delete', |
| 'dense_rank', |
| 'desc', |
| 'describe', |
| 'description', |
| 'deterministic', |
| 'diagnostics', |
| 'directory', |
| 'disable', |
| 'discard', |
| 'disk', |
| 'distinct', |
| 'distinctrow', |
| 'div', |
| 'do', |
| 'drop', |
| 'dual', |
| 'duality', |
| 'dumpfile', |
| 'duplicate', |
| 'dynamic', |
| 'each', |
| 'else', |
| 'elseif', |
| 'empty', |
| 'enable', |
| 'enclosed', |
| 'encryption', |
| 'end', |
| 'ends', |
| 'enforced', |
| 'engine', |
| 'engine_attribute', |
| 'engines', |
| 'error', |
| 'errors', |
| 'escape', |
| 'escaped', |
| 'event', |
| 'events', |
| 'every', |
| 'except', |
| 'exchange', |
| 'exclude', |
| 'execute', |
| 'exists', |
| 'exit', |
| 'expansion', |
| 'expire', |
| 'explain', |
| 'export', |
| 'extended', |
| 'extent_size', |
| 'external', |
| 'external_format', |
| 'factor', |
| 'failed_login_attempts', |
| 'false', |
| 'fast', |
| 'faults', |
| 'fetch', |
| 'fields', |
| 'file', |
| 'file_block_size', |
| 'file_format', |
| 'file_name', |
| 'file_pattern', |
| 'file_prefix', |
| 'files', |
| 'filter', |
| 'finish', |
| 'first', |
| 'first_value', |
| 'flush', |
| 'following', |
| 'follows', |
| 'for', |
| 'force', |
| 'foreign', |
| 'format', |
| 'found', |
| 'from', |
| 'full', |
| 'fulltext', |
| 'function', |
| 'general', |
| 'generate', |
| 'generated', |
| 'geomcollection', |
| 'get', |
| 'get_format', |
| 'get_master_public_key', |
| 'get_source_public_key', |
| 'global', |
| 'grant', |
| 'grants', |
| 'group', |
| 'group_replication', |
| 'grouping', |
| 'groups', |
| 'gtid_only', |
| 'gtids', |
| 'handler', |
| 'hash', |
| 'having', |
| 'header', |
| 'help', |
| 'high_priority', |
| 'histogram', |
| 'history', |
| 'host', |
| 'hosts', |
| 'hour', |
| 'hour_microsecond', |
| 'hour_minute', |
| 'hour_second', |
| 'identified', |
| 'if', |
| 'ignore', |
| 'ignore_server_ids', |
| 'import', |
| 'in', |
| 'inactive', |
| 'index', |
| 'indexes', |
| 'infile', |
| 'initial', |
| 'initial_size', |
| 'initiate', |
| 'inner', |
| 'inout', |
| 'insensitive', |
| 'insert', |
| 'insert_method', |
| 'install', |
| 'instance', |
| 'intersect', |
| 'interval', |
| 'into', |
| 'invisible', |
| 'invoker', |
| 'io', |
| 'io_after_gtids', |
| 'io_before_gtids', |
| 'io_thread', |
| 'ipc', |
| 'is', |
| 'isolation', |
| 'issuer', |
| 'iterate', |
| 'join', |
| 'json_table', |
| 'json_value', |
| 'key', |
| 'key_block_size', |
| 'keyring', |
| 'keys', |
| 'kill', |
| 'lag', |
| 'language', |
| 'last', |
| 'last_value', |
| 'lateral', |
| 'lead', |
| 'leading', |
| 'leave', |
| 'leaves', |
| 'left', |
| 'less', |
| 'level', |
| 'library', |
| 'like', |
| 'limit', |
| 'linear', |
| 'lines', |
| 'list', |
| 'load', |
| 'local', |
| 'localtime', |
| 'localtimestamp', |
| 'lock', |
| 'locked', |
| 'locks', |
| 'log', |
| 'logfile', |
| 'logs', |
| 'loop', |
| 'low_priority', |
| 'manual', |
| 'master', |
| 'master_auto_position', |
| 'master_bind', |
| 'master_compression_algorithms', |
| 'master_connect_retry', |
| 'master_delay', |
| 'master_heartbeat_period', |
| 'master_host', |
| 'master_log_file', |
| 'master_log_pos', |
| 'master_password', |
| 'master_port', |
| 'master_public_key_path', |
| 'master_retry_count', |
| 'master_ssl', |
| 'master_ssl_ca', |
| 'master_ssl_capath', |
| 'master_ssl_cert', |
| 'master_ssl_cipher', |
| 'master_ssl_crl', |
| 'master_ssl_crlpath', |
| 'master_ssl_key', |
| 'master_ssl_verify_server_cert', |
| 'master_tls_ciphersuites', |
| 'master_tls_version', |
| 'master_user', |
| 'master_zstd_compression_level', |
| 'match', |
| 'max_connections_per_hour', |
| 'max_queries_per_hour', |
| 'max_rows', |
| 'max_size', |
| 'max_updates_per_hour', |
| 'max_user_connections', |
| 'maxvalue', |
| 'medium', |
| 'member', |
| 'memory', |
| 'merge', |
| 'message_text', |
| 'microsecond', |
| 'migrate', |
| 'min_rows', |
| 'minute', |
| 'minute_microsecond', |
| 'minute_second', |
| 'mod', |
| 'mode', |
| 'modifies', |
| 'modify', |
| 'month', |
| 'mutex', |
| 'mysql_errno', |
| 'name', |
| 'names', |
| 'natural', |
| 'ndb', |
| 'ndbcluster', |
| 'nested', |
| 'network_namespace', |
| 'never', |
| 'new', |
| 'next', |
| 'no', |
| 'no_wait', |
| 'no_write_to_binlog', |
| 'nodegroup', |
| 'none', |
| 'not', |
| 'nowait', |
| 'nth_value', |
| 'ntile', |
| 'null', |
| 'nulls', |
| 'number', |
| 'of', |
| 'off', |
| 'offset', |
| 'oj', |
| 'old', |
| 'on', |
| 'one', |
| 'only', |
| 'open', |
| 'optimize', |
| 'optimizer_costs', |
| 'option', |
| 'optional', |
| 'optionally', |
| 'options', |
| 'or', |
| 'order', |
| 'ordinality', |
| 'organization', |
| 'others', |
| 'out', |
| 'outer', |
| 'outfile', |
| 'over', |
| 'owner', |
| 'pack_keys', |
| 'page', |
| 'parallel', |
| 'parameters', |
| 'parse_tree', |
| 'parser', |
| 'partial', |
| 'partition', |
| 'partitioning', |
| 'partitions', |
| 'password', |
| 'password_lock_time', |
| 'path', |
| 'percent_rank', |
| 'persist', |
| 'persist_only', |
| 'phase', |
| 'plugin', |
| 'plugin_dir', |
| 'plugins', |
| 'port', |
| 'precedes', |
| 'preceding', |
| 'prepare', |
| 'preserve', |
| 'prev', |
| 'primary', |
| 'privilege_checks_user', |
| 'privileges', |
| 'procedure', |
| 'process', |
| 'processlist', |
| 'profile', |
| 'profiles', |
| 'proxy', |
| 'purge', |
| 'qualify', |
| 'quarter', |
| 'query', |
| 'quick', |
| 'random', |
| 'range', |
| 'rank', |
| 'read', |
| 'read_only', |
| 'read_write', |
| 'reads', |
| 'rebuild', |
| 'recover', |
| 'recursive', |
| 'redo_buffer_size', |
| 'redundant', |
| 'reference', |
| 'references', |
| 'regexp', |
| 'registration', |
| 'relational', |
| 'relay', |
| 'relay_log_file', |
| 'relay_log_pos', |
| 'relay_thread', |
| 'relaylog', |
| 'release', |
| 'reload', |
| 'remove', |
| 'rename', |
| 'reorganize', |
| 'repair', |
| 'repeat', |
| 'repeatable', |
| 'replace', |
| 'replica', |
| 'replicas', |
| 'replicate_do_db', |
| 'replicate_do_table', |
| 'replicate_ignore_db', |
| 'replicate_ignore_table', |
| 'replicate_rewrite_db', |
| 'replicate_wild_do_table', |
| 'replicate_wild_ignore_table', |
| 'replication', |
| 'require', |
| 'require_row_format', |
| 'require_table_primary_key_check', |
| 'reset', |
| 'resignal', |
| 'resource', |
| 'respect', |
| 'restart', |
| 'restore', |
| 'restrict', |
| 'resume', |
| 'retain', |
| 'return', |
| 'returned_sqlstate', |
| 'returning', |
| 'returns', |
| 'reuse', |
| 'reverse', |
| 'revoke', |
| 'right', |
| 'rlike', |
| 'role', |
| 'rollback', |
| 'rollup', |
| 'rotate', |
| 'routine', |
| 'row', |
| 'row_count', |
| 'row_format', |
| 'row_number', |
| 'rows', |
| 'rtree', |
| 's3', |
| 'savepoint', |
| 'schedule', |
| 'schema', |
| 'schema_name', |
| 'schemas', |
| 'second', |
| 'second_microsecond', |
| 'secondary', |
| 'secondary_engine', |
| 'secondary_engine_attribute', |
| 'secondary_load', |
| 'secondary_unload', |
| 'security', |
| 'select', |
| 'sensitive', |
| 'separator', |
| 'serializable', |
| 'server', |
| 'session', |
| 'share', |
| 'show', |
| 'shutdown', |
| 'signal', |
| 'signed', |
| 'simple', |
| 'skip', |
| 'slave', |
| 'slow', |
| 'snapshot', |
| 'socket', |
| 'some', |
| 'soname', |
| 'sounds', |
| 'source', |
| 'source_auto_position', |
| 'source_bind', |
| 'source_compression_algorithms', |
| 'source_connect_retry', |
| 'source_connection_auto_failover', |
| 'source_delay', |
| 'source_heartbeat_period', |
| 'source_host', |
| 'source_log_file', |
| 'source_log_pos', |
| 'source_password', |
| 'source_port', |
| 'source_public_key_path', |
| 'source_retry_count', |
| 'source_ssl', |
| 'source_ssl_ca', |
| 'source_ssl_capath', |
| 'source_ssl_cert', |
| 'source_ssl_cipher', |
| 'source_ssl_crl', |
| 'source_ssl_crlpath', |
| 'source_ssl_key', |
| 'source_ssl_verify_server_cert', |
| 'source_tls_ciphersuites', |
| 'source_tls_version', |
| 'source_user', |
| 'source_zstd_compression_level', |
| 'spatial', |
| 'specific', |
| 'sql', |
| 'sql_after_gtids', |
| 'sql_after_mts_gaps', |
| 'sql_before_gtids', |
| 'sql_big_result', |
| 'sql_buffer_result', |
| 'sql_calc_found_rows', |
| 'sql_no_cache', |
| 'sql_small_result', |
| 'sql_thread', |
| 'sql_tsi_day', |
| 'sql_tsi_hour', |
| 'sql_tsi_minute', |
| 'sql_tsi_month', |
| 'sql_tsi_quarter', |
| 'sql_tsi_second', |
| 'sql_tsi_week', |
| 'sql_tsi_year', |
| 'sqlexception', |
| 'sqlstate', |
| 'sqlwarning', |
| 'srid', |
| 'ssl', |
| 'stacked', |
| 'start', |
| 'starting', |
| 'starts', |
| 'stats_auto_recalc', |
| 'stats_persistent', |
| 'stats_sample_pages', |
| 'status', |
| 'stop', |
| 'storage', |
| 'stored', |
| 'straight_join', |
| 'stream', |
| 'strict_load', |
| 'string', |
| 'subclass_origin', |
| 'subject', |
| 'subpartition', |
| 'subpartitions', |
| 'super', |
| 'suspend', |
| 'swaps', |
| 'switches', |
| 'system', |
| 'table', |
| 'table_checksum', |
| 'table_name', |
| 'tables', |
| 'tablesample', |
| 'tablespace', |
| 'temporary', |
| 'temptable', |
| 'terminated', |
| 'than', |
| 'then', |
| 'thread_priority', |
| 'ties', |
| 'timestampadd', |
| 'timestampdiff', |
| 'tls', |
| 'to', |
| 'trailing', |
| 'transaction', |
| 'trigger', |
| 'triggers', |
| 'true', |
| 'truncate', |
| 'type', |
| 'types', |
| 'unbounded', |
| 'uncommitted', |
| 'undefined', |
| 'undo', |
| 'undo_buffer_size', |
| 'undofile', |
| 'unicode', |
| 'uninstall', |
| 'union', |
| 'unique', |
| 'unknown', |
| 'unlock', |
| 'unregister', |
| 'unsigned', |
| 'until', |
| 'update', |
| 'upgrade', |
| 'uri', |
| 'url', |
| 'usage', |
| 'use', |
| 'use_frm', |
| 'user', |
| 'user_resources', |
| 'using', |
| 'utc_date', |
| 'utc_time', |
| 'utc_timestamp', |
| 'validation', |
| 'value', |
| 'values', |
| 'variables', |
| 'vcpu', |
| 'vector', |
| 'verify_key_constraints', |
| 'view', |
| 'virtual', |
| 'visible', |
| 'wait', |
| 'warnings', |
| 'week', |
| 'weight_string', |
| 'when', |
| 'where', |
| 'while', |
| 'window', |
| 'with', |
| 'without', |
| 'work', |
| 'wrapper', |
| 'write', |
| 'x509', |
| 'xa', |
| 'xid', |
| 'xml', |
| 'xor', |
| 'year_month', |
| 'zerofill', |
| 'zone', |
| ) |
|
|
|
|
| if __name__ == '__main__': |
| import re |
| from urllib.request import urlopen |
|
|
| from pygments.util import format_lines |
|
|
| |
| SOURCE_URL = 'https://github.com/mysql/mysql-server/raw/trunk' |
| LEX_URL = SOURCE_URL + '/sql/lex.h' |
| ITEM_CREATE_URL = SOURCE_URL + '/sql/item_create.cc' |
|
|
|
|
| def update_myself(): |
| |
| lex_file = urlopen(LEX_URL).read().decode('utf8', errors='ignore') |
| keywords = parse_lex_keywords(lex_file) |
| functions = parse_lex_functions(lex_file) |
| optimizer_hints = parse_lex_optimizer_hints(lex_file) |
|
|
| |
| item_create_file = urlopen(ITEM_CREATE_URL).read().decode('utf8', errors='ignore') |
| functions.update(parse_item_create_functions(item_create_file)) |
|
|
| |
| keywords -= set(MYSQL_DATATYPES) |
|
|
| update_content('MYSQL_FUNCTIONS', tuple(sorted(functions))) |
| update_content('MYSQL_KEYWORDS', tuple(sorted(keywords))) |
| update_content('MYSQL_OPTIMIZER_HINTS', tuple(sorted(optimizer_hints))) |
|
|
|
|
| def parse_lex_keywords(f): |
| """Parse keywords in lex.h.""" |
|
|
| results = set() |
| for m in re.finditer(r'{SYM(?:_HK)?\("(?P<keyword>[a-z0-9_]+)",', f, flags=re.I): |
| results.add(m.group('keyword').lower()) |
|
|
| if not results: |
| raise ValueError('No keywords found') |
|
|
| return results |
|
|
|
|
| def parse_lex_optimizer_hints(f): |
| """Parse optimizer hints in lex.h.""" |
|
|
| results = set() |
| for m in re.finditer(r'{SYM_H\("(?P<keyword>[a-z0-9_]+)",', f, flags=re.I): |
| results.add(m.group('keyword').lower()) |
|
|
| if not results: |
| raise ValueError('No optimizer hints found') |
|
|
| return results |
|
|
|
|
| def parse_lex_functions(f): |
| """Parse MySQL function names from lex.h.""" |
|
|
| results = set() |
| for m in re.finditer(r'{SYM_FN?\("(?P<function>[a-z0-9_]+)",', f, flags=re.I): |
| results.add(m.group('function').lower()) |
|
|
| if not results: |
| raise ValueError('No lex functions found') |
|
|
| return results |
|
|
|
|
| def parse_item_create_functions(f): |
| """Parse MySQL function names from item_create.cc.""" |
|
|
| results = set() |
| for m in re.finditer(r'{"(?P<function>[^"]+?)",\s*SQL_F[^(]+?\(', f, flags=re.I): |
| results.add(m.group('function').lower()) |
|
|
| if not results: |
| raise ValueError('No item_create functions found') |
|
|
| return results |
|
|
|
|
| def update_content(field_name, content): |
| """Overwrite this file with content parsed from MySQL's source code.""" |
|
|
| with open(__file__, encoding="utf-8") as f: |
| data = f.read() |
|
|
| |
| re_match = re.compile(rf'^{field_name}\s*=\s*\($.*?^\s*\)$', re.M | re.S) |
| m = re_match.search(data) |
| if not m: |
| raise ValueError(f'Could not find an existing definition for {field_name}') |
|
|
| new_block = format_lines(field_name, content) |
| data = data[:m.start()] + new_block + data[m.end():] |
|
|
| with open(__file__, 'w', encoding='utf-8', newline='\n') as f: |
| f.write(data) |
|
|
| update_myself() |
|
|