Remove TServerVariable.VarType property, and detect that by only examining the value. Fetch list of variables from a more complete documentation table which also reveals their read/write state. Also, paint variable values in data type colors.

This commit is contained in:
Ansgar Becker
2012-05-20 22:17:57 +00:00
parent 548eb4003f
commit 1f313df20e
6 changed files with 1664 additions and 583 deletions

View File

@ -1,285 +1,507 @@
<?php
$vars = 'auto_increment_increment numeric GLOBAL | SESSION
auto_increment_offset numeric GLOBAL | SESSION
autocommit boolean GLOBAL | SESSION
automatic_sp_privileges boolean GLOBAL
big_tables boolean GLOBAL | SESSION
binlog_cache_size numeric GLOBAL
binlog_checksum string GLOBAL
binlog_direct_non_transactional_updates boolean GLOBAL | SESSION
binlog_format enumeration GLOBAL | SESSION
binlog_row_image=image_type enumeration GLOBAL | SESSION
binlog_rows_query_log_events boolean GLOBAL | SESSION
binlog_stmt_cache_size numeric GLOBAL
bulk_insert_buffer_size numeric GLOBAL | SESSION
character_set_client string GLOBAL | SESSION
character_set_connection string GLOBAL | SESSION
character_set_database string GLOBAL | SESSION
character_set_filesystem string GLOBAL | SESSION
character_set_results string GLOBAL | SESSION
character_set_server string GLOBAL | SESSION
collation_connection string GLOBAL | SESSION
collation_database string GLOBAL | SESSION
collation_server string GLOBAL | SESSION
completion_type numeric GLOBAL | SESSION
concurrent_insert boolean GLOBAL
connect_timeout numeric GLOBAL
debug string GLOBAL | SESSION
debug_sync string SESSION
default_storage_engine enumeration GLOBAL | SESSION
default_tmp_storage_engine enumeration GLOBAL | SESSION
default_week_format numeric GLOBAL | SESSION
delay_key_write enumeration GLOBAL
delayed_insert_limit numeric GLOBAL
delayed_insert_timeout numeric GLOBAL
delayed_queue_size numeric GLOBAL
div_precision_increment numeric GLOBAL | SESSION
end_markers_in_json boolean GLOBAL | SESSION
engine_condition_pushdown boolean GLOBAL | SESSION
eq_range_index_dive_limit numeric GLOBAL | SESSION
event_scheduler enumeration GLOBAL
expire_logs_days numeric GLOBAL
flush boolean GLOBAL
flush_time numeric GLOBAL
foreign_key_checks boolean GLOBAL | SESSION
ft_boolean_syntax string GLOBAL
general_log boolean GLOBAL
general_log_file filename GLOBAL
group_concat_max_len numeric GLOBAL | SESSION
gtid_next enumeration SESSION
host_cache_size numeric GLOBAL
identity numeric SESSION
init_connect string GLOBAL
init_slave string GLOBAL
innodb_adaptive_flushing boolean GLOBAL
innodb_adaptive_hash_index boolean GLOBAL
innodb_adaptive_max_sleep_delay numeric GLOBAL
innodb_analyze_is_persistent boolean GLOBAL
innodb_api_enable_binlog boolean GLOBAL
innodb_api_enable_mdl boolean GLOBAL
innodb_api_trx_level boolean GLOBAL
innodb_autoextend_increment numeric GLOBAL
innodb_buffer_pool_dump_at_shutdown boolean GLOBAL
innodb_buffer_pool_dump_now boolean GLOBAL
innodb_buffer_pool_filename boolean GLOBAL
innodb_buffer_pool_load_abort boolean GLOBAL
innodb_buffer_pool_load_at_startup boolean GLOBAL
innodb_buffer_pool_load_now boolean GLOBAL
innodb_change_buffer_max_size numeric GLOBAL
innodb_change_buffering enumeration GLOBAL
innodb_checksum_algorithm enumeration GLOBAL
innodb_commit_concurrency numeric GLOBAL
innodb_concurrency_tickets numeric GLOBAL
innodb_fast_shutdown numeric GLOBAL
innodb_file_format string GLOBAL
innodb_file_format_max string GLOBAL
innodb_file_per_table boolean GLOBAL
innodb_flush_log_at_trx_commit enumeration GLOBAL
innodb_flush_neighbors boolean GLOBAL
innodb_ft_aux_table string GLOBAL
innodb_ft_cache_size numeric GLOBAL
innodb_ft_enable_stopword boolean GLOBAL
innodb_ft_max_token_size numeric GLOBAL
innodb_ft_min_token_size numeric GLOBAL
innodb_ft_num_word_optimize numeric GLOBAL
innodb_ft_server_stopword_table string GLOBAL
innodb_ft_sort_pll_degree numeric GLOBAL
innodb_ft_user_stopword_table string GLOBAL
innodb_io_capacity numeric GLOBAL
innodb_large_prefix boolean GLOBAL
innodb_lock_wait_timeout numeric GLOBAL | SESSION
innodb_lru_scan_depth numeric GLOBAL
innodb_max_dirty_pages_pct numeric GLOBAL
innodb_max_purge_lag numeric GLOBAL
innodb_monitor_disable string GLOBAL
innodb_monitor_enable string GLOBAL
innodb_monitor_reset string GLOBAL
innodb_monitor_reset_all string GLOBAL
innodb_old_blocks_pct numeric GLOBAL
innodb_old_blocks_time numeric GLOBAL
innodb_optimize_fulltext_only boolean GLOBAL
innodb_print_all_deadlocks boolean GLOBAL
innodb_random_read_ahead boolean GLOBAL
innodb_read_ahead_threshold numeric GLOBAL
innodb_replication_delay numeric GLOBAL
innodb_rollback_segments numeric GLOBAL
innodb_sort_buffer_size numeric GLOBAL
innodb_spin_wait_delay numeric GLOBAL
innodb_stats_method enumeration GLOBAL | SESSION
innodb_stats_on_metadata boolean GLOBAL
innodb_stats_persistent_sample_pages numeric GLOBAL
innodb_stats_sample_pages numeric GLOBAL
innodb_stats_transient_sample_pages numeric GLOBAL
innodb_strict_mode boolean GLOBAL | SESSION
innodb_support_xa boolean GLOBAL | SESSION
innodb_sync_spin_loops numeric GLOBAL
innodb_table_locks boolean GLOBAL | SESSION
innodb_thread_concurrency numeric GLOBAL
innodb_thread_sleep_delay numeric GLOBAL
innodb_undo_directory string GLOBAL
innodb_undo_logs numeric GLOBAL
innodb_undo_tablespaces numeric GLOBAL
insert_id numeric SESSION
interactive_timeout numeric GLOBAL | SESSION
join_buffer_size numeric GLOBAL | SESSION
keep_files_on_create boolean GLOBAL | SESSION
key_buffer_size numeric GLOBAL
key_cache_age_threshold numeric GLOBAL
key_cache_block_size numeric GLOBAL
key_cache_division_limit numeric GLOBAL
last_insert_id numeric SESSION
lc_messages string GLOBAL | SESSION
lc_time_names string GLOBAL | SESSION
local_infile boolean GLOBAL
lock_wait_timeout numeric GLOBAL | SESSION
log string GLOBAL
log_output set GLOBAL
log_queries_not_using_indexes boolean GLOBAL
log_slow_queries boolean GLOBAL
log_throttle_queries_not_using_indexes numeric GLOBAL
log_warnings numeric GLOBAL
long_query_time numeric GLOBAL | SESSION
low_priority_updates boolean GLOBAL | SESSION
master_verify_checksum boolean GLOBAL
max_allowed_packet numeric GLOBAL
max_binlog_cache_size numeric GLOBAL
max_binlog_size numeric GLOBAL
max_binlog_stmt_cache_size numeric GLOBAL
max_connect_errors numeric GLOBAL
max_connections numeric GLOBAL
max_delayed_threads numeric GLOBAL | SESSION
max_error_count numeric GLOBAL | SESSION
max_heap_table_size numeric GLOBAL | SESSION
max_insert_delayed_threads numeric GLOBAL | SESSION
max_join_size numeric GLOBAL | SESSION
max_length_for_sort_data numeric GLOBAL | SESSION
max_prepared_stmt_count numeric GLOBAL
max_relay_log_size numeric GLOBAL
max_seeks_for_key numeric GLOBAL | SESSION
max_sort_length numeric GLOBAL | SESSION
max_sp_recursion_depth numeric GLOBAL | SESSION
max_tmp_tables numeric GLOBAL | SESSION
max_user_connections numeric GLOBAL | SESSION
max_write_lock_count numeric GLOBAL
min_examined_row_limit numeric GLOBAL | SESSION
myisam_data_pointer_size numeric GLOBAL
myisam_max_sort_file_size numeric GLOBAL
myisam_repair_threads numeric GLOBAL | SESSION
myisam_sort_buffer_size numeric GLOBAL | SESSION
myisam_stats_method enumeration GLOBAL | SESSION
myisam_use_mmap boolean GLOBAL
net_buffer_length numeric GLOBAL | SESSION
net_read_timeout numeric GLOBAL | SESSION
net_retry_count numeric GLOBAL | SESSION
net_write_timeout numeric GLOBAL | SESSION
new boolean GLOBAL | SESSION
old_alter_table boolean GLOBAL | SESSION
old_passwords boolean GLOBAL | SESSION
optimizer_join_cache_level numeric GLOBAL | SESSION
optimizer_prune_level boolean GLOBAL | SESSION
optimizer_search_depth numeric GLOBAL | SESSION
optimizer_switch set GLOBAL | SESSION
optimizer_trace string GLOBAL | SESSION
optimizer_trace_features string GLOBAL | SESSION
optimizer_trace_limit numeric GLOBAL | SESSION
optimizer_trace_max_mem_size numeric GLOBAL | SESSION
optimizer_trace_offset numeric GLOBAL | SESSION
preload_buffer_size numeric GLOBAL | SESSION
profiling boolean GLOBAL | SESSION
profiling_history_size numeric GLOBAL | SESSION
pseudo_thread_id numeric SESSION
query_alloc_block_size numeric GLOBAL | SESSION
query_cache_limit numeric GLOBAL
query_cache_min_res_unit numeric GLOBAL
query_cache_size numeric GLOBAL
query_cache_type enumeration GLOBAL | SESSION
query_cache_wlock_invalidate boolean GLOBAL | SESSION
query_prealloc_size numeric GLOBAL | SESSION
rand_seed1 numeric SESSION
rand_seed2 numeric SESSION
range_alloc_block_size numeric GLOBAL | SESSION
read_buffer_size numeric GLOBAL | SESSION
read_only boolean GLOBAL
read_rnd_buffer_size numeric GLOBAL | SESSION
relay_log_purge boolean GLOBAL
relay_log_recovery boolean GLOBAL
rpl_semi_sync_master_enabled boolean GLOBAL
rpl_semi_sync_master_timeout numeric GLOBAL
rpl_semi_sync_master_trace_level numeric GLOBAL
rpl_semi_sync_master_wait_no_slave boolean GLOBAL
rpl_semi_sync_slave_enabled boolean GLOBAL
rpl_semi_sync_slave_trace_level numeric GLOBAL
secure_auth boolean GLOBAL
server_id numeric GLOBAL
slave_compressed_protocol boolean GLOBAL
slave_exec_mode enumeration GLOBAL
slave_net_timeout numeric GLOBAL
slave_parallel_workers numeric GLOBAL
slave_sql_verify_checksum boolean GLOBAL
slave_transaction_retries numeric GLOBAL
slow_launch_time numeric GLOBAL
slow_query_log boolean GLOBAL
slow_query_log_file filename GLOBAL
sort_buffer_size numeric GLOBAL | SESSION
sql_auto_is_null boolean GLOBAL | SESSION
sql_big_selects boolean GLOBAL | SESSION
sql_big_tables boolean GLOBAL | SESSION
sql_buffer_result boolean GLOBAL | SESSION
sql_log_bin boolean GLOBAL | SESSION
sql_log_off boolean GLOBAL | SESSION
sql_low_priority_updates boolean GLOBAL | SESSION
sql_max_join_size numeric GLOBAL | SESSION
sql_mode set GLOBAL | SESSION
sql_notes boolean GLOBAL | SESSION
sql_quote_show_create boolean GLOBAL | SESSION
sql_safe_updates boolean GLOBAL | SESSION
sql_select_limit numeric GLOBAL | SESSION
sql_slave_skip_counter numeric GLOBAL
sql_warnings boolean GLOBAL | SESSION
storage_engine enumeration GLOBAL | SESSION
stored_program_cache numeric GLOBAL
sync_binlog numeric GLOBAL
sync_frm boolean GLOBAL
sync_master_info numeric GLOBAL
sync_relay_log numeric GLOBAL
sync_relay_log_info numeric GLOBAL
table_definition_cache numeric GLOBAL
table_open_cache numeric GLOBAL
thread_cache_size numeric GLOBAL
time_zone string GLOBAL | SESSION
timed_mutexes boolean GLOBAL
timestamp numeric SESSION
tmp_table_size numeric GLOBAL | SESSION
transaction_alloc_block_size numeric GLOBAL | SESSION
transaction_prealloc_size numeric GLOBAL | SESSION
tx_isolation enumeration GLOBAL | SESSION
tx_read_only boolean GLOBAL | SESSION
unique_checks boolean GLOBAL | SESSION
updatable_views_with_limit boolean GLOBAL | SESSION
wait_timeout numeric GLOBAL | SESSION';
$vars = 'auto_increment_increment Yes Yes Yes Both Yes
auto_increment_offset Yes Yes Yes Both Yes
autocommit Yes Yes Yes Both Yes
automatic_sp_privileges Yes Global Yes
back_log Yes Yes Yes Global No
basedir Yes Yes Yes Global No
big-tables Yes Yes Yes
- Variable: big_tables Yes Both Yes
bind-address Yes Yes Yes Global No
binlog_cache_size Yes Yes Yes Global Yes
binlog_checksum Yes Global Yes
binlog_direct_non_transactional_updates Yes Yes Yes Both Yes
binlog-format Yes Yes Yes
- Variable: binlog_format Yes Both Yes
binlog_row_image Yes Yes Both Yes
binlog_stmt_cache_size Yes Yes Yes Global Yes
bulk_insert_buffer_size Yes Yes Yes Both Yes
character_set_client Yes Both Yes
character_set_connection Yes Both Yes
character_set_database[a] Yes Both Yes
character-set-filesystem Yes Yes Yes
- Variable: character_set_filesystem Yes Both Yes
character_set_results Yes Both Yes
character-set-server Yes Yes Yes
- Variable: character_set_server Yes Both Yes
character_set_system Yes Global No
character-sets-dir Yes Yes No
- Variable: character_sets_dir Yes Global No
collation_connection Yes Both Yes
collation_database[b] Yes Both Yes
collation-server Yes Yes Yes
- Variable: collation_server Yes Both Yes
completion_type Yes Yes Yes Both Yes
concurrent_insert Yes Yes Yes Global Yes
connect_timeout Yes Yes Yes Global Yes
datadir Yes Yes Yes Global No
date_format Yes Global No
datetime_format Yes Global No
debug Yes Yes Yes Both Yes
debug_sync Yes Session Yes
default-storage-engine Yes Yes Yes
- Variable: default_storage_engine Yes Both Yes
default_tmp_storage_engine Yes Yes Yes Both Yes
default_week_format Yes Yes Yes Both Yes
delay-key-write Yes Yes Yes
- Variable: delay_key_write Yes Global Yes
delayed_insert_limit Yes Yes Yes Global Yes
delayed_insert_timeout Yes Yes Yes Global Yes
delayed_queue_size Yes Yes Yes Global Yes
disable_gtid_unsafe_statements Yes Yes Yes Global No
disable-gtid-unsafe-statements Yes Yes Yes Global No
div_precision_increment Yes Yes Yes Both Yes
end_markers_in_json Yes Both Yes
engine-condition-pushdown Yes Yes Yes
- Variable: engine_condition_pushdown Yes Both Yes
eq_range_index_dive_limit Yes Yes Yes Both Yes
error_count Yes Session No
event-scheduler Yes Yes Yes
- Variable: event_scheduler Yes Global Yes
expire_logs_days Yes Yes Yes Global Yes
external_user Yes Session No
flush Yes Yes Yes Global Yes
flush_time Yes Yes Yes Global Yes
foreign_key_checks Yes Both Yes
ft_boolean_syntax Yes Yes Yes Global Yes
ft_max_word_len Yes Yes Yes Global No
ft_min_word_len Yes Yes Yes Global No
ft_query_expansion_limit Yes Yes Yes Global No
ft_stopword_file Yes Yes Yes Global No
general-log Yes Yes Yes
- Variable: general_log Yes Global Yes
general_log_file Yes Yes Yes Global Yes
group_concat_max_len Yes Yes Yes Both Yes
gtid_done Yes Both No
gtid_lost Yes Global No
gtid_mode Yes Global No
gtid-mode Yes Yes No
- Variable: gtid_mode Yes Global No
gtid_next Yes Session Yes
gtid_owned Yes Both No
have_compress Yes Global No
have_crypt Yes Global No
have_csv Yes Global No
have_dynamic_loading Yes Global No
have_geometry Yes Global No
have_innodb Yes Global No
have_ndbcluster Yes Global No
have_openssl Yes Global No
have_partitioning Yes Global No
have_profiling Yes Global No
have_query_cache Yes Global No
have_rtree_keys Yes Global No
have_ssl Yes Global No
have_symlink Yes Global No
host_cache_size Yes Yes Yes Global Yes
hostname Yes Global No
identity Yes Session Yes
ignore-builtin-innodb Yes Yes No
- Variable: ignore_builtin_innodb Yes Global No
init_connect Yes Yes Yes Global Yes
init-file Yes Yes No
- Variable: init_file Yes Global No
init_slave Yes Yes Yes Global Yes
innodb_adaptive_flushing Yes Yes Yes Global Yes
innodb_adaptive_hash_index Yes Yes Yes Global Yes
innodb_adaptive_max_sleep_delay Yes Yes Yes Global Yes
innodb_additional_mem_pool_size Yes Yes Yes Global No
innodb_analyze_is_persistent Yes Yes Yes Global Yes
innodb_api_enable_binlog Yes Yes Yes Global Yes
innodb_api_enable_mdl Yes Yes Yes Global Yes
innodb_api_trx_level Yes Yes Yes Global Yes
innodb_autoextend_increment Yes Yes Yes Global Yes
innodb_autoinc_lock_mode Yes Yes Yes Global No
innodb_buffer_pool_dump_at_shutdown Yes Yes Yes Global Yes
innodb_buffer_pool_dump_now Yes Yes Yes Global Yes
innodb_buffer_pool_filename Yes Yes Yes Global Yes
innodb_buffer_pool_instances Yes Yes Yes Global No
innodb_buffer_pool_load_abort Yes Yes Yes Global Yes
innodb_buffer_pool_load_at_startup Yes Yes Yes Global Yes
innodb_buffer_pool_load_now Yes Yes Yes Global Yes
innodb_buffer_pool_size Yes Yes Yes Global No
innodb_change_buffer_max_size Yes Yes Yes Global Yes
innodb_change_buffering Yes Yes Yes Global Yes
innodb_checksum_algorithm Yes Yes Yes Global Yes
innodb_checksums Yes Yes Yes Global No
innodb_commit_concurrency Yes Yes Yes Global Yes
innodb_concurrency_tickets Yes Yes Yes Global Yes
innodb_data_file_path Yes Yes Yes Global No
innodb_data_home_dir Yes Yes Yes Global No
innodb_doublewrite Yes Yes Yes Global No
innodb_fast_shutdown Yes Yes Yes Global Yes
innodb_file_format Yes Yes Yes Global Yes
innodb_file_format_check Yes Yes Yes Global No
innodb_file_format_max Yes Yes Yes Global Yes
innodb_file_per_table Yes Yes Yes Global Yes
innodb_flush_log_at_trx_commit Yes Yes Yes Global Yes
innodb_flush_method Yes Yes Yes Global No
innodb_flush_neighbors Yes Yes Yes Global Yes
innodb_force_load_corrupted Yes Yes Yes Global No
innodb_force_recovery Yes Yes Yes Global No
innodb_ft_aux_table Yes Yes Yes Global Yes
innodb_ft_cache_size Yes Yes Yes Global Yes
innodb_ft_enable_stopword Yes Yes Yes Global Yes
innodb_ft_max_token_size Yes Yes Yes Global Yes
innodb_ft_min_token_size Yes Yes Yes Global Yes
innodb_ft_num_word_optimize Yes Yes Yes Global Yes
innodb_ft_server_stopword_table Yes Yes Yes Global Yes
innodb_ft_sort_pll_degree Yes Yes Yes Global Yes
innodb_ft_user_stopword_table Yes Yes Yes Global Yes
innodb_io_capacity Yes Yes Yes Global Yes
innodb_large_prefix Yes Yes Yes Global Yes
innodb_lock_wait_timeout Yes Yes Yes Both Yes
innodb_locks_unsafe_for_binlog Yes Yes Yes Global No
innodb_log_buffer_size Yes Yes Yes Global No
innodb_log_file_size Yes Yes Yes Global No
innodb_log_files_in_group Yes Yes Yes Global No
innodb_log_group_home_dir Yes Yes Yes Global No
innodb_lru_scan_depth Yes Yes Yes Global Yes
innodb_max_dirty_pages_pct Yes Yes Yes Global Yes
innodb_max_purge_lag Yes Yes Yes Global Yes
innodb_mirrored_log_groups Yes Yes Yes Global No
innodb_monitor_disable Yes Yes Yes Global Yes
innodb_monitor_enable Yes Yes Yes Global Yes
innodb_monitor_reset Yes Yes Yes Global Yes
innodb_monitor_reset_all Yes Yes Yes Global Yes
innodb_old_blocks_pct Yes Yes Yes Global Yes
innodb_old_blocks_time Yes Yes Yes Global Yes
innodb_open_files Yes Yes Yes Global No
innodb_optimize_fulltext_only Yes Yes Yes Global Yes
innodb_page_size Yes Yes Yes Global No
innodb_print_all_deadlocks Yes Yes Yes Global Yes
innodb_purge_batch_size Yes Yes Yes Global No
innodb_purge_threads Yes Yes Yes Global No
innodb_random_read_ahead Yes Yes Yes Global Yes
innodb_read_ahead_threshold Yes Yes Yes Global Yes
innodb_read_io_threads Yes Yes Yes Global No
innodb_replication_delay Yes Yes Yes Global Yes
innodb_rollback_on_timeout Yes Yes Yes Global No
innodb_rollback_segments Yes Yes Yes Global Yes
innodb_sort_buffer_size Yes Yes Yes Global Yes
innodb_spin_wait_delay Yes Yes Yes Global Yes
innodb_stats_method Yes Yes Yes Both Yes
innodb_stats_on_metadata Yes Yes Yes Global Yes
innodb_stats_persistent_sample_pages Yes Yes Yes Global Yes
innodb_stats_sample_pages Yes Yes Yes Global Yes
innodb_stats_transient_sample_pages Yes Yes Yes Global Yes
innodb_strict_mode Yes Yes Yes Both Yes
innodb_support_xa Yes Yes Yes Both Yes
innodb_sync_array_size Yes Yes Yes Global No
innodb_sync_spin_loops Yes Yes Yes Global Yes
innodb_table_locks Yes Yes Yes Both Yes
innodb_thread_concurrency Yes Yes Yes Global Yes
innodb_thread_sleep_delay Yes Yes Yes Global Yes
innodb_undo_directory Yes Yes Yes Global Yes
innodb_undo_logs Yes Yes Yes Global Yes
innodb_undo_tablespaces Yes Yes Yes Global Yes
innodb_use_native_aio Yes Yes Yes Global No
innodb_use_sys_malloc Yes Yes Yes Global No
innodb_version Yes Global No
innodb_write_io_threads Yes Yes Yes Global No
insert_id Yes Session Yes
interactive_timeout Yes Yes Yes Both Yes
join_buffer_size Yes Yes Yes Both Yes
keep_files_on_create Yes Yes Yes Both Yes
key_buffer_size Yes Yes Yes Global Yes
key_cache_age_threshold Yes Yes Yes Global Yes
key_cache_block_size Yes Yes Yes Global Yes
key_cache_division_limit Yes Yes Yes Global Yes
language Yes Yes Yes Global No
large_files_support Yes Global No
large_page_size Yes Global No
large-pages Yes Yes No
- Variable: large_pages Yes Global No
last_insert_id Yes Session Yes
lc-messages Yes Yes Yes
- Variable: lc_messages Yes Both Yes
lc-messages-dir Yes Yes No
- Variable: lc_messages_dir Yes Global No
lc_time_names Yes Both Yes
license Yes Global No
local-infile Yes Yes Yes
- Variable: local_infile Yes Global Yes
lock_wait_timeout Yes Yes Yes Both Yes
locked_in_memory Yes Global No
log Yes Yes Yes Global Yes
log_bin Yes Global No
log-bin Yes Yes Yes Global No
log_bin_basename Yes Global No
log-error Yes Yes No
- Variable: log_error Yes Global No
log-output Yes Yes Yes
- Variable: log_output Yes Global Yes
log-queries-not-using-indexes Yes Yes Yes
- Variable: log_queries_not_using_indexes Yes Global Yes
log-slave-updates Yes Yes No
- Variable: log_slave_updates Yes Global No
log-slow-queries Yes Yes Yes
- Variable: log_slow_queries Yes Global Yes
log_throttle_queries_not_using_indexes Yes Global Yes
log-warnings Yes Yes Yes
- Variable: log_warnings Yes Global Yes
long_query_time Yes Yes Yes Both Yes
low-priority-updates Yes Yes Yes
- Variable: low_priority_updates Yes Both Yes
lower_case_file_system Yes Yes Yes Global No
lower_case_table_names Yes Yes Yes Global No
master_info_repository Yes Global No
master_verify_checksum Yes Global Yes
max_allowed_packet Yes Yes Yes Global Yes
max_binlog_cache_size Yes Yes Yes Global Yes
max_binlog_size Yes Yes Yes Global Yes
max_binlog_stmt_cache_size Yes Yes Yes Global Yes
max_connect_errors Yes Yes Yes Global Yes
max_connections Yes Yes Yes Global Yes
max_delayed_threads Yes Yes Yes Both Yes
max_error_count Yes Yes Yes Both Yes
max_heap_table_size Yes Yes Yes Both Yes
max_insert_delayed_threads Yes Both Yes
max_join_size Yes Yes Yes Both Yes
max_length_for_sort_data Yes Yes Yes Both Yes
max_prepared_stmt_count Yes Yes Yes Global Yes
max_relay_log_size Yes Yes Yes Global Yes
max_seeks_for_key Yes Yes Yes Both Yes
max_sort_length Yes Yes Yes Both Yes
max_sp_recursion_depth Yes Yes Yes Both Yes
max_tmp_tables Yes Yes Yes Both Yes
max_user_connections Yes Yes Yes Both Yes
max_write_lock_count Yes Yes Yes Global Yes
memlock Yes Yes Yes Global No
metadata_locks_cache_size Yes Global No
min-examined-row-limit Yes Yes Yes Both Yes
myisam_data_pointer_size Yes Yes Yes Global Yes
myisam_max_sort_file_size Yes Yes Yes Global Yes
myisam_mmap_size Yes Yes Yes Global No
myisam_recover_options Yes Global No
myisam_repair_threads Yes Yes Yes Both Yes
myisam_sort_buffer_size Yes Yes Yes Both Yes
myisam_stats_method Yes Yes Yes Both Yes
myisam_use_mmap Yes Yes Yes Global Yes
named_pipe Yes Global No
net_buffer_length Yes Yes Yes Both Yes
net_read_timeout Yes Yes Yes Both Yes
net_retry_count Yes Yes Yes Both Yes
net_write_timeout Yes Yes Yes Both Yes
new Yes Yes Yes Both Yes
old Yes Yes Yes Global No
old-alter-table Yes Yes Yes
- Variable: old_alter_table Yes Both Yes
old-passwords Yes Yes Yes
- Variable: old_passwords Yes Both Yes
open-files-limit Yes Yes No
- Variable: open_files_limit Yes Global No
optimizer_join_cache_level Yes Yes Yes Both Yes
optimizer_prune_level Yes Yes Yes Both Yes
optimizer_search_depth Yes Yes Yes Both Yes
optimizer_switch Yes Yes Yes Both Yes
optimizer_trace Yes Both Yes
optimizer_trace_features Yes Both Yes
optimizer_trace_limit Yes Both Yes
optimizer_trace_max_mem_size Yes Both Yes
optimizer_trace_offset Yes Both Yes
partition Yes Yes No
- Variable: have_partitioning Yes Global No
performance_schema Yes Yes Yes Global No
performance_schema_accounts_size Yes Yes Yes Global No
performance_schema_digests_size Yes Yes Yes Global No
performance_schema_events_stages_history_long_size Yes Yes Yes Global No
performance_schema_events_stages_history_size Yes Yes Yes Global No
performance_schema_events_statements_history_long_size Yes Yes Yes Global No
performance_schema_events_statements_history_size Yes Yes Yes Global No
performance_schema_events_waits_history_long_size Yes Yes Yes Global No
performance_schema_events_waits_history_size Yes Yes Yes Global No
performance_schema_hosts_size Yes Yes Yes Global No
performance_schema_max_cond_classes Yes Yes Yes Global No
performance_schema_max_cond_instances Yes Yes Yes Global No
performance_schema_max_file_classes Yes Yes Yes Global No
performance_schema_max_file_handles Yes Yes Yes Global No
performance_schema_max_file_instances Yes Yes Yes Global No
performance_schema_max_mutex_classes Yes Yes Yes Global No
performance_schema_max_mutex_instances Yes Yes Yes Global No
performance_schema_max_rwlock_classes Yes Yes Yes Global No
performance_schema_max_rwlock_instances Yes Yes Yes Global No
performance_schema_max_socket_classes Yes Yes Yes Global No
performance_schema_max_socket_instances Yes Yes Yes Global No
performance_schema_max_stage_classes Yes Yes Yes Global No
performance_schema_max_statement_classes Yes Yes Yes Global No
performance_schema_max_table_handles Yes Yes Yes Global No
performance_schema_max_table_instances Yes Yes Yes Global No
performance_schema_max_thread_classes Yes Yes Yes Global No
performance_schema_max_thread_instances Yes Yes Yes Global No
performance_schema_setup_actors_size Yes Yes Yes Global No
performance_schema_setup_objects_size Yes Yes Yes Global No
performance_schema_users_size Yes Yes Yes Global No
pid-file Yes Yes No
- Variable: pid_file Yes Global No
plugin_dir Yes Yes Yes Global No
port Yes Yes Yes Global No
preload_buffer_size Yes Yes Yes Both Yes
profiling Yes Both Yes
profiling_history_size Yes Yes Yes Both Yes
protocol_version Yes Global No
proxy_user Yes Session No
pseudo_thread_id Yes Session Yes
query_alloc_block_size Yes Yes Yes Both Yes
query_cache_limit Yes Yes Yes Global Yes
query_cache_min_res_unit Yes Yes Yes Global Yes
query_cache_size Yes Yes Yes Global Yes
query_cache_type Yes Yes Yes Both Yes
query_cache_wlock_invalidate Yes Yes Yes Both Yes
query_prealloc_size Yes Yes Yes Both Yes
rand_seed1 Yes Session Yes
rand_seed2 Yes Session Yes
range_alloc_block_size Yes Yes Yes Both Yes
read_buffer_size Yes Yes Yes Both Yes
read_only Yes Yes Yes Global Yes
read_rnd_buffer_size Yes Yes Yes Both Yes
relay_log_basename Yes Global No
relay-log-index Yes Yes No
- Variable: relay_log_index Yes Both No
relay_log_index Yes Yes Yes Global No
relay_log_info_file Yes Yes Yes Global No
relay_log_info_repository Yes Global No
relay_log_purge Yes Yes Yes Global Yes
relay_log_recovery Yes Yes Yes Global Yes
relay_log_space_limit Yes Yes Yes Global No
report-host Yes Yes No
- Variable: report_host Yes Global No
report-password Yes Yes No
- Variable: report_password Yes Global No
report-port Yes Yes No
- Variable: report_port Yes Global No
report-user Yes Yes No
- Variable: report_user Yes Global No
rpl_semi_sync_master_enabled Yes Global Yes
rpl_semi_sync_master_timeout Yes Global Yes
rpl_semi_sync_master_trace_level Yes Global Yes
rpl_semi_sync_master_wait_no_slave Yes Global Yes
rpl_semi_sync_slave_enabled Yes Global Yes
rpl_semi_sync_slave_trace_level Yes Global Yes
secure-auth Yes Yes Yes
- Variable: secure_auth Yes Global Yes
secure-file-priv Yes Yes No
- Variable: secure_file_priv Yes Global No
server-id Yes Yes Yes
- Variable: server_id Yes Global Yes
server_uuid Yes Global No
shared_memory Yes Global No
shared_memory_base_name Yes Global No
skip-external-locking Yes Yes No
- Variable: skip_external_locking Yes Global No
skip-name-resolve Yes Yes No
- Variable: skip_name_resolve Yes Global No
skip-networking Yes Yes No
- Variable: skip_networking Yes Global No
skip-show-database Yes Yes No
- Variable: skip_show_database Yes Global No
slave_compressed_protocol Yes Yes Yes Global Yes
slave_exec_mode Yes Global Yes
slave-load-tmpdir Yes Yes No
- Variable: slave_load_tmpdir Yes Global No
slave-net-timeout Yes Yes Yes
- Variable: slave_net_timeout Yes Global Yes
slave_parallel_workers Yes Global Yes
slave-skip-errors Yes Yes No
- Variable: slave_skip_errors Yes Global No
slave_sql_verify_checksum Yes Global Yes
slave_transaction_retries Yes Yes Yes Global Yes
slave_type_conversions Yes Yes Yes Global No
slow_launch_time Yes Yes Yes Global Yes
slow-query-log Yes Yes Yes
- Variable: slow_query_log Yes Global Yes
slow_query_log_file Yes Yes Yes Global Yes
socket Yes Yes Yes Global No
sort_buffer_size Yes Yes Yes Both Yes
sql_auto_is_null Yes Both Yes
sql_big_selects Yes Both Yes
sql_big_tables Yes Both Yes
sql_buffer_result Yes Both Yes
sql_log_bin Yes Both Yes
sql_log_off Yes Both Yes
sql_low_priority_updates Yes Both Yes
sql_max_join_size Yes Both Yes
sql-mode Yes Yes Yes
- Variable: sql_mode Yes Both Yes
sql_notes Yes Both Yes
sql_quote_show_create Yes Both Yes
sql_safe_updates Yes Both Yes
sql_select_limit Yes Both Yes
sql_slave_skip_counter Yes Global Yes
sql_warnings Yes Both Yes
ssl-ca Yes Yes No
- Variable: ssl_ca Yes Global No
ssl-capath Yes Yes No
- Variable: ssl_capath Yes Global No
ssl-cert Yes Yes No
- Variable: ssl_cert Yes Global No
ssl-cipher Yes Yes No
- Variable: ssl_cipher Yes Global No
ssl-crl Yes Yes No
- Variable: ssl_crl Yes Global No
ssl-crlpath Yes Yes No
- Variable: ssl_crlpath Yes Global No
ssl-key Yes Yes No
- Variable: ssl_key Yes Global No
storage_engine Yes Both Yes
stored_program_cache Yes Yes Yes Global Yes
sync_binlog Yes Yes Yes Global Yes
sync_frm Yes Yes Yes Global Yes
sync_master_info Yes Yes Yes Global Yes
sync_relay_log Yes Yes Yes Global Yes
sync_relay_log_info Yes Yes Yes Global Yes
system_time_zone Yes Global No
table_definition_cache Yes Yes Yes Global Yes
table_open_cache Yes Yes Yes Global Yes
thread_cache_size Yes Yes Yes Global Yes
thread_concurrency Yes Yes Yes Global No
thread_handling Yes Yes Yes Global No
thread_stack Yes Yes Yes Global No
time_format Yes Global No
time_zone Yes Yes Yes Both Yes
timed_mutexes Yes Yes Yes Global Yes
timestamp Yes Session Yes
tmp_table_size Yes Yes Yes Both Yes
tmpdir Yes Yes Yes Global No
transaction_alloc_block_size Yes Yes Yes Both Yes
transaction_prealloc_size Yes Yes Yes Both Yes
tx_isolation Yes Both Yes
tx_read_only Yes Both Yes
unique_checks Yes Both Yes
updatable_views_with_limit Yes Yes Yes Both Yes
version Yes Global No
version_comment Yes Global No
version_compile_machine Yes Global No
version_compile_os Yes Global No
wait_timeout Yes Yes Yes Both Yes
warning_count Yes Session No';
$vars = explode("\r\n", $vars);
$i = 0;
foreach($vars as $v)
{
preg_match('#^(\S+)\s+(\S+)\s+(.+)$#', $v, $matches);
switch($matches[2])
{
case 'numeric': $vartype='vtNumeric'; break;
case 'string': $vartype='vtString'; break;
case 'boolean': $vartype='vtBoolean'; break;
case 'enumeration': $vartype='vtEnum'; break;
}
switch($matches[3])
// auto_increment_increment Yes Yes Yes Both Yes
// version_compile_machine Yes Global No
preg_match('#^(\-\s+Variable\:\s+)?(\S+)\s{2}(Yes|No|\s)\s{2}(Yes|No|\s)\s{2}(Yes|No|\s)\s{2}(Global|Session|Both|\s)\s{2}(Yes|No|\s)$#', $v, $matches);
# var_dump($matches);
$name = $matches[2];
$scope = strtoupper(trim($matches[6]));
if(empty($scope) || strpos($name, '-')!==false)
continue;
switch($scope)
{
case 'GLOBAL': $varscope='vsGlobal'; break;
case 'SESSION': $varscope='vsSession'; break;
case 'GLOBAL | SESSION': $varscope='vsBoth'; break;
case 'BOTH': $varscope='vsBoth'; break;
}
echo " (
Name: '".$matches[1]."';
VarType: ".$vartype.";
VarScope: ".$varscope.";".($vartype=='vtEnum' ? "\r\n EnumValues: '';" : "")."
Name: '".$name."';
IsDynamic: ".($matches[7]=='Yes' ? 'True' : 'False').";
VarScope: ".$varscope.";
),\r\n";
$i++;
// break;
}
echo $i;
?>

View File

@ -14,7 +14,6 @@ object frmEditVariable: TfrmEditVariable
Font.Style = []
OldCreateOrder = False
Position = poMainFormCenter
OnClose = FormClose
OnCreate = FormCreate
OnDestroy = FormDestroy
OnShow = FormShow

View File

@ -7,6 +7,9 @@ uses
dbconnection, mysql_structures, ComCtrls;
type
TVarType = (vtString, vtNumeric, vtBoolean, vtEnum);
EVariableError = class(Exception);
TfrmEditVariable = class(TForm)
btnOK: TButton;
btnCancel: TButton;
@ -28,15 +31,18 @@ type
procedure btnOKClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure btnHelpClick(Sender: TObject);
private
{ Private declarations }
FVar: TServerVariable;
FVarType: TVarType;
FVarValue: String;
procedure SetVarName(Value: String);
public
{ Public declarations }
VarName, VarValue: String;
property VarName: String write SetVarName;
property VarValue: String write FVarValue;
end;
@ -64,54 +70,66 @@ begin
end;
procedure TfrmEditVariable.FormShow(Sender: TObject);
procedure TfrmEditVariable.SetVarName(Value: String);
var
i: Integer;
val: String;
Found: Boolean;
begin
// Find var name in predefined documented list of variables
Found := False;
for i:=Low(MySQLVariables) to High(MySQLVariables) do begin
if MySQLVariables[i].Name = VarName then begin
if MySQLVariables[i].Name = Value then begin
FVar := MySQLVariables[i];
Found := True;
if not FVar.IsDynamic then
raise EVariableError.Create(Value+' is a read only variable, not editable.');
break;
end;
end;
if not Found then
raise EVariableError.Create('Could not find '+Value+' variable in internal mapping.');
end;
procedure TfrmEditVariable.FormShow(Sender: TObject);
var
val: String;
begin
// Verify variable type by value
if (FVar.VarType = vtNumeric) and (not IsNumeric(VarValue)) then
FVar.VarType := vtString;
if (FVar.VarType = vtEnum) and (Pos(UpperCase(VarValue), UpperCase(FVar.EnumValues))=0) then
FVar.VarType := vtString;
if (FVar.VarType = vtBoolean) and (Pos(UpperCase(VarValue), 'ON,OFF,0,1,YES,NO')=0) then
FVar.VarType := vtString;
if (FVar.VarType = vtString) and (Pos(UpperCase(VarValue), 'ON,OFF,0,1,YES,NO')>0) then
FVar.VarType := vtBoolean;
FVarType := vtString;
if IsNumeric(FVarValue) then
FVarType := vtNumeric;
if (FVar.EnumValues <> '') and (Pos(UpperCase(FVarValue), UpperCase(FVar.EnumValues))>0) then
FVarType := vtEnum;
if (FVarType <> vtEnum) and (Pos(UpperCase(FVarValue), 'ON,OFF,0,1,YES,NO')>0) then
FVarType := vtBoolean;
gbValue.Caption := VarName;
gbValue.Caption := FVar.Name;
lblString.Enabled := FVar.VarType = vtString;
editString.Enabled := FVar.VarType = vtString;
lblNumber.Enabled := FVar.VarType = vtNumeric;
editNumber.Enabled := FVar.VarType = vtNumeric;
UpDownNumber.Enabled := FVar.VarType = vtNumeric;
lblEnum.Enabled := FVar.VarType = vtEnum;
comboEnum.Enabled := FVar.VarType = vtEnum;
lblBoolean.Enabled := FVar.VarType = vtBoolean;
radioBooleanOn.Enabled := FVar.VarType = vtBoolean;
radioBooleanOff.Enabled := FVar.VarType = vtBoolean;
lblString.Enabled := FVarType = vtString;
editString.Enabled := FVarType = vtString;
lblNumber.Enabled := FVarType = vtNumeric;
editNumber.Enabled := FVarType = vtNumeric;
UpDownNumber.Enabled := FVarType = vtNumeric;
lblEnum.Enabled := FVarType = vtEnum;
comboEnum.Enabled := FVarType = vtEnum;
lblBoolean.Enabled := FVarType = vtBoolean;
radioBooleanOn.Enabled := FVarType = vtBoolean;
radioBooleanOff.Enabled := FVarType = vtBoolean;
case FVar.VarType of
case FVarType of
vtString: begin
editString.Text := VarValue;
editString.Text := FVarValue;
editString.SelectAll;
editString.SetFocus;
end;
vtNumeric: begin
UpDownNumber.Position := MakeInt(VarValue);
UpDownNumber.Position := MakeInt(FVarValue);
editNumber.SelectAll;
editNumber.SetFocus;
end;
vtBoolean: begin
val := UpperCase(VarValue);
val := UpperCase(FVarValue);
if (val='ON') or (val='1') or (val='YES') then begin
radioBooleanOn.Checked := True;
radioBooleanOn.SetFocus;
@ -122,7 +140,7 @@ begin
end;
vtEnum: begin
comboEnum.Items.CommaText := FVar.EnumValues;
comboEnum.ItemIndex := comboEnum.Items.IndexOf(UpperCase(VarValue));
comboEnum.ItemIndex := comboEnum.Items.IndexOf(UpperCase(FVarValue));
comboEnum.SetFocus;
end;
end;
@ -136,12 +154,6 @@ begin
end;
procedure TfrmEditVariable.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
{**
Compose SQL query and set the new variable value
}
@ -155,9 +167,9 @@ begin
sql := sql + 'session'
else
sql := sql + 'global';
sql := sql + '.' + VarName + ' = ';
sql := sql + '.' + FVar.Name + ' = ';
case FVar.VarType of
case FVarType of
vtNumeric: val := IntToStr(UpDownNumber.Position);
vtString: val := MainForm.ActiveConnection.EscapeString(editString.Text);
vtBoolean: val := IntToStr(Integer(radioBooleanOn.Checked));

View File

@ -725,6 +725,7 @@ object MainForm: TMainForm
OnCompareNodes = AnyGridCompareNodes
OnDblClick = ListVariablesDblClick
OnGetText = HostListGetText
OnPaintText = ListVariablesPaintText
OnGetImageIndex = HostListGetImageIndex
OnGetHint = AnyGridGetHint
OnGetNodeDataSize = AnyGridGetNodeDataSize

View File

@ -869,6 +869,9 @@ type
procedure menuClearQueryHistoryClick(Sender: TObject);
procedure splitterTopBottomMoved(Sender: TObject);
procedure actGridEditFunctionExecute(Sender: TObject);
procedure ListVariablesPaintText(Sender: TBaseVirtualTree;
const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
TextType: TVSTTextType);
private
FLastHintMousepos: TPoint;
FLastHintControlIndex: Integer;
@ -6806,6 +6809,41 @@ begin
end;
procedure TMainForm.ListVariablesPaintText(Sender: TBaseVirtualTree;
const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
TextType: TVSTTextType);
var
Results: TDBQuery;
Idx: PCardinal;
i, tmp: Integer;
Val: String;
dcat: TDBDatatypeCategoryIndex;
begin
Idx := Sender.GetNodeData(Node);
Results := GridResult(Sender);
Results.RecNo := Idx^;
tmp := -1;
for i:=Low(MySQLVariables) to High(MySQLVariables) do begin
if MySQLVariables[i].Name = Results.Col(0) then begin
tmp := i;
break;
end;
end;
if (tmp=-1) or (not MySQLVariables[tmp].IsDynamic) then
TargetCanvas.Font.Color := clInactiveCaptionText
else if Column=1 then begin
Val := Results.Col(1);
if IsNumeric(Val) then
dcat := dtcInteger
else if (tmp > -1) and ((MySQLVariables[tmp].EnumValues <> '') or (Pos(UpperCase(Val), 'ON,OFF,0,1,YES,NO')>0)) then
dcat := dtcOther
else
dcat := dtcText;
TargetCanvas.Font.Color := DatatypeCategories[dcat].Color;
end;
end;
procedure TMainForm.HostListGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
var
@ -6938,11 +6976,20 @@ var
Dialog: TfrmEditVariable;
begin
Dialog := TfrmEditVariable.Create(Self);
try
try
Dialog.VarName := ListVariables.Text[ListVariables.FocusedNode, 0];
Dialog.VarValue := ListVariables.Text[ListVariables.FocusedNode, 1];
// Refresh list node
if Dialog.ShowModal = mrOK then
InvalidateVT(ListVariables, VTREE_NOTLOADED, False);
except
on E:EVariableError do
ErrorDialog(E.Message);
end;
finally
Dialog.Free;
end;
end;

File diff suppressed because it is too large Load Diff