diff -r 28146736bbfc -r 82b608e352ec eric6/ThirdParty/Pygments/pygments/lexers/_mysql_builtins.py --- a/eric6/ThirdParty/Pygments/pygments/lexers/_mysql_builtins.py Tue Apr 20 19:47:39 2021 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1282 +0,0 @@ -# -*- coding: utf-8 -*- -""" - pygments.lexers._mysql_builtins - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Self-updating data files for the MySQL lexer. - - :copyright: Copyright 2020 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - - -MYSQL_CONSTANTS = ( - 'false', - 'null', - 'true', - 'unknown', -) - - -# At this time, no easily-parsed, definitive list of data types -# has been found in the MySQL source code or documentation. (The -# `sql/sql_yacc.yy` file is definitive but is difficult to parse.) -# Therefore these types are currently maintained manually. -# -# Some words in this list -- like "long", "national", "precision", -# and "varying" -- appear to only occur in combination with other -# data type keywords. Therefore they are included as separate words -# even though they do not naturally occur in syntax separately. -# -# This list is also used to strip data types out of the list of -# MySQL keywords, which is automatically updated later in the file. -# -MYSQL_DATATYPES = ( - # Numeric data types - '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 and time data types - 'date', - 'datetime', - 'time', - 'timestamp', - 'year', - - # String data types - 'binary', - 'blob', - 'char', - 'enum', - 'long', - 'longblob', - 'longtext', - 'mediumblob', - 'mediumtext', - 'national', - 'nchar', - 'nvarchar', - 'set', - 'text', - 'tinyblob', - 'tinytext', - 'varbinary', - 'varchar', - 'varcharacter', - 'varying', - - # Spatial data types - 'geometry', - 'geometrycollection', - 'linestring', - 'multilinestring', - 'multipoint', - 'multipolygon', - 'point', - 'polygon', - - # JSON data types - 'json', -) - -# Everything below this line is auto-generated from the MySQL source code. -# Run this file in Python and it will update itself. -# ----------------------------------------------------------------------------- - -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_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', - 'exp', - 'export_set', - 'extract', - 'extractvalue', - 'field', - 'find_in_set', - 'floor', - 'format_bytes', - 'format_pico_time', - 'found_rows', - 'from_base64', - 'from_days', - 'from_unixtime', - '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_tablespace_private_data', - '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', - '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_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', - 'space', - 'sqrt', - 'st_area', - 'st_asbinary', - 'st_asgeojson', - 'st_astext', - 'st_aswkb', - 'st_aswkt', - 'st_buffer', - 'st_buffer_strategy', - 'st_centroid', - '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_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_interiorringn', - 'st_intersection', - 'st_intersects', - 'st_isclosed', - 'st_isempty', - 'st_issimple', - 'st_isvalid', - 'st_latfromgeohash', - 'st_latitude', - 'st_length', - 'st_linefromtext', - 'st_linefromwkb', - '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_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', - 'subdate', - 'substr', - 'substring', - 'substring_index', - 'subtime', - 'sum', - 'sysdate', - 'system_user', - 'tan', - 'time_format', - 'time_to_sec', - 'timediff', - 'to_base64', - 'to_days', - 'to_seconds', - 'trim', - 'ucase', - 'uncompress', - 'uncompressed_length', - 'unhex', - 'unix_timestamp', - 'updatexml', - 'upper', - 'uuid', - 'uuid_short', - 'uuid_to_bin', - 'validate_password_strength', - 'var_pop', - 'var_samp', - 'variance', - 'version', - 'wait_for_executed_gtid_set', - 'wait_until_sql_thread_after_gtids', - 'weekday', - 'weekofyear', - 'yearweek', -) - - -MYSQL_OPTIMIZER_HINTS = ( - 'bka', - 'bnl', - '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_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 = ( - 'accessible', - 'account', - 'action', - 'active', - 'add', - 'admin', - 'after', - 'against', - 'aggregate', - 'algorithm', - 'all', - 'alter', - 'always', - 'analyze', - 'and', - 'any', - 'array', - 'as', - 'asc', - 'ascii', - 'asensitive', - 'at', - 'attribute', - 'auto_increment', - 'autoextend_size', - 'avg', - 'avg_row_length', - 'backup', - 'before', - 'begin', - 'between', - 'binlog', - 'block', - 'both', - 'btree', - 'buckets', - 'by', - 'byte', - 'cache', - 'call', - 'cascade', - 'cascaded', - 'case', - 'catalog_name', - 'chain', - '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', - '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', - 'failed_login_attempts', - 'false', - 'fast', - 'faults', - 'fetch', - 'fields', - 'file', - 'file_block_size', - 'filter', - 'first', - 'first_value', - 'flush', - 'following', - 'follows', - 'for', - 'force', - 'foreign', - 'format', - 'found', - 'from', - 'full', - 'fulltext', - 'function', - 'general', - 'generated', - 'geomcollection', - 'get', - 'get_format', - 'get_master_public_key', - 'global', - 'grant', - 'grants', - 'group', - 'group_replication', - 'grouping', - 'groups', - 'handler', - 'hash', - 'having', - '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_size', - 'inner', - 'inout', - 'insensitive', - 'insert', - 'insert_method', - 'install', - 'instance', - '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', - 'keys', - 'kill', - 'lag', - 'language', - 'last', - 'last_value', - 'lateral', - 'lead', - 'leading', - 'leave', - 'leaves', - 'left', - 'less', - 'level', - 'like', - 'limit', - 'linear', - 'lines', - 'list', - 'load', - 'local', - 'localtime', - 'localtimestamp', - 'lock', - 'locked', - 'locks', - 'logfile', - 'logs', - 'loop', - 'low_priority', - '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_server_id', - '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', - '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', - 'quarter', - 'query', - 'quick', - 'random', - 'range', - 'rank', - 'read', - 'read_only', - 'read_write', - 'reads', - 'rebuild', - 'recover', - 'recursive', - 'redo_buffer_size', - 'redundant', - 'reference', - 'references', - 'regexp', - 'relay', - 'relay_log_file', - 'relay_log_pos', - 'relay_thread', - 'relaylog', - 'release', - 'reload', - 'remove', - 'rename', - 'reorganize', - 'repair', - 'repeat', - 'repeatable', - 'replace', - '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', - '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', - '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', - 'string', - 'subclass_origin', - 'subject', - 'subpartition', - 'subpartitions', - 'super', - 'suspend', - 'swaps', - 'switches', - 'system', - 'table', - 'table_checksum', - 'table_name', - 'tables', - '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', - 'unsigned', - 'until', - 'update', - 'upgrade', - 'usage', - 'use', - 'use_frm', - 'user', - 'user_resources', - 'using', - 'utc_date', - 'utc_time', - 'utc_timestamp', - 'validation', - 'value', - 'values', - 'variables', - 'vcpu', - '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', -) - - -if __name__ == '__main__': # pragma: no cover - import re - from urllib.request import urlopen - - from pygments.util import format_lines - - # MySQL source code - SOURCE_URL = 'https://github.com/mysql/mysql-server/raw/8.0' - LEX_URL = SOURCE_URL + '/sql/lex.h' - ITEM_CREATE_URL = SOURCE_URL + '/sql/item_create.cc' - - - def update_myself(): - # Pull content from lex.h. - 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) - - # Parse content in item_create.cc. - item_create_file = urlopen(ITEM_CREATE_URL).read().decode('utf8', errors='ignore') - functions.update(parse_item_create_functions(item_create_file)) - - # Remove data types from the set of keywords. - 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__) as f: - data = f.read() - - # Line to start/end inserting - re_match = re.compile(r'^%s\s*=\s*\($.*?^\s*\)$' % field_name, re.M | re.S) - m = re_match.search(data) - if not m: - raise ValueError('Could not find an existing definition for %s' % field_name) - - new_block = format_lines(field_name, content) - data = data[:m.start()] + new_block + data[m.end():] - - with open(__file__, 'w', newline='\n') as f: - f.write(data) - - update_myself()