Linux ns8.secondary29.go.th 2.6.32-754.28.1.el6.x86_64 #1 SMP Wed Mar 11 18:38:45 UTC 2020 x86_64
Apache/2.2.15 (CentOS)
: 122.154.134.11 | : 122.154.134.9
Cant Read [ /etc/named.conf ]
5.6.40
apache
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
share /
mysql-test /
include /
[ HOME SHELL ]
Name
Size
Permission
Action
add_anonymous_users.inc
187
B
-rw-r--r--
analyze-sync_with_master.test
283
B
-rw-r--r--
analyze-timeout.test
25
B
-rw-r--r--
assert.inc
5.62
KB
-rw-r--r--
begin_include_file.inc
2.61
KB
-rw-r--r--
big_test.inc
107
B
-rw-r--r--
binlog_inject_error.inc
457
B
-rw-r--r--
check-testcase.test
533
B
-rw-r--r--
check-warnings.test
1.55
KB
-rw-r--r--
check_concurrent_insert.inc
2.66
KB
-rw-r--r--
check_events_off.inc
1.82
KB
-rw-r--r--
check_no_concurrent_insert.inc
2.04
KB
-rw-r--r--
check_no_row_lock.inc
1.76
KB
-rw-r--r--
check_shared_row_lock.inc
1.39
KB
-rw-r--r--
check_slave_is_running.inc
651
B
-rw-r--r--
check_slave_no_error.inc
655
B
-rw-r--r--
check_slave_param.inc
1.02
KB
-rw-r--r--
check_var_limit.inc
394
B
-rw-r--r--
cleanup_fake_relay_log.inc
669
B
-rw-r--r--
commit.inc
20.54
KB
-rw-r--r--
common-tests.inc
115.9
KB
-rw-r--r--
concurrent.inc
25.01
KB
-rw-r--r--
connect2.inc
977
B
-rw-r--r--
count_sessions.inc
382
B
-rw-r--r--
ctype_8bit.inc
2.85
KB
-rw-r--r--
ctype_common.inc
2.82
KB
-rw-r--r--
ctype_filesort.inc
377
B
-rw-r--r--
ctype_german.inc
965
B
-rw-r--r--
ctype_innodb_like.inc
665
B
-rw-r--r--
ctype_like_escape.inc
592
B
-rw-r--r--
ctype_like_range_f1f2.inc
835
B
-rw-r--r--
ctype_regex.inc
1.03
KB
-rw-r--r--
ddl_i18n.check_events.inc
864
B
-rw-r--r--
ddl_i18n.check_sp.inc
1.48
KB
-rw-r--r--
ddl_i18n.check_triggers.inc
1.55
KB
-rw-r--r--
ddl_i18n.check_views.inc
544
B
-rw-r--r--
deadlock.inc
3.57
KB
-rw-r--r--
default_my.cnf
1.25
KB
-rw-r--r--
default_mysqld.cnf
1.19
KB
-rw-r--r--
default_ndbd.cnf
836
B
-rw-r--r--
delete_anonymous_users.inc
207
B
-rw-r--r--
diff_tables.inc
6.49
KB
-rw-r--r--
end_include_file.inc
2.42
KB
-rw-r--r--
endspace.inc
338
B
-rw-r--r--
file_does_not_exist.inc
340
B
-rw-r--r--
force_restart.inc
335
B
-rw-r--r--
force_restart_if_skipped.inc
346
B
-rw-r--r--
get_relay_log_pos.inc
2.77
KB
-rw-r--r--
gis_generic.inc
12.67
KB
-rw-r--r--
gis_keys.inc
1.93
KB
-rw-r--r--
grant_cache.inc
7.53
KB
-rw-r--r--
handler.inc
17.11
KB
-rw-r--r--
have_32bit.inc
400
B
-rw-r--r--
have_64bit.inc
357
B
-rw-r--r--
have_archive.inc
180
B
-rw-r--r--
have_big5.inc
107
B
-rw-r--r--
have_binlog_format_mixed.inc
155
B
-rw-r--r--
have_binlog_format_mixed_or_ro...
181
B
-rw-r--r--
have_binlog_format_mixed_or_st...
193
B
-rw-r--r--
have_binlog_format_row.inc
153
B
-rw-r--r--
have_binlog_format_row_or_stat...
192
B
-rw-r--r--
have_binlog_format_statement.i...
159
B
-rw-r--r--
have_blackhole.inc
173
B
-rw-r--r--
have_case_insensitive_file_sys...
134
B
-rw-r--r--
have_case_insensitive_fs.inc
125
B
-rw-r--r--
have_case_sensitive_file_syste...
132
B
-rw-r--r--
have_community_features.inc
130
B
-rw-r--r--
have_compress.inc
109
B
-rw-r--r--
have_cp1250_ch.inc
112
B
-rw-r--r--
have_cp1251.inc
115
B
-rw-r--r--
have_cp866.inc
113
B
-rw-r--r--
have_cp932.inc
110
B
-rw-r--r--
have_crypt.inc
103
B
-rw-r--r--
have_csv.inc
174
B
-rw-r--r--
have_dbi_dbd-mysql.inc
3.1
KB
-rw-r--r--
have_debug.inc
113
B
-rw-r--r--
have_debug_sync.inc
196
B
-rw-r--r--
have_dynamic_loading.inc
169
B
-rw-r--r--
have_eucjpms.inc
114
B
-rw-r--r--
have_euckr.inc
108
B
-rw-r--r--
have_example_plugin.inc
319
B
-rw-r--r--
have_exampledb.inc
178
B
-rw-r--r--
have_federated_plugin.inc
151
B
-rw-r--r--
have_gb2312.inc
111
B
-rw-r--r--
have_gbk.inc
105
B
-rw-r--r--
have_geometry.inc
110
B
-rw-r--r--
have_innodb.inc
163
B
-rw-r--r--
have_innodb_change_buffering.i...
200
B
-rw-r--r--
have_innodb_plugin.inc
260
B
-rw-r--r--
have_koi8r.inc
113
B
-rw-r--r--
have_latin2_ch.inc
112
B
-rw-r--r--
have_local_infile.inc
111
B
-rw-r--r--
have_log_bin.inc
238
B
-rw-r--r--
have_lowercase0.inc
116
B
-rw-r--r--
have_lowercase1.inc
116
B
-rw-r--r--
have_lowercase2.inc
116
B
-rw-r--r--
have_multi_ndb.inc
1.58
KB
-rw-r--r--
have_mysql_upgrade.inc
134
B
-rw-r--r--
have_ndb.inc
518
B
-rw-r--r--
have_ndb_extra.inc
65
B
-rw-r--r--
have_ndbapi_examples.inc
148
B
-rw-r--r--
have_not_innodb_plugin.inc
185
B
-rw-r--r--
have_outfile.inc
171
B
-rw-r--r--
have_partition.inc
114
B
-rw-r--r--
have_query_cache.inc
115
B
-rw-r--r--
have_simple_parser.inc
315
B
-rw-r--r--
have_sjis.inc
108
B
-rw-r--r--
have_ssl.inc
99
B
-rw-r--r--
have_symlink.inc
391
B
-rw-r--r--
have_tis620.inc
108
B
-rw-r--r--
have_ucs2.inc
107
B
-rw-r--r--
have_udf.inc
319
B
-rw-r--r--
have_ujis.inc
108
B
-rw-r--r--
have_utf8.inc
111
B
-rw-r--r--
have_valgrind.inc
182
B
-rw-r--r--
index_merge1.inc
18.08
KB
-rw-r--r--
index_merge2.inc
11.79
KB
-rw-r--r--
index_merge_2sweeps.inc
1.52
KB
-rw-r--r--
index_merge_ror.inc
9.73
KB
-rw-r--r--
index_merge_ror_cpk.inc
4.32
KB
-rw-r--r--
innodb_rollback_on_timeout.inc
931
B
-rw-r--r--
innodb_trx_weight.inc
861
B
-rw-r--r--
io_thd_fault_injection.inc
598
B
-rw-r--r--
is_embedded.inc
126
B
-rw-r--r--
kill_query.inc
1.73
KB
-rw-r--r--
kill_query_and_diff_master_sla...
1.05
KB
-rw-r--r--
linux_sys_vars.inc
803
B
-rw-r--r--
load_sysvars.inc
442
B
-rw-r--r--
loaddata_autocom.inc
889
B
-rw-r--r--
master-slave.inc
1.68
KB
-rw-r--r--
min_null_cond.inc
1.55
KB
-rw-r--r--
mix1.inc
44.9
KB
-rw-r--r--
mix2.inc
76.35
KB
-rw-r--r--
mix2_ucs2.inc
11.52
KB
-rw-r--r--
mtr_check.sql
2.86
KB
-rw-r--r--
mtr_warnings.sql
6.89
KB
-rw-r--r--
mysqlbinlog_have_debug.inc
989
B
-rw-r--r--
mysqldump.inc
2.02
KB
-rw-r--r--
mysqlhotcopy.inc
4.75
KB
-rw-r--r--
mysqltest-x.inc
41
B
-rw-r--r--
ndb_backup.inc
1.7
KB
-rw-r--r--
ndb_backup_print.inc
521
B
-rw-r--r--
ndb_default_cluster.inc
119
B
-rw-r--r--
ndb_master-slave.inc
398
B
-rw-r--r--
ndb_master-slave_2ch.inc
1.76
KB
-rw-r--r--
ndb_not_readonly.inc
844
B
-rw-r--r--
ndb_restore_master.inc
640
B
-rw-r--r--
ndb_restore_slave_eoption.inc
657
B
-rw-r--r--
ndb_setup_slave.inc
805
B
-rw-r--r--
ndb_wait_connected.inc
470
B
-rw-r--r--
no_running_event_scheduler.inc
1.51
KB
-rw-r--r--
no_running_events.inc
1.72
KB
-rw-r--r--
no_valgrind_without_big.inc
364
B
-rw-r--r--
not_as_root.inc
45
B
-rw-r--r--
not_binlog_format_row.inc
92
B
-rw-r--r--
not_blackhole.inc
173
B
-rw-r--r--
not_crashrep.inc
594
B
-rw-r--r--
not_embedded.inc
127
B
-rw-r--r--
not_ndb.inc
183
B
-rw-r--r--
not_ndb_default.inc
161
B
-rw-r--r--
not_openssl.inc
106
B
-rw-r--r--
not_valgrind.inc
118
B
-rw-r--r--
not_windows.inc
165
B
-rw-r--r--
not_windows_embedded.inc
305
B
-rw-r--r--
one_thread_per_connection.inc
111
B
-rw-r--r--
parser_bug21114.inc
1.32
KB
-rw-r--r--
partition_date_range.inc
2.63
KB
-rw-r--r--
ps_conv.inc
47.8
KB
-rw-r--r--
ps_create.inc
1.42
KB
-rw-r--r--
ps_ddl_1.inc
468
B
-rw-r--r--
ps_modify.inc
10.22
KB
-rw-r--r--
ps_modify1.inc
3.16
KB
-rw-r--r--
ps_query.inc
24.49
KB
-rw-r--r--
ps_renew.inc
1.48
KB
-rw-r--r--
query_cache.inc
5.71
KB
-rw-r--r--
query_cache_sql_prepare.inc
13.1
KB
-rw-r--r--
read_many_rows.inc
4.28
KB
-rw-r--r--
report-features.test
186
B
-rw-r--r--
restart_mysqld.inc
1.02
KB
-rw-r--r--
restart_slave_sql.inc
1001
B
-rw-r--r--
rowid_order.inc
2.97
KB
-rw-r--r--
rpl_change_topology.inc
9.72
KB
-rw-r--r--
rpl_connect.inc
1.54
KB
-rw-r--r--
rpl_connection.inc
1.27
KB
-rw-r--r--
rpl_connection_master.inc
68
B
-rw-r--r--
rpl_connection_slave.inc
67
B
-rw-r--r--
rpl_connection_slave1.inc
68
B
-rw-r--r--
rpl_diff.inc
3.2
KB
-rw-r--r--
rpl_end.inc
2.76
KB
-rw-r--r--
rpl_events.inc
5.83
KB
-rw-r--r--
rpl_for_each_slave.inc
952
B
-rw-r--r--
rpl_generate_sync_chain.inc
5.51
KB
-rw-r--r--
rpl_init.inc
7.08
KB
-rw-r--r--
rpl_loaddata_charset.inc
781
B
-rw-r--r--
rpl_multi_engine.inc
729
B
-rw-r--r--
rpl_multi_engine2.inc
2.56
KB
-rw-r--r--
rpl_multi_engine3.inc
2.21
KB
-rw-r--r--
rpl_reconnect.inc
3.16
KB
-rw-r--r--
rpl_reset.inc
1.96
KB
-rw-r--r--
rpl_restart_server.inc
1.04
KB
-rw-r--r--
rpl_start_server.inc
1.53
KB
-rw-r--r--
rpl_start_slaves.inc
843
B
-rw-r--r--
rpl_stmt_seq.inc
7.63
KB
-rw-r--r--
rpl_stop_server.inc
1.92
KB
-rw-r--r--
rpl_stop_slaves.inc
780
B
-rw-r--r--
rpl_sync.inc
4.63
KB
-rw-r--r--
rpl_udf.inc
5.62
KB
-rw-r--r--
running_event_scheduler.inc
1.76
KB
-rw-r--r--
safe_set_to_maybe_ro_var.inc
707
B
-rw-r--r--
save_master_pos.inc
864
B
-rw-r--r--
search_pattern_in_file.inc
2.57
KB
-rw-r--r--
select_ndb_apply_status.inc
505
B
-rw-r--r--
set_binlog_format_mixed.sql
783
B
-rw-r--r--
set_binlog_format_row.sql
779
B
-rw-r--r--
set_binlog_format_statement.sq...
791
B
-rw-r--r--
setup_fake_relay_log.inc
2.92
KB
-rw-r--r--
show_binary_logs.inc
91
B
-rw-r--r--
show_binlog_events.inc
1.49
KB
-rw-r--r--
show_binlog_events2.inc
218
B
-rw-r--r--
show_binlog_using_logname.inc
512
B
-rw-r--r--
show_master_logs.inc
106
B
-rw-r--r--
show_master_status.inc
133
B
-rw-r--r--
show_msg.inc
747
B
-rw-r--r--
show_msg80.inc
4.46
KB
-rw-r--r--
show_rpl_debug_info.inc
2.71
KB
-rw-r--r--
show_slave_status.inc
2.72
KB
-rw-r--r--
sp-vars.inc
3.29
KB
-rw-r--r--
start_slave.inc
758
B
-rw-r--r--
stop_slave.inc
2.32
KB
-rw-r--r--
stop_slave_io.inc
934
B
-rw-r--r--
stop_slave_sql.inc
843
B
-rw-r--r--
strict_autoinc.inc
619
B
-rw-r--r--
sync_io_with_master.inc
1.13
KB
-rw-r--r--
sync_slave_io_with_master.inc
1.3
KB
-rw-r--r--
sync_slave_sql_with_io.inc
1.47
KB
-rw-r--r--
system_db_struct.inc
477
B
-rw-r--r--
test_fieldsize.inc
698
B
-rw-r--r--
test_outfile.inc
76
B
-rw-r--r--
testdb_only.inc
1.39
KB
-rw-r--r--
tpcb.inc
4.37
KB
-rw-r--r--
tpcb_disk_data.inc
4.76
KB
-rw-r--r--
truncate_file.inc
308
B
-rw-r--r--
unsafe_binlog.inc
6.73
KB
-rw-r--r--
uses_vardir.inc
385
B
-rw-r--r--
varchar.inc
7.12
KB
-rw-r--r--
view_alias.inc
1.05
KB
-rw-r--r--
wait_condition.inc
1.23
KB
-rw-r--r--
wait_condition_sp.inc
1.27
KB
-rw-r--r--
wait_for_binlog_event.inc
827
B
-rw-r--r--
wait_for_query_to_fail.inc
366
B
-rw-r--r--
wait_for_query_to_succeed.inc
371
B
-rw-r--r--
wait_for_slave_io_error.inc
3.01
KB
-rw-r--r--
wait_for_slave_io_to_start.inc
851
B
-rw-r--r--
wait_for_slave_io_to_stop.inc
967
B
-rw-r--r--
wait_for_slave_param.inc
3.8
KB
-rw-r--r--
wait_for_slave_sql_error.inc
2.41
KB
-rw-r--r--
wait_for_slave_sql_error_and_s...
1.67
KB
-rw-r--r--
wait_for_slave_sql_to_start.in...
905
B
-rw-r--r--
wait_for_slave_sql_to_stop.inc
975
B
-rw-r--r--
wait_for_slave_to_start.inc
678
B
-rw-r--r--
wait_for_slave_to_stop.inc
946
B
-rw-r--r--
wait_for_status_var.inc
2.2
KB
-rw-r--r--
wait_show_condition.inc
2.29
KB
-rw-r--r--
wait_until_connected_again.inc
546
B
-rw-r--r--
wait_until_count_sessions.inc
4.12
KB
-rw-r--r--
wait_until_disconnected.inc
382
B
-rw-r--r--
wait_until_rows_count.inc
409
B
-rw-r--r--
windows.inc
118
B
-rw-r--r--
windows_sys_vars.inc
802
B
-rw-r--r--
write_var_to_file.inc
1.7
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : concurrent.inc
# include/concurrent.inc # # Concurrent tests for transactional storage engines, mainly in UPDATE's # Bug#3300 # Designed and tested by Sinisa Milivojevic, sinisa@mysql.com # # These variables have to be set before sourcing this script: # TRANSACTION ISOLATION LEVEL REPEATABLE READ # innodb_locks_unsafe_for_binlog 0 (default) or 1 (by # --innodb_locks_unsafe_for_binlog) # $engine_type storage engine to be tested # # Last update: # 2009-02-13 HH "Release_lock("hello")" is now also successful when delivering NULL, # replaced two sleeps by wait_condition. The last two "sleep 1" have not been # replaced as all tried wait conditions leaded to nondeterministic results, especially # to succeeding concurrent updates. To replace the sleeps there should be some time # planned (or internal knowledge of the server may help). # 2006-08-02 ML test refactored # old name was t/innodb_concurrent.test # main code went into include/concurrent.inc # 2008-06-03 KP test refactored; removed name locks, added comments. # renamed wrapper t/concurrent_innodb.test -> # t/concurrent_innodb_unsafelog.test # new wrapper t/concurrent_innodb_safelog.test # connection default; # # Show prerequisites for this test. # SELECT @@global.tx_isolation; SELECT @@global.innodb_locks_unsafe_for_binlog; # # When innodb_locks_unsafe_for_binlog is not set (zero), which is the # default, InnoDB takes "next-key locks"/"gap locks". This means it # locks the gap before the keys that it accessed to find the rows to # use for a statement. In this case we have to expect some more lock # wait timeouts in the tests below as if innodb_locks_unsafe_for_binlog # is set (non-zero). In the latter case no "next-key locks"/"gap locks" # are taken and locks on keys that do not match the WHERE conditon are # released. Hence less lock collisions occur. # We use the variable $keep_locks to set the expectations for # lock wait timeouts accordingly. # let $keep_locks= `SELECT NOT @@global.innodb_locks_unsafe_for_binlog`; --echo # keep_locks == $keep_locks # # Set up privileges and remove user level locks, if exist. # GRANT USAGE ON test.* TO mysqltest@localhost; # # Preparatory cleanup. # --disable_warnings drop table if exists t1; --enable_warnings --echo --echo ** --echo ** two UPDATE's running and both changing distinct result sets --echo ** --echo ** connection thread1 connect (thread1, localhost, mysqltest,,); connection thread1; --echo ** Set up table eval SET SESSION STORAGE_ENGINE = $engine_type; create table t1(eta int(11) not null, tipo int(11), c varchar(255)); insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc"); insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd"); insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"); insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff"); insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg"); insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"); insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"); insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"); insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); --echo ** Get user level lock (ULL) for thread 1 select get_lock("hello",10); --echo ** connection thread2 connect (thread2, localhost, mysqltest,,); connection thread2; --echo ** Start transaction for thread 2 begin; --echo ** Update will cause a table scan and a new ULL will --echo ** be created and blocked on the first row where tipo=11. send update t1 set eta=1+get_lock("hello",10)*0 where tipo=11; --echo ** connection thread1 connection thread1; let $wait_condition= select count(*)= 1 from information_schema.processlist where state= 'User lock'; --source include/wait_condition.inc --echo ** Start new transaction for thread 1 begin; --echo ** Update on t1 will cause a table scan which will be blocked because --echo ** the previously initiated table scan applied exclusive key locks on --echo ** all primary keys. --echo ** Not so if innodb_locks_unsafe_for_binlog is set. The locks that --echo ** do not match the WHERE condition are released. if ($keep_locks) { --error ER_LOCK_WAIT_TIMEOUT update t1 set eta=2 where tipo=22; } if (!$keep_locks) { update t1 set eta=2 where tipo=22; } --echo ** Release user level name lock from thread 1. This will cause the ULL --echo ** on thread 2 to end its wait. # Due to Bug#32782 User lock hash fails to find lock, which probably also cause Bug#39484 (main.concurrent_innodb_safelog fails sporadically) the success of the following # is also guaranteed for NULL. Replaced SELECT by DO (no result). DO release_lock("hello"); --echo ** Table is now updated with a new eta on tipo=22 for thread 1. select * from t1; --echo ** connection thread2 connection thread2; --echo ** Release the lock and collect result from update on thread 2 reap; # Due to Bug#32782 User lock hash fails to find lock, which probably also cause Bug#39484 (main.concurrent_innodb_safelog fails sporadically) the success of the following # is also guaranteed for NULL. Replaced SELECT by DO (no result). DO release_lock("hello"); --echo ** Table should have eta updates where tipo=11 but updates made by --echo ** thread 1 shouldn't be visible yet. select * from t1; --echo ** Sending commit on thread 2. commit; --echo ** connection thread1 connection thread1; --echo ** Make sure table reads didn't change yet on thread 1. select * from t1; --echo ** And send final commit on thread 1. commit; --echo ** Table should now be updated by both updates in the order of --echo ** thread 1,2. select * from t1; --echo ** connection thread2 connection thread2; --echo ** Make sure the output is similar for t1. select * from t1; --echo ** connection thread1 connection thread1; select * from t1; --echo ** connection default connection default; drop table t1; --echo --echo ** --echo ** two UPDATE's running and one changing result set --echo ** --echo ** connection thread1 #connect (thread1, localhost, mysqltest,,); connection thread1; --echo ** Set up table eval SET SESSION STORAGE_ENGINE = $engine_type; create table t1(eta int(11) not null, tipo int(11), c varchar(255)); insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc"); insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd"); insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"); insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff"); insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg"); insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"); insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"); insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"); insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); --echo ** Get ULL "hello" on thread 1 select get_lock("hello",10); --echo ** connection thread2 #connect (thread2, localhost, mysqltest,,); connection thread2; --echo ** Start transaction on thread 2 begin; --echo ** Update will cause a table scan. --echo ** This will cause a hang on the first row where tipo=1 until the --echo ** blocking ULL is released. send update t1 set eta=1+get_lock("hello",10)*0 where tipo=1; --echo ** connection thread1 connection thread1; let $wait_condition= select count(*)= 1 from information_schema.processlist where state= 'User lock'; --source include/wait_condition.inc --echo ** Start transaction on thread 1 begin; --echo ** Update on t1 will cause a table scan which will be blocked because --echo ** the previously initiated table scan applied exclusive key locks on --echo ** all primary keys. --echo ** Not so if innodb_locks_unsafe_for_binlog is set. The locks that --echo ** do not match the WHERE condition are released. if ($keep_locks) { --error ER_LOCK_WAIT_TIMEOUT update t1 set tipo=1 where tipo=2; } if (!$keep_locks) { update t1 set tipo=1 where tipo=2; } --echo ** Release ULL. This will release the next waiting ULL on thread 2. # Due to Bug#32782 User lock hash fails to find lock, which probably also cause Bug#39484 (main.concurrent_innodb_safelog fails sporadically)the success of the following # is also guaranteed for NULL. Replaced SELECT by DO (no result). DO release_lock("hello"); --echo ** The table should still be updated with updates for thread 1 only: select * from t1; --echo ** connection thread2 connection thread2; --echo ** Release the lock and collect result from thread 2: reap; # Due to Bug#32782 User lock hash fails to find lock, which probably also cause Bug#39484 (main.concurrent_innodb_safelog fails sporadically) the success of the following # is also guaranteed for NULL. Replaced SELECT by DO (no result). DO release_lock("hello"); --echo ** Seen from thread 2 the table should have been updated on four --echo ** places. select * from t1; commit; --echo ** connection thread1 connection thread1; --echo ** Thread 2 has committed but the result should remain the same for --echo ** thread 1 (updated on three places): select * from t1; commit; --echo ** After a commit the table should be merged with the previous --echo ** commit. --echo ** This select should show both updates: select * from t1; --echo ** connection thread2 connection thread2; select * from t1; --echo ** connection thread1 connection thread1; select * from t1; --echo ** connection default connection default; drop table t1; --echo --echo ** --echo ** One UPDATE and one INSERT .... Monty's test --echo ** --echo ** connection thread1 #connect (thread1, localhost, mysqltest,,); connection thread1; --echo ** Set up table eval SET SESSION STORAGE_ENGINE = $engine_type; create table t1 (a int not null, b int not null); insert into t1 values (1,1),(2,1),(3,1),(4,1); --echo ** Create ULL 'hello2' select get_lock("hello2",10); --echo ** connection thread2 #connect (thread2, localhost, mysqltest,,); connection thread2; --echo ** Begin a new transaction on thread 2 begin; --echo ** Update will create a table scan which creates a ULL where a=2; --echo ** this will hang waiting on thread 1. send update t1 set b=10+get_lock(concat("hello",a),10)*0 where a=2; --echo ** connection thread1 connection thread1; let $wait_condition= select count(*)= 1 from information_schema.processlist where state= 'User lock'; --source include/wait_condition.inc --echo ** Insert new values to t1 from thread 1; this created an implicit --echo ** commit since there are no on-going transactions. insert into t1 values (1,1); --echo ** Release the ULL (thread 2 updates will finish). # Due to Bug#32782 User lock hash fails to find lock, which probably also cause Bug#39484 (main.concurrent_innodb_safelog fails sporadically) the success of the following # is also guaranteed for NULL. Replaced SELECT by DO (no result). DO release_lock("hello2"); --echo ** ..but thread 1 will still see t1 as if nothing has happend: select * from t1; --echo ** connection thread2 connection thread2; --echo ** Collect results from thread 2 and release the lock. reap; # Due to Bug#32782 User lock hash fails to find lock, which probably also cause Bug#39484 (main.concurrent_innodb_safelog fails sporadically) the success of the following # is also guaranteed for NULL. Replaced SELECT by DO (no result). DO release_lock("hello2"); --echo ** The table should look like the original+updates for thread 2, --echo ** and consist of new rows: select * from t1; --echo ** Commit changes from thread 2 commit; --echo ** connection default connection default; drop table t1; --echo --echo ** --echo ** one UPDATE changing result set and SELECT ... FOR UPDATE --echo ** --echo ** connection thread1 #connect (thread1, localhost, mysqltest,,); connection thread1; --echo ** Set up table eval SET SESSION STORAGE_ENGINE = $engine_type; create table t1(eta int(11) not null, tipo int(11), c varchar(255)); insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc"); insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd"); insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"); insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff"); insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg"); insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"); insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"); insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"); insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); --echo ** connection thread2 #connect (thread2, localhost, mysqltest,,); connection thread2; --echo ** Begin a new transaction on thread 2 begin; --echo ** Select a range for update. select * from t1 where tipo=2 FOR UPDATE; --echo ** connection thread1 connection thread1; --echo ** Begin a new transaction on thread 1 begin; --echo ** Update the same range which is marked for update on thread 2; this --echo ** will hang because of row locks. --error ER_LOCK_WAIT_TIMEOUT update t1 set tipo=1 where tipo=2; --echo ** After the update the table will be unmodified because the previous --echo ** transaction failed and was rolled back. select * from t1; --echo ** connection thread2 connection thread2; --echo ** The table should look unmodified from thread 2. select * from t1; --echo ** Sending a commit should release the row locks and enable --echo ** thread 1 to complete the transaction. commit; --echo ** connection thread1 connection thread1; --echo ** Commit on thread 1. commit; --echo ** connection thread2 connection thread2; --echo ** The table should not have been changed. select * from t1; --echo ** connection thread1 connection thread1; --echo ** Even on thread 1: select * from t1; --echo ** connection default connection default; drop table t1; --echo --echo ** --echo ** one UPDATE not changing result set and SELECT ... FOR UPDATE --echo ** --echo ** connection thread1 #connect (thread1, localhost, mysqltest,,); connection thread1; --echo ** Set up table eval SET SESSION STORAGE_ENGINE = $engine_type; create table t1(eta int(11) not null, tipo int(11), c varchar(255)); insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc"); insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd"); insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"); insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff"); insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg"); insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"); insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"); insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"); insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); --echo ** connection thread2 #connect (thread2, localhost, mysqltest,,); connection thread2; --echo ** Starting new transaction on thread 2. begin; --echo ** Starting SELECT .. FOR UPDATE select * from t1 where tipo=2 FOR UPDATE; --echo ** connection thread1 connection thread1; --echo --echo ** Starting new transaction on thread 1 begin; --echo ** Updating single row using a table scan. This will time out --echo ** because of ongoing transaction on thread 1 holding lock on --echo ** all primary keys in the scan. --echo ** Not so if innodb_locks_unsafe_for_binlog is set. The locks that --echo ** do not match the WHERE condition are released. if ($keep_locks) { --error ER_LOCK_WAIT_TIMEOUT update t1 set tipo=11 where tipo=22; } if (!$keep_locks) { update t1 set tipo=11 where tipo=22; } --echo ** After the time out the transaction is aborted; no rows should --echo ** have changed. select * from t1; --echo ** connection thread2 connection thread2; --echo ** The same thing should hold true for the transaction on --echo ** thread 2 select * from t1; send commit; --echo ** connection thread1 connection thread1; commit; --echo ** connection thread2 connection thread2; --echo ** Even after committing: reap; select * from t1; --echo ** connection thread1 connection thread1; select * from t1; --echo ** connection default connection default; drop table t1; --echo --echo ** --echo ** two SELECT ... FOR UPDATE --echo ** --echo ** connection thread1 #connect (thread1, localhost, mysqltest,,); connection thread1; --echo ** Set up table eval SET SESSION STORAGE_ENGINE = $engine_type; create table t1(eta int(11) not null, tipo int(11), c varchar(255)); insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc"); insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd"); insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"); insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff"); insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg"); insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"); insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"); insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"); insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); --echo ** connection thread2 #connect (thread2, localhost, mysqltest,,); connection thread2; --echo ** Begin a new transaction on thread 2 begin; select * from t1 where tipo=2 FOR UPDATE; --echo ** connection thread1 connection thread1; --echo ** Begin a new transaction on thread 1 begin; --echo ** Selecting a range for update by table scan will be blocked --echo ** because of on-going transaction on thread 2. --error ER_LOCK_WAIT_TIMEOUT select * from t1 where tipo=1 FOR UPDATE; --echo ** connection thread2 connection thread2; --echo ** Table will be unchanged and the select command will not be --echo ** blocked: select * from t1; --echo ** Commit transacton on thread 2. commit; --echo ** connection thread1 connection thread1; --echo ** Commit transaction on thread 1. commit; --echo ** connection thread2 connection thread2; --echo ** Make sure table isn't blocked on thread 2: select * from t1; --echo ** connection thread1 connection thread1; --echo ** Make sure table isn't blocked on thread 1: select * from t1; --echo ** connection default connection default; drop table t1; --echo --echo ** --echo ** one UPDATE changing result set and DELETE --echo ** --echo ** connection thread1 #connect (thread1, localhost, mysqltest,,); connection thread1; --echo ** Set up table eval SET SESSION STORAGE_ENGINE = $engine_type; create table t1(eta int(11) not null, tipo int(11), c varchar(255)); insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc"); insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd"); insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"); insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff"); insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg"); insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"); insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"); insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"); insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); --echo ** connection thread2 #connect (thread2, localhost, mysqltest,,); connection thread2; begin; send delete from t1 where tipo=2; # The sleep has not been replaced as all tried wait conditions leaded to sporadically # succeding update in the following thread. Also the used status variables '%lock%' and # 'innodb_deleted_rows' and infos in processlist where not sucessful. sleep 1; --echo ** connection thread1 connection thread1; begin; --error ER_LOCK_WAIT_TIMEOUT update t1 set tipo=1 where tipo=2; select * from t1; --echo ** connection thread2 connection thread2; reap; select * from t1; send commit; --echo ** connection thread1 connection thread1; commit; --echo ** connection thread2 connection thread2; reap; select * from t1; --echo ** connection thread1 connection thread1; select * from t1; --echo ** connection default connection default; drop table t1; --echo --echo ** --echo ** one UPDATE not changing result set and DELETE --echo ** --echo ** connection thread1 #connect (thread1, localhost, mysqltest,,); connection thread1; --echo ** Set up table eval SET SESSION STORAGE_ENGINE = $engine_type; create table t1(eta int(11) not null, tipo int(11), c varchar(255)); insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc"); insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd"); insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"); insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff"); insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg"); insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"); insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"); insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"); insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); --echo ** connection thread2 #connect (thread2, localhost, mysqltest,,); connection thread2; begin; send delete from t1 where tipo=2; # The sleep has not been replaced as all tried wait conditions leaded to sporadically # succeding update in the following thread. Also the used status variables '%lock%' and # 'innodb_deleted_rows' and infos in processlist where not sucessful. sleep 1; --echo ** connection thread1 connection thread1; begin; --echo ** Update on t1 will cause a table scan which will be blocked because --echo ** the previously initiated table scan applied exclusive key locks on --echo ** all primary keys. --echo ** Not so if innodb_locks_unsafe_for_binlog is set. The locks that --echo ** do not match the WHERE condition are released. if ($keep_locks) { --error ER_LOCK_WAIT_TIMEOUT update t1 set tipo=1 where tipo=22; } if (!$keep_locks) { update t1 set tipo=1 where tipo=22; } select * from t1; --echo ** connection thread2 connection thread2; reap; select * from t1; send commit; --echo ** connection thread1 connection thread1; commit; --echo ** connection thread2 connection thread2; reap; select * from t1; --echo ** connection thread1 connection thread1; select * from t1; --echo ** Cleanup connection thread1; disconnect thread1; --source include/wait_until_disconnected.inc --echo ** connection thread2 connection thread2; disconnect thread2; --source include/wait_until_disconnected.inc --echo ** connection default connection default; drop table t1; drop user mysqltest@localhost;
Close