Current Path: > > > usr > include > mysql > server > private
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
atomic | Directory | - | - | |
aligned.h | File | 1136 bytes | May 28 2025 17:32:51. | |
aria_backup.h | File | 1547 bytes | May 28 2025 17:32:51. | |
assume_aligned.h | File | 2350 bytes | May 28 2025 17:32:51. | |
authors.h | File | 10141 bytes | May 28 2025 17:32:51. | |
backup.h | File | 1703 bytes | May 28 2025 17:32:51. | |
bounded_queue.h | File | 6093 bytes | May 28 2025 17:32:51. | |
client_settings.h | File | 1935 bytes | May 28 2025 17:32:51. | |
compat56.h | File | 2280 bytes | May 28 2025 17:32:51. | |
config.h | File | 14574 bytes | May 28 2025 17:32:51. | |
contributors.h | File | 4878 bytes | May 28 2025 17:32:51. | |
create_options.h | File | 4524 bytes | May 28 2025 17:32:51. | |
create_tmp_table.h | File | 2808 bytes | May 28 2025 17:32:51. | |
cset_narrowing.h | File | 3968 bytes | May 28 2025 17:32:51. | |
custom_conf.h | File | 1082 bytes | May 28 2025 17:32:51. | |
datadict.h | File | 1700 bytes | May 28 2025 17:32:51. | |
ddl_log.h | File | 12685 bytes | May 28 2025 17:32:51. | |
debug.h | File | 1234 bytes | May 28 2025 17:32:51. | |
debug_sync.h | File | 2046 bytes | May 28 2025 17:32:51. | |
derived_handler.h | File | 2379 bytes | May 28 2025 17:32:51. | |
derror.h | File | 980 bytes | May 28 2025 17:32:51. | |
des_key_file.h | File | 1236 bytes | May 28 2025 17:32:51. | |
discover.h | File | 1570 bytes | May 28 2025 17:32:51. | |
dur_prop.h | File | 1082 bytes | May 28 2025 17:32:51. | |
embedded_priv.h | File | 1733 bytes | May 28 2025 17:32:51. | |
event_data_objects.h | File | 4187 bytes | May 28 2025 17:32:51. | |
event_db_repository.h | File | 3648 bytes | May 28 2025 17:32:51. | |
event_parse_data.h | File | 2899 bytes | May 28 2025 17:32:51. | |
event_queue.h | File | 3438 bytes | May 28 2025 17:32:51. | |
event_scheduler.h | File | 3290 bytes | May 28 2025 17:32:51. | |
events.h | File | 4704 bytes | May 28 2025 17:32:51. | |
field.h | File | 220415 bytes | May 28 2025 17:32:51. | |
field_comp.h | File | 1174 bytes | May 28 2025 17:32:51. | |
filesort.h | File | 7283 bytes | May 28 2025 17:32:51. | |
filesort_utils.h | File | 8195 bytes | May 28 2025 17:32:51. | |
ft_global.h | File | 3113 bytes | May 28 2025 17:32:51. | |
gcalc_slicescan.h | File | 17272 bytes | May 28 2025 17:32:51. | |
gcalc_tools.h | File | 11900 bytes | May 28 2025 17:32:51. | |
grant.h | File | 2758 bytes | May 28 2025 17:32:51. | |
group_by_handler.h | File | 3534 bytes | May 28 2025 17:32:51. | |
gstream.h | File | 2437 bytes | May 28 2025 17:32:51. | |
ha_handler_stats.h | File | 2335 bytes | May 28 2025 17:32:51. | |
ha_partition.h | File | 64413 bytes | May 28 2025 17:32:51. | |
ha_sequence.h | File | 6245 bytes | May 28 2025 17:32:51. | |
handle_connections_win.h | File | 884 bytes | May 28 2025 17:32:51. | |
handler.h | File | 201171 bytes | May 28 2025 17:32:51. | |
hash.h | File | 4449 bytes | May 28 2025 17:32:51. | |
hash_filo.h | File | 5688 bytes | May 28 2025 17:32:51. | |
heap.h | File | 9480 bytes | May 28 2025 17:32:51. | |
hostname.h | File | 5419 bytes | May 28 2025 17:32:51. | |
ilist.h | File | 7048 bytes | May 28 2025 17:32:51. | |
init.h | File | 852 bytes | May 28 2025 17:32:51. | |
innodb_priv.h | File | 1319 bytes | May 28 2025 17:32:51. | |
item.h | File | 279188 bytes | May 28 2025 17:32:51. | |
item_cmpfunc.h | File | 135027 bytes | May 28 2025 17:32:51. | |
item_create.h | File | 11501 bytes | May 28 2025 17:32:51. | |
item_func.h | File | 136655 bytes | May 28 2025 17:32:51. | |
item_geofunc.h | File | 38904 bytes | May 28 2025 17:32:51. | |
item_jsonfunc.h | File | 22516 bytes | May 28 2025 17:32:51. | |
item_row.h | File | 5221 bytes | May 28 2025 17:32:51. | |
item_strfunc.h | File | 72241 bytes | May 28 2025 17:32:51. | |
item_subselect.h | File | 59153 bytes | May 28 2025 17:32:51. | |
item_sum.h | File | 72287 bytes | May 28 2025 17:32:51. | |
item_timefunc.h | File | 64615 bytes | May 28 2025 17:32:51. | |
item_vers.h | File | 4334 bytes | May 28 2025 17:32:51. | |
item_windowfunc.h | File | 34315 bytes | May 28 2025 17:32:51. | |
item_xmlfunc.h | File | 4607 bytes | May 28 2025 17:32:51. | |
json_table.h | File | 9506 bytes | May 28 2025 17:32:51. | |
key.h | File | 2132 bytes | May 28 2025 17:32:51. | |
keycaches.h | File | 1995 bytes | May 28 2025 17:32:51. | |
lex.h | File | 29827 bytes | May 28 2025 17:32:51. | |
lex_string.h | File | 4068 bytes | May 28 2025 17:32:51. | |
lex_symbol.h | File | 1323 bytes | May 28 2025 17:32:51. | |
lf.h | File | 6462 bytes | May 28 2025 17:32:51. | |
lock.h | File | 2203 bytes | May 28 2025 17:32:51. | |
log.h | File | 46083 bytes | May 28 2025 17:32:51. | |
log_event.h | File | 186410 bytes | May 28 2025 17:32:51. | |
log_event_data_type.h | File | 1890 bytes | May 28 2025 17:32:51. | |
log_event_old.h | File | 19830 bytes | May 28 2025 17:32:51. | |
log_slow.h | File | 2442 bytes | May 28 2025 17:32:51. | |
maria.h | File | 5872 bytes | May 28 2025 17:32:51. | |
mariadb.h | File | 1277 bytes | May 28 2025 17:32:51. | |
mdl.h | File | 38468 bytes | May 28 2025 17:32:51. | |
mem_root_array.h | File | 7106 bytes | May 28 2025 17:32:51. | |
message.h | File | 1195 bytes | May 28 2025 17:32:51. | |
multi_range_read.h | File | 23179 bytes | May 28 2025 17:32:51. | |
my_alarm.h | File | 2429 bytes | May 28 2025 17:32:51. | |
my_apc.h | File | 4747 bytes | May 28 2025 17:32:51. | |
my_atomic.h | File | 7281 bytes | May 28 2025 17:32:51. | |
my_atomic_wrapper.h | File | 3051 bytes | May 28 2025 17:32:51. | |
my_base.h | File | 27210 bytes | May 28 2025 17:32:51. | |
my_bit.h | File | 6196 bytes | May 28 2025 17:32:51. | |
my_bitmap.h | File | 5882 bytes | May 28 2025 17:32:51. | |
my_check_opt.h | File | 2618 bytes | May 28 2025 17:32:51. | |
my_compare.h | File | 11194 bytes | May 28 2025 17:32:51. | |
my_counter.h | File | 1721 bytes | May 28 2025 17:32:51. | |
my_cpu.h | File | 4855 bytes | May 28 2025 17:32:51. | |
my_crypt.h | File | 904 bytes | May 28 2025 17:32:51. | |
my_decimal.h | File | 14489 bytes | May 28 2025 17:32:51. | |
my_default.h | File | 1880 bytes | May 28 2025 17:32:51. | |
my_handler_errors.h | File | 4882 bytes | May 28 2025 17:32:51. | |
my_json_writer.h | File | 18382 bytes | May 28 2025 17:32:51. | |
my_libwrap.h | File | 1183 bytes | May 28 2025 17:32:51. | |
my_md5.h | File | 1486 bytes | May 28 2025 17:32:51. | |
my_minidump.h | File | 848 bytes | May 28 2025 17:32:51. | |
my_nosys.h | File | 1438 bytes | May 28 2025 17:32:51. | |
my_rdtsc.h | File | 8425 bytes | May 28 2025 17:32:51. | |
my_rnd.h | File | 1064 bytes | May 28 2025 17:32:51. | |
my_service_manager.h | File | 2050 bytes | May 28 2025 17:32:51. | |
my_stack_alloc.h | File | 6493 bytes | May 28 2025 17:32:51. | |
my_stacktrace.h | File | 3215 bytes | May 28 2025 17:32:51. | |
my_time.h | File | 10466 bytes | May 28 2025 17:32:51. | |
my_tree.h | File | 3991 bytes | May 28 2025 17:32:51. | |
my_uctype.h | File | 69528 bytes | May 28 2025 17:32:51. | |
my_user.h | File | 1126 bytes | May 28 2025 17:32:51. | |
myisam.h | File | 17506 bytes | May 28 2025 17:32:51. | |
myisamchk.h | File | 4716 bytes | May 28 2025 17:32:51. | |
myisammrg.h | File | 4897 bytes | May 28 2025 17:32:51. | |
myisampack.h | File | 14929 bytes | May 28 2025 17:32:51. | |
mysqld.h | File | 40502 bytes | May 28 2025 17:32:51. | |
mysqld_default_groups.h | File | 204 bytes | May 28 2025 17:32:51. | |
mysqld_suffix.h | File | 1201 bytes | May 28 2025 17:32:51. | |
mysys_err.h | File | 3022 bytes | May 28 2025 17:32:51. | |
opt_range.h | File | 59591 bytes | May 28 2025 17:32:51. | |
opt_subselect.h | File | 14551 bytes | May 28 2025 17:32:51. | |
opt_trace.h | File | 8494 bytes | May 28 2025 17:32:51. | |
opt_trace_context.h | File | 3291 bytes | May 28 2025 17:32:51. | |
parse_file.h | File | 4387 bytes | May 28 2025 17:32:51. | |
partition_element.h | File | 5209 bytes | May 28 2025 17:32:51. | |
partition_info.h | File | 19300 bytes | May 28 2025 17:32:51. | |
password.h | File | 1170 bytes | May 28 2025 17:32:51. | |
pfs_file_provider.h | File | 3153 bytes | May 28 2025 17:32:51. | |
pfs_idle_provider.h | File | 1385 bytes | May 28 2025 17:32:51. | |
pfs_memory_provider.h | File | 1626 bytes | May 28 2025 17:32:51. | |
pfs_metadata_provider.h | File | 1898 bytes | May 28 2025 17:32:51. | |
pfs_socket_provider.h | File | 2258 bytes | May 28 2025 17:32:51. | |
pfs_stage_provider.h | File | 1556 bytes | May 28 2025 17:32:51. | |
pfs_statement_provider.h | File | 4347 bytes | May 28 2025 17:32:51. | |
pfs_table_provider.h | File | 2625 bytes | May 28 2025 17:32:51. | |
pfs_thread_provider.h | File | 5560 bytes | May 28 2025 17:32:51. | |
pfs_transaction_provider.h | File | 2846 bytes | May 28 2025 17:32:51. | |
privilege.h | File | 28642 bytes | May 28 2025 17:32:51. | |
probes_mysql.h | File | 973 bytes | May 28 2025 17:32:51. | |
probes_mysql_dtrace.h | File | 33005 bytes | May 28 2025 17:32:51. | |
probes_mysql_nodtrace.h | File | 5005 bytes | May 28 2025 17:32:51. | |
procedure.h | File | 6784 bytes | May 28 2025 17:32:51. | |
protocol.h | File | 12490 bytes | May 28 2025 17:32:51. | |
proxy_protocol.h | File | 548 bytes | May 28 2025 17:32:51. | |
queues.h | File | 3477 bytes | May 28 2025 17:32:51. | |
records.h | File | 3147 bytes | May 28 2025 17:32:51. | |
repl_failsafe.h | File | 1585 bytes | May 28 2025 17:32:51. | |
replication.h | File | 16106 bytes | May 28 2025 17:32:51. | |
rijndael.h | File | 1711 bytes | May 28 2025 17:32:51. | |
rowid_filter.h | File | 15477 bytes | May 28 2025 17:32:51. | |
rpl_constants.h | File | 3357 bytes | May 28 2025 17:32:51. | |
rpl_filter.h | File | 4535 bytes | May 28 2025 17:32:51. | |
rpl_gtid.h | File | 13683 bytes | May 28 2025 17:32:51. | |
rpl_injector.h | File | 9621 bytes | May 28 2025 17:32:51. | |
rpl_mi.h | File | 14991 bytes | May 28 2025 17:32:51. | |
rpl_parallel.h | File | 17461 bytes | May 28 2025 17:32:51. | |
rpl_record.h | File | 1585 bytes | May 28 2025 17:32:51. | |
rpl_record_old.h | File | 1407 bytes | May 28 2025 17:32:51. | |
rpl_reporting.h | File | 3713 bytes | May 28 2025 17:32:51. | |
rpl_rli.h | File | 32746 bytes | May 28 2025 17:32:51. | |
rpl_tblmap.h | File | 3177 bytes | May 28 2025 17:32:51. | |
rpl_utility.h | File | 9630 bytes | May 28 2025 17:32:51. | |
scheduler.h | File | 3199 bytes | May 28 2025 17:32:51. | |
scope.h | File | 4393 bytes | May 28 2025 17:32:51. | |
select_handler.h | File | 2228 bytes | May 28 2025 17:32:51. | |
semisync.h | File | 2287 bytes | May 28 2025 17:32:51. | |
semisync_master.h | File | 25562 bytes | May 28 2025 17:32:51. | |
semisync_master_ack_receiver.h | File | 8709 bytes | May 28 2025 17:32:51. | |
semisync_slave.h | File | 3733 bytes | May 28 2025 17:32:51. | |
service_versions.h | File | 2049 bytes | May 28 2025 17:32:51. | |
session_tracker.h | File | 14275 bytes | May 28 2025 17:32:51. | |
set_var.h | File | 16551 bytes | May 28 2025 17:32:51. | |
slave.h | File | 12275 bytes | May 28 2025 17:32:51. | |
socketpair.h | File | 842 bytes | May 28 2025 17:32:51. | |
source_revision.h | File | 67 bytes | May 28 2025 17:32:51. | |
sp.h | File | 22588 bytes | May 28 2025 17:32:51. | |
sp_cache.h | File | 2045 bytes | May 28 2025 17:32:51. | |
sp_head.h | File | 64509 bytes | May 28 2025 17:32:51. | |
sp_pcontext.h | File | 24897 bytes | May 28 2025 17:32:51. | |
sp_rcontext.h | File | 14334 bytes | May 28 2025 17:32:51. | |
span.h | File | 3931 bytes | May 28 2025 17:32:51. | |
spatial.h | File | 22305 bytes | May 28 2025 17:32:51. | |
sql_acl.h | File | 14132 bytes | May 28 2025 17:32:51. | |
sql_admin.h | File | 2915 bytes | May 28 2025 17:32:51. | |
sql_alloc.h | File | 1732 bytes | May 28 2025 17:32:51. | |
sql_alter.h | File | 15277 bytes | May 28 2025 17:32:51. | |
sql_analyse.h | File | 11125 bytes | May 28 2025 17:32:51. | |
sql_analyze_stmt.h | File | 12681 bytes | May 28 2025 17:32:51. | |
sql_array.h | File | 6875 bytes | May 28 2025 17:32:51. | |
sql_audit.h | File | 13943 bytes | May 28 2025 17:32:51. | |
sql_base.h | File | 25880 bytes | May 28 2025 17:32:51. | |
sql_basic_types.h | File | 9528 bytes | May 28 2025 17:32:51. | |
sql_binlog.h | File | 895 bytes | May 28 2025 17:32:51. | |
sql_bitmap.h | File | 7845 bytes | May 28 2025 17:32:51. | |
sql_bootstrap.h | File | 1812 bytes | May 28 2025 17:32:51. | |
sql_cache.h | File | 21676 bytes | May 28 2025 17:32:51. | |
sql_callback.h | File | 1542 bytes | May 28 2025 17:32:51. | |
sql_class.h | File | 267375 bytes | May 28 2025 17:32:51. | |
sql_cmd.h | File | 9421 bytes | May 28 2025 17:32:51. | |
sql_connect.h | File | 4087 bytes | May 28 2025 17:32:51. | |
sql_const.h | File | 11228 bytes | May 28 2025 17:32:51. | |
sql_crypt.h | File | 1437 bytes | May 28 2025 17:32:51. | |
sql_cte.h | File | 16533 bytes | May 28 2025 17:32:51. | |
sql_cursor.h | File | 2316 bytes | May 28 2025 17:32:51. | |
sql_db.h | File | 2440 bytes | May 28 2025 17:32:51. | |
sql_debug.h | File | 5646 bytes | May 28 2025 17:32:51. | |
sql_delete.h | File | 1343 bytes | May 28 2025 17:32:51. | |
sql_derived.h | File | 1289 bytes | May 28 2025 17:32:51. | |
sql_digest.h | File | 3819 bytes | May 28 2025 17:32:51. | |
sql_digest_stream.h | File | 1567 bytes | May 28 2025 17:32:51. | |
sql_do.h | File | 954 bytes | May 28 2025 17:32:51. | |
sql_error.h | File | 39588 bytes | May 28 2025 17:32:51. | |
sql_explain.h | File | 29020 bytes | May 28 2025 17:32:51. | |
sql_expression_cache.h | File | 4359 bytes | May 28 2025 17:32:51. | |
sql_get_diagnostics.h | File | 7867 bytes | May 28 2025 17:32:51. | |
sql_handler.h | File | 2910 bytes | May 28 2025 17:32:51. | |
sql_help.h | File | 995 bytes | May 28 2025 17:32:51. | |
sql_hset.h | File | 3401 bytes | May 28 2025 17:32:51. | |
sql_i_s.h | File | 8232 bytes | May 28 2025 17:32:51. | |
sql_insert.h | File | 2651 bytes | May 28 2025 17:32:51. | |
sql_join_cache.h | File | 48669 bytes | May 28 2025 17:32:51. | |
sql_lex.h | File | 172548 bytes | May 28 2025 17:32:51. | |
sql_lifo_buffer.h | File | 9676 bytes | May 28 2025 17:32:51. | |
sql_limit.h | File | 3187 bytes | May 28 2025 17:32:51. | |
sql_list.h | File | 22458 bytes | May 28 2025 17:32:51. | |
sql_load.h | File | 1276 bytes | May 28 2025 17:32:51. | |
sql_locale.h | File | 2701 bytes | May 28 2025 17:32:51. | |
sql_manager.h | File | 960 bytes | May 28 2025 17:32:51. | |
sql_mode.h | File | 6735 bytes | May 28 2025 17:32:51. | |
sql_parse.h | File | 8636 bytes | May 28 2025 17:32:51. | |
sql_partition.h | File | 12072 bytes | May 28 2025 17:32:51. | |
sql_partition_admin.h | File | 5940 bytes | May 28 2025 17:32:51. | |
sql_plist.h | File | 7732 bytes | May 28 2025 17:32:51. | |
sql_plugin.h | File | 7549 bytes | May 28 2025 17:32:51. | |
sql_plugin_compat.h | File | 2237 bytes | May 28 2025 17:32:51. | |
sql_prepare.h | File | 11409 bytes | May 28 2025 17:32:51. | |
sql_priv.h | File | 18593 bytes | May 28 2025 17:32:51. | |
sql_profile.h | File | 7816 bytes | May 28 2025 17:32:51. | |
sql_reload.h | File | 1036 bytes | May 28 2025 17:32:51. | |
sql_rename.h | File | 982 bytes | May 28 2025 17:32:51. | |
sql_repl.h | File | 3045 bytes | May 28 2025 17:32:51. | |
sql_schema.h | File | 3303 bytes | May 28 2025 17:32:51. | |
sql_select.h | File | 88898 bytes | May 28 2025 17:32:51. | |
sql_sequence.h | File | 5180 bytes | May 28 2025 17:32:51. | |
sql_servers.h | File | 1777 bytes | May 28 2025 17:32:51. | |
sql_show.h | File | 9616 bytes | May 28 2025 17:32:51. | |
sql_signal.h | File | 3362 bytes | May 28 2025 17:32:51. | |
sql_sort.h | File | 21967 bytes | May 28 2025 17:32:51. | |
sql_statistics.h | File | 12454 bytes | May 28 2025 17:32:51. | |
sql_string.h | File | 39773 bytes | May 28 2025 17:32:51. | |
sql_table.h | File | 9612 bytes | May 28 2025 17:32:51. | |
sql_tablespace.h | File | 956 bytes | May 28 2025 17:32:51. | |
sql_test.h | File | 1589 bytes | May 28 2025 17:32:51. | |
sql_time.h | File | 8374 bytes | May 28 2025 17:32:51. | |
sql_trigger.h | File | 12332 bytes | May 28 2025 17:32:51. | |
sql_truncate.h | File | 2079 bytes | May 28 2025 17:32:51. | |
sql_tvc.h | File | 2418 bytes | May 28 2025 17:32:51. | |
sql_type.h | File | 295437 bytes | May 28 2025 17:32:51. | |
sql_type_fixedbin.h | File | 64320 bytes | May 28 2025 17:32:51. | |
sql_type_fixedbin_storage.h | File | 5467 bytes | May 28 2025 17:32:51. | |
sql_type_geom.h | File | 19086 bytes | May 28 2025 17:32:51. | |
sql_type_int.h | File | 10001 bytes | May 28 2025 17:32:51. | |
sql_type_json.h | File | 6155 bytes | May 28 2025 17:32:51. | |
sql_type_real.h | File | 1257 bytes | May 28 2025 17:32:51. | |
sql_type_string.h | File | 1629 bytes | May 28 2025 17:32:51. | |
sql_udf.h | File | 4850 bytes | May 28 2025 17:32:51. | |
sql_union.h | File | 1064 bytes | May 28 2025 17:32:51. | |
sql_update.h | File | 1923 bytes | May 28 2025 17:32:51. | |
sql_view.h | File | 2470 bytes | May 28 2025 17:32:51. | |
sql_window.h | File | 6814 bytes | May 28 2025 17:32:51. | |
ssl_compat.h | File | 3147 bytes | May 28 2025 17:32:51. | |
strfunc.h | File | 2275 bytes | May 28 2025 17:32:51. | |
structs.h | File | 26379 bytes | May 28 2025 17:32:51. | |
sys_vars_shared.h | File | 2729 bytes | May 28 2025 17:32:51. | |
t_ctype.h | File | 5639 bytes | May 28 2025 17:32:51. | |
table.h | File | 115741 bytes | May 28 2025 17:32:51. | |
table_cache.h | File | 4232 bytes | May 28 2025 17:32:51. | |
thr_alarm.h | File | 2932 bytes | May 28 2025 17:32:51. | |
thr_lock.h | File | 7350 bytes | May 28 2025 17:32:51. | |
thr_malloc.h | File | 1202 bytes | May 28 2025 17:32:51. | |
thr_timer.h | File | 1563 bytes | May 28 2025 17:32:51. | |
thread_cache.h | File | 5905 bytes | May 28 2025 17:32:51. | |
threadpool.h | File | 4810 bytes | May 28 2025 17:32:51. | |
threadpool_generic.h | File | 3969 bytes | May 28 2025 17:32:51. | |
threadpool_winsockets.h | File | 2290 bytes | May 28 2025 17:32:51. | |
transaction.h | File | 1466 bytes | May 28 2025 17:32:51. | |
tzfile.h | File | 5014 bytes | May 28 2025 17:32:51. | |
tztime.h | File | 3397 bytes | May 28 2025 17:32:51. | |
uniques.h | File | 4217 bytes | May 28 2025 17:32:51. | |
unireg.h | File | 7716 bytes | May 28 2025 17:32:51. | |
vers_string.h | File | 2534 bytes | May 28 2025 17:32:51. | |
violite.h | File | 10086 bytes | May 28 2025 17:32:51. | |
waiting_threads.h | File | 4532 bytes | May 28 2025 17:32:51. | |
welcome_copyright_notice.h | File | 1218 bytes | May 28 2025 17:32:51. | |
win_tzname_data.h | File | 6506 bytes | May 28 2025 17:32:51. | |
winservice.h | File | 1194 bytes | May 28 2025 17:32:51. | |
wqueue.h | File | 1565 bytes | May 28 2025 17:32:51. | |
wsrep.h | File | 3308 bytes | May 28 2025 17:32:51. | |
wsrep_applier.h | File | 2703 bytes | May 28 2025 17:32:51. | |
wsrep_binlog.h | File | 3441 bytes | May 28 2025 17:32:51. | |
wsrep_client_service.h | File | 2560 bytes | May 28 2025 17:32:51. | |
wsrep_client_state.h | File | 1566 bytes | May 28 2025 17:32:51. | |
wsrep_condition_variable.h | File | 1484 bytes | May 28 2025 17:32:51. | |
wsrep_high_priority_service.h | File | 4912 bytes | May 28 2025 17:32:51. | |
wsrep_mutex.h | File | 1216 bytes | May 28 2025 17:32:51. | |
wsrep_mysqld.h | File | 21138 bytes | May 28 2025 17:32:51. | |
wsrep_mysqld_c.h | File | 1227 bytes | May 28 2025 17:32:51. | |
wsrep_on.h | File | 1718 bytes | May 28 2025 17:32:51. | |
wsrep_priv.h | File | 1634 bytes | May 28 2025 17:32:51. | |
wsrep_schema.h | File | 4943 bytes | May 28 2025 17:32:51. | |
wsrep_server_service.h | File | 3631 bytes | May 28 2025 17:32:51. | |
wsrep_server_state.h | File | 2285 bytes | May 28 2025 17:32:51. | |
wsrep_sst.h | File | 3951 bytes | May 28 2025 17:32:51. | |
wsrep_storage_service.h | File | 1809 bytes | May 28 2025 17:32:51. | |
wsrep_thd.h | File | 11160 bytes | May 28 2025 17:32:51. | |
wsrep_trans_observer.h | File | 18119 bytes | May 28 2025 17:32:51. | |
wsrep_types.h | File | 997 bytes | May 28 2025 17:32:51. | |
wsrep_utils.h | File | 9290 bytes | May 28 2025 17:32:51. | |
wsrep_var.h | File | 4607 bytes | May 28 2025 17:32:51. | |
wsrep_xid.h | File | 1549 bytes | May 28 2025 17:32:51. | |
xa.h | File | 1845 bytes | May 28 2025 17:32:51. |
/* Copyright (C) 2007 Google Inc. Copyright (c) 2008 MySQL AB, 2009 Sun Microsystems, Inc. Use is subject to license terms. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */ #ifndef SEMISYNC_MASTER_H #define SEMISYNC_MASTER_H #include "semisync.h" #include "semisync_master_ack_receiver.h" #ifdef HAVE_PSI_INTERFACE extern PSI_mutex_key key_LOCK_rpl_semi_sync_master_enabled; extern PSI_mutex_key key_LOCK_binlog; extern PSI_cond_key key_COND_binlog_send; #endif struct Tranx_node { char log_name[FN_REFLEN]; my_off_t log_pos; THD *thd; /* The thread awaiting an ACK */ struct Tranx_node *next; /* the next node in the sorted list */ struct Tranx_node *hash_next; /* the next node during hash collision */ }; /** @class Tranx_node_allocator This class provides memory allocating and freeing methods for Tranx_node. The main target is performance. @section ALLOCATE How to allocate a node The pointer of the first node after 'last_node' in current_block is returned. current_block will move to the next free Block when all nodes of it are in use. A new Block is allocated and is put into the rear of the Block link table if no Block is free. The list starts up empty (ie, there is no allocated Block). After some nodes are freed, there probably are some free nodes before the sequence of the allocated nodes, but we do not reuse it. It is better to keep the allocated nodes are in the sequence, for it is more efficient for allocating and freeing Tranx_node. @section FREENODE How to free nodes There are two methods for freeing nodes. They are free_all_nodes and free_nodes_before. 'A Block is free' means all of its nodes are free. @subsection free_nodes_before As all allocated nodes are in the sequence, 'Before one node' means all nodes before given node in the same Block and all Blocks before the Block which containing the given node. As such, all Blocks before the given one ('node') are free Block and moved into the rear of the Block link table. The Block containing the given 'node', however, is not. For at least the given 'node' is still in use. This will waste at most one Block, but it is more efficient. */ #define BLOCK_TRANX_NODES 16 class Tranx_node_allocator { public: /** @param reserved_nodes The number of reserved Tranx_nodes. It is used to set 'reserved_blocks' which can contain at least 'reserved_nodes' number of Tranx_nodes. When freeing memory, we will reserve at least reserved_blocks of Blocks not freed. */ Tranx_node_allocator(uint reserved_nodes) : reserved_blocks(reserved_nodes/BLOCK_TRANX_NODES + (reserved_nodes%BLOCK_TRANX_NODES > 1 ? 2 : 1)), first_block(NULL), last_block(NULL), current_block(NULL), last_node(-1), block_num(0) {} ~Tranx_node_allocator() { Block *block= first_block; while (block != NULL) { Block *next= block->next; free_block(block); block= next; } } /** The pointer of the first node after 'last_node' in current_block is returned. current_block will move to the next free Block when all nodes of it are in use. A new Block is allocated and is put into the rear of the Block link table if no Block is free. @return Return a Tranx_node *, or NULL if an error occurred. */ Tranx_node *allocate_node() { Tranx_node *trx_node; Block *block= current_block; if (last_node == BLOCK_TRANX_NODES-1) { current_block= current_block->next; last_node= -1; } if (current_block == NULL && allocate_block()) { current_block= block; if (current_block) last_node= BLOCK_TRANX_NODES-1; return NULL; } trx_node= &(current_block->nodes[++last_node]); trx_node->log_name[0] = '\0'; trx_node->log_pos= 0; trx_node->next= 0; trx_node->hash_next= 0; return trx_node; } /** All nodes are freed. @return Return 0, or 1 if an error occurred. */ int free_all_nodes() { current_block= first_block; last_node= -1; free_blocks(); return 0; } /** All Blocks before the given 'node' are free Block and moved into the rear of the Block link table. @param node All nodes before 'node' will be freed @return Return 0, or 1 if an error occurred. */ int free_nodes_before(Tranx_node* node) { Block *block; Block *prev_block= NULL; block= first_block; while (block != current_block->next) { /* Find the Block containing the given node */ if (&(block->nodes[0]) <= node && &(block->nodes[BLOCK_TRANX_NODES]) >= node) { /* All Blocks before the given node are put into the rear */ if (first_block != block) { last_block->next= first_block; first_block= block; last_block= prev_block; last_block->next= NULL; free_blocks(); } return 0; } prev_block= block; block= block->next; } /* Node does not find should never happen */ DBUG_ASSERT(0); return 1; } private: uint reserved_blocks; /** A sequence memory which contains BLOCK_TRANX_NODES Tranx_nodes. BLOCK_TRANX_NODES The number of Tranx_nodes which are in a Block. next Every Block has a 'next' pointer which points to the next Block. These linking Blocks constitute a Block link table. */ struct Block { Block *next; Tranx_node nodes[BLOCK_TRANX_NODES]; }; /** The 'first_block' is the head of the Block link table; */ Block *first_block; /** The 'last_block' is the rear of the Block link table; */ Block *last_block; /** current_block always points the Block in the Block link table in which the last allocated node is. The Blocks before it are all in use and the Blocks after it are all free. */ Block *current_block; /** It always points to the last node which has been allocated in the current_block. */ int last_node; /** How many Blocks are in the Block link table. */ uint block_num; /** Allocate a block and then assign it to current_block. */ int allocate_block() { Block *block= (Block *)my_malloc(PSI_INSTRUMENT_ME, sizeof(Block), MYF(0)); if (block) { block->next= NULL; if (first_block == NULL) first_block= block; else last_block->next= block; /* New Block is always put into the rear */ last_block= block; /* New Block is always the current_block */ current_block= block; ++block_num; return 0; } return 1; } /** Free a given Block. @param block The Block will be freed. */ void free_block(Block *block) { my_free(block); --block_num; } /** If there are some free Blocks and the total number of the Blocks in the Block link table is larger than the 'reserved_blocks', Some free Blocks will be freed until the total number of the Blocks is equal to the 'reserved_blocks' or there is only one free Block behind the 'current_block'. */ void free_blocks() { if (current_block == NULL || current_block->next == NULL) return; /* One free Block is always kept behind the current block */ Block *block= current_block->next->next; while (block_num > reserved_blocks && block != NULL) { Block *next= block->next; free_block(block); block= next; } current_block->next->next= block; if (block == NULL) last_block= current_block->next; } }; /** Function pointer type to run on the contents of an Active_tranx node. Return 0 for success, 1 for error. Note Repl_semi_sync_master::LOCK_binlog is not guaranteed to be held for its invocation. See the context in which it is called to know. */ typedef int (*active_tranx_action)(THD *trx_thd, const char *log_file_name, my_off_t trx_log_file_pos); /** This class manages memory for active transaction list. We record each active transaction with a Tranx_node, each session can have only one open transaction. Because of EVENT, the total active transaction nodes can exceed the maximum allowed connections. */ class Active_tranx :public Trace { private: Tranx_node_allocator m_allocator; /* These two record the active transaction list in sort order. */ Tranx_node *m_trx_front, *m_trx_rear; Tranx_node **m_trx_htb; /* A hash table on active transactions. */ int m_num_entries; /* maximum hash table entries */ mysql_mutex_t *m_lock; /* mutex lock */ mysql_cond_t *m_cond_empty; /* signalled when cleared all Tranx_node */ inline void assert_lock_owner(); inline unsigned int calc_hash(const unsigned char *key, size_t length); unsigned int get_hash_value(const char *log_file_name, my_off_t log_file_pos); int compare(const char *log_file_name1, my_off_t log_file_pos1, const Tranx_node *node2) { return compare(log_file_name1, log_file_pos1, node2->log_name, node2->log_pos); } int compare(const Tranx_node *node1, const char *log_file_name2, my_off_t log_file_pos2) { return compare(node1->log_name, node1->log_pos, log_file_name2, log_file_pos2); } int compare(const Tranx_node *node1, const Tranx_node *node2) { return compare(node1->log_name, node1->log_pos, node2->log_name, node2->log_pos); } public: Active_tranx(mysql_mutex_t *lock, mysql_cond_t *cond, unsigned long trace_level); ~Active_tranx(); /* Insert an active transaction node with the specified position. * * Return: * 0: success; non-zero: error */ int insert_tranx_node(THD *thd_to_wait, const char *log_file_name, my_off_t log_file_pos); /* Clear the active transaction nodes until(inclusive) the specified * position. * If log_file_name is NULL, everything will be cleared: the sorted * list and the hash table will be reset to empty. * * The pre_delete_hook parameter is a function pointer that will be invoked * for each Active_tranx node, in order, from m_trx_front to m_trx_rear, * e.g. to signal their wakeup condition. Repl_semi_sync_binlog::LOCK_binlog * is held while this is invoked. */ void clear_active_tranx_nodes(const char *log_file_name, my_off_t log_file_pos, active_tranx_action pre_delete_hook); /* Unlinks a thread from a Tranx_node, so it will not be referenced/signalled * if it is separately killed. Note that this keeps the Tranx_node itself in * the cache so it can still be awaited by await_all_slave_replies(), e.g. * as is done by SHUTDOWN WAIT FOR ALL SLAVES. */ void unlink_thd_as_waiter(const char *log_file_name, my_off_t log_file_pos); /* Uses DBUG_ASSERT statements to ensure that the argument thd_to_check * matches the thread of the respective Tranx_node::thd of the passed in * log_file_name and log_file_pos. */ bool is_thd_waiter(THD *thd_to_check, const char *log_file_name, my_off_t log_file_pos); /* Given a position, check to see whether the position is an active * transaction's ending position by probing the hash table. */ bool is_tranx_end_pos(const char *log_file_name, my_off_t log_file_pos); /* Given two binlog positions, compare which one is bigger based on * (file_name, file_position). */ static int compare(const char *log_file_name1, my_off_t log_file_pos1, const char *log_file_name2, my_off_t log_file_pos2); /* Check if there are no transactions actively awaiting ACKs. Returns true * if the internal linked list has no entries, false otherwise. */ bool is_empty() { return m_trx_front == NULL; } }; /** The extension class for the master of semi-synchronous replication */ class Repl_semi_sync_master :public Repl_semi_sync_base { Active_tranx *m_active_tranxs; /* active transaction list: the list will be cleared when semi-sync switches off. */ /* True when init_object has been called */ bool m_init_done; /* This cond variable is signaled when enough binlog has been sent to slave, * so that a waiting trx can return the 'ok' to the client for a commit. */ mysql_cond_t COND_binlog_send; /* Mutex that protects the following state variables and the active * transaction list. * Under no cirumstances we can acquire mysql_bin_log.LOCK_log if we are * already holding m_LOCK_binlog because it can cause deadlocks. */ mysql_mutex_t LOCK_binlog; /* This is set to true when m_reply_file_name contains meaningful data. */ bool m_reply_file_name_inited; /* The binlog name up to which we have received replies from any slaves. */ char m_reply_file_name[FN_REFLEN]; /* The position in that file up to which we have the reply from any slaves. */ my_off_t m_reply_file_pos; /* This is set to true when we know the 'smallest' wait position. */ bool m_wait_file_name_inited; /* NULL, or the 'smallest' filename that a transaction is waiting for * slave replies. */ char m_wait_file_name[FN_REFLEN]; /* The smallest position in that file that a trx is waiting for: the trx * can proceed and send an 'ok' to the client when the master has got the * reply from the slave indicating that it already got the binlog events. */ my_off_t m_wait_file_pos; /* This is set to true when we know the 'largest' transaction commit * position in the binlog file. * We always maintain the position no matter whether semi-sync is switched * on switched off. When a transaction wait timeout occurs, semi-sync will * switch off. Binlog-dump thread can use the three fields to detect when * slaves catch up on replication so that semi-sync can switch on again. */ bool m_commit_file_name_inited; /* The 'largest' binlog filename that a commit transaction is seeing. */ char m_commit_file_name[FN_REFLEN]; /* The 'largest' position in that file that a commit transaction is seeing. */ my_off_t m_commit_file_pos; /* All global variables which can be set by parameters. */ volatile bool m_master_enabled; /* semi-sync is enabled on the master */ unsigned long m_wait_timeout; /* timeout period(ms) during tranx wait */ bool m_state; /* whether semi-sync is switched */ /*Waiting for ACK before/after innodb commit*/ ulong m_wait_point; void lock(); void unlock(); /* Is semi-sync replication on? */ bool is_on() { return (m_state); } void set_master_enabled(bool enabled) { m_master_enabled = enabled; } /* Switch semi-sync off because of timeout in transaction waiting. */ void switch_off(); /* Switch semi-sync on when slaves catch up. */ int try_switch_on(int server_id, const char *log_file_name, my_off_t log_file_pos); public: Repl_semi_sync_master(); ~Repl_semi_sync_master() = default; void cleanup(); bool get_master_enabled() { return m_master_enabled; } void set_trace_level(unsigned long trace_level) { m_trace_level = trace_level; if (m_active_tranxs) m_active_tranxs->m_trace_level = trace_level; } /* Set the transaction wait timeout period, in milliseconds. */ void set_wait_timeout(unsigned long wait_timeout) { m_wait_timeout = wait_timeout; } /* Calculates a timeout that is m_wait_timeout after start_arg and saves it in out. If start_arg is NULL, the timeout is m_wait_timeout after the current system time. */ void create_timeout(struct timespec *out, struct timespec *start_arg); /* Blocks the calling thread until the ack_receiver either receives ACKs for all transactions awaiting ACKs, or times out (from rpl_semi_sync_master_timeout). If info_msg is provided, it will be output via sql_print_information when there are transactions awaiting ACKs; info_msg is not output if there are no transasctions to await. */ void await_all_slave_replies(const char *msg); /*set the ACK point, after binlog sync or after transaction commit*/ void set_wait_point(unsigned long ack_point) { m_wait_point = ack_point; } ulong wait_point() //no cover line { return m_wait_point; //no cover line } /* Initialize this class after MySQL parameters are initialized. this * function should be called once at bootstrap time. */ int init_object(); /* Enable the object to enable semi-sync replication inside the master. */ int enable_master(); /* Disable the object to disable semi-sync replication inside the master. */ void disable_master(); /* Add a semi-sync replication slave */ void add_slave(); /* Remove a semi-sync replication slave */ void remove_slave(); /* It parses a reply packet and call report_reply_binlog to handle it. */ int report_reply_packet(uint32 server_id, const uchar *packet, ulong packet_len); /* In semi-sync replication, reports up to which binlog position we have * received replies from the slave indicating that it already get the events. * * Input: * server_id - (IN) master server id number * log_file_name - (IN) binlog file name * end_offset - (IN) the offset in the binlog file up to which we have * the replies from the slave * * Return: * 0: success; non-zero: error */ int report_reply_binlog(uint32 server_id, const char* log_file_name, my_off_t end_offset); /* Commit a transaction in the final step. This function is called from * InnoDB before returning from the low commit. If semi-sync is switch on, * the function will wait to see whether binlog-dump thread get the reply for * the events of the transaction. Remember that this is not a direct wait, * instead, it waits to see whether the binlog-dump thread has reached the * point. If the wait times out, semi-sync status will be switched off and * all other transaction would not wait either. * * Input: (the transaction events' ending binlog position) * trx_wait_binlog_name - (IN) ending position's file name * trx_wait_binlog_pos - (IN) ending position's file offset * * Return: * 0: success; non-zero: error */ int commit_trx(const char* trx_wait_binlog_name, my_off_t trx_wait_binlog_pos); /*Wait for ACK after writing/sync binlog to file*/ int wait_after_sync(const char* log_file, my_off_t log_pos); /*Wait for ACK after commting the transaction*/ int wait_after_commit(THD* thd, bool all); /*Wait after the transaction is rollback*/ int wait_after_rollback(THD *thd, bool all); /* Store the current binlog position in m_active_tranxs. This position should * be acked by slave. * * Inputs: * trans_thd Thread of the transaction which is executing the * transaction. * waiter_thd Thread that will wait for the ACK from the replica, * which depends on the semi-sync wait point. If AFTER_SYNC, * and also using binlog group commit, this will be the leader * thread of the binlog commit. Otherwise, it is the thread that * is executing the transaction, i.e. the same as trans_thd. * log_file Name of the binlog file that the transaction is written into * log_pos Offset within the binlog file that the transaction is written * at */ int report_binlog_update(THD *trans_thd, THD *waiter_thd, const char *log_file, my_off_t log_pos); int dump_start(THD* thd, const char *log_file, my_off_t log_pos); void dump_end(THD* thd); /* Reserve space in the replication event packet header: * . slave semi-sync off: 1 byte - (0) * . slave semi-sync on: 3 byte - (0, 0xef, 0/1} * * Input: * packet - (IN) the header buffer * * Return: * size of the bytes reserved for header */ int reserve_sync_header(String* packet); /* Update the sync bit in the packet header to indicate to the slave whether * the master will wait for the reply of the event. If semi-sync is switched * off and we detect that the slave is catching up, we switch semi-sync on. * * Input: * THD - (IN) current dump thread * packet - (IN) the packet containing the replication event * log_file_name - (IN) the event ending position's file name * log_file_pos - (IN) the event ending position's file offset * need_sync - (IN) identify if flush_net is needed to call. * server_id - (IN) master server id number * * Return: * 0: success; non-zero: error */ int update_sync_header(THD* thd, unsigned char *packet, const char *log_file_name, my_off_t log_file_pos, bool* need_sync); /* Called when a transaction finished writing binlog events. * . update the 'largest' transactions' binlog event position * . insert the ending position in the active transaction list if * semi-sync is on * * Input: (the transaction events' ending binlog position) * THD - (IN) thread that will wait for an ACK. This can be the * binlog leader thread when using wait_point * AFTER_SYNC with binlog group commit. In all other * cases, this is the user thread executing the * transaction. * log_file_name - (IN) transaction ending position's file name * log_file_pos - (IN) transaction ending position's file offset * * Return: * 0: success; non-zero: error */ int write_tranx_in_binlog(THD *thd, const char *log_file_name, my_off_t log_file_pos); /* Read the slave's reply so that we know how much progress the slave makes * on receive replication events. */ int flush_net(THD* thd, const char *event_buf); /* Export internal statistics for semi-sync replication. */ void set_export_stats(); /* 'reset master' command is issued from the user and semi-sync need to * go off for that. */ int after_reset_master(); /*called before reset master*/ int before_reset_master(); mysql_mutex_t LOCK_rpl_semi_sync_master_enabled; }; enum rpl_semi_sync_master_wait_point_t { SEMI_SYNC_MASTER_WAIT_POINT_AFTER_BINLOG_SYNC, SEMI_SYNC_MASTER_WAIT_POINT_AFTER_STORAGE_COMMIT, }; extern Repl_semi_sync_master repl_semisync_master; extern Ack_receiver ack_receiver; /* System and status variables for the master component */ extern my_bool rpl_semi_sync_master_enabled; extern my_bool rpl_semi_sync_master_status; extern ulong rpl_semi_sync_master_wait_point; extern ulong rpl_semi_sync_master_clients; extern ulong rpl_semi_sync_master_timeout; extern ulong rpl_semi_sync_master_trace_level; extern ulong rpl_semi_sync_master_yes_transactions; extern ulong rpl_semi_sync_master_no_transactions; extern ulong rpl_semi_sync_master_off_times; extern ulong rpl_semi_sync_master_wait_timeouts; extern ulong rpl_semi_sync_master_timefunc_fails; extern ulong rpl_semi_sync_master_num_timeouts; extern ulong rpl_semi_sync_master_wait_sessions; extern ulong rpl_semi_sync_master_wait_pos_backtraverse; extern ulong rpl_semi_sync_master_avg_trx_wait_time; extern ulong rpl_semi_sync_master_avg_net_wait_time; extern ulonglong rpl_semi_sync_master_net_wait_num; extern ulonglong rpl_semi_sync_master_trx_wait_num; extern ulonglong rpl_semi_sync_master_net_wait_time; extern ulonglong rpl_semi_sync_master_trx_wait_time; extern unsigned long long rpl_semi_sync_master_request_ack; extern unsigned long long rpl_semi_sync_master_get_ack; /* This indicates whether we should keep waiting if no semi-sync slave is available. 0 : stop waiting if detected no avaialable semi-sync slave. 1 (default) : keep waiting until timeout even no available semi-sync slave. */ extern char rpl_semi_sync_master_wait_no_slave; extern Repl_semi_sync_master repl_semisync_master; extern PSI_stage_info stage_waiting_for_semi_sync_ack_from_slave; extern PSI_stage_info stage_reading_semi_sync_ack; extern PSI_stage_info stage_waiting_for_semi_sync_slave; void semi_sync_master_deinit(); #endif /* SEMISYNC_MASTER_H */
SILENT KILLER Tool